设为首页 收藏本站 切换语言

#property link      "http://babelfish.taobao.com/" extern string comm1="只能进一个首单,只做一次循环 ...

| 发表于 2023-6-15 22:28:53 | 显示全部楼层 |复制链接
#property link      "http://babelfish.taobao.com/"
extern string comm1="只能进一个首单,只做一次循环";
extern string comm2="价位为0则直接进单";
extern int 多单1空单2=1;
extern double 价位=0;
extern bool 是否显示文字标签=true;
extern double 单量=0.1;
extern double 固定止损=20;
//extern double 止盈=20;
extern double 滑点=3;
extern string 备注="20121128 QQ 拉迪兔-无指标做单";
extern int magic=4346;
extern int 第一段加仓个数=5;
extern double 第一段加仓距离=2;
extern int 第二段加仓个数=4;
extern double 第二段加仓距离=5;
extern int 第三段加仓个数=3;
extern double 第三段加仓距离=10;

//===========================================================================
extern double 利润移动止损激活=2000;
extern double 利润移动止损回撤=300;
double 最大利润=0;

extern double 空单离场价位=0;
extern double 多单离场价位=0;

extern bool 成本保护开关=true;
extern double 获利后一次性保护激活点数=10;
extern double 获利后一次性保护点数=1;
extern bool 移动止损开关=true;
extern double 移动止损激活点数=30;
extern double 回调离场距离=10;
extern double 跳跃距离=10;


//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
   int 系数=1;
   if(Digits==3||Digits==5||(StringFind(Symbol(),"XAU",0)==0&&Digits==2)||(StringFind(Symbol(),"GOLD",0)==0&&Digits==2))系数=10;
   if(StringFind(Symbol(),"XAU",0)==0&&Digits==3)系数=100;  

   滑点*=系数;
   第一段加仓距离*=系数;
   第二段加仓距离*=系数;
   第三段加仓距离*=系数;
   固定止损*=系数;
   获利后一次性保护激活点数*=系数;
   获利后一次性保护点数*=系数;
   移动止损激活点数*=系数;
   回调离场距离*=系数;
   跳跃距离*=系数;
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
//----
  int t;
   if(价位==0)
   if(多单1空单2==1)
   {
   繁忙等待组件();
   t=OrderSend(Symbol(),OP_BUY,单量,Ask,滑点,0,0,备注,magic);
      if(OrderSelect(t,SELECT_BY_TICKET))
      {
      OrderModify(OrderTicket(),OrderClosePrice(),OrderOpenPrice()-固定止损*Point,0,0);
      报错组件("");
      多单1空单2=0;
      }
    }

   if(价位==0)
   if(多单1空单2==2)
   {
   繁忙等待组件();
   t=OrderSend(Symbol(),OP_SELL,单量,Bid,滑点,0,0,备注,magic);
      if(OrderSelect(t,SELECT_BY_TICKET))
      {
      OrderModify(OrderTicket(),OrderClosePrice(),OrderOpenPrice()+固定止损*Point,0,0);
      报错组件("");
      多单1空单2=0;
      }
    }  

   if(价位!=0)
   if(多单1空单2==1)
   {
      if(价位>Close[0])
      {
      繁忙等待组件();
      t=OrderSend(Symbol(),OP_BUYSTOP,单量,价位,滑点,价位-固定止损*Point,0,备注,magic);
         if(t>0)
         多单1空单2=0;
      }
      else
      {
      繁忙等待组件();
      t=OrderSend(Symbol(),OP_BUYLIMIT,单量,价位,滑点,价位-固定止损*Point,0,备注,magic);
         if(t>0)
         多单1空单2=0;
      }      
   }
   
   if(价位!=0)
   if(多单1空单2==2)
   {
      if(价位>Close[0])
      {
      繁忙等待组件();
      t=OrderSend(Symbol(),OP_SELLLIMIT,单量,价位,滑点,价位+固定止损*Point,0,备注,magic);
         if(t>0)
         多单1空单2=0;
      }
      else
      {
      繁忙等待组件();
      t=OrderSend(Symbol(),OP_SELLSTOP,单量,价位,滑点,价位+固定止损*Point,0,备注,magic);
         if(t>0)
         多单1空单2=0;
      }      
   }




  
   if(分项单据统计(OP_BUY,magic)+分项单据统计(OP_SELL,magic)==0)
   最大利润=0;

   double 现有利润=分类单据利润(OP_BUY,magic)+分类单据利润(OP_SELL,magic);
   if(最大利润<现有利润)
   最大利润=现有利润;
   
   if(最大利润>=利润移动止损激活)
   if(现有利润<=最大利润-利润移动止损回撤)
   {
   全部清仓(magic);
   最大利润=0;
   laber("利润回撤离场",Yellow);
   }
   
  int 点差距离=MarketInfo(Symbol(),MODE_SPREAD);



//=====================================================  
  if(分项单据统计(OP_BUY,magic)>0)
  if(分项单据统计(OP_BUY,magic)<第一段加仓个数+1)
  if(OrderSelect(findlassorder(OP_BUY,magic),SELECT_BY_TICKET))
  if(OrderClosePrice()+点差距离*Point-OrderOpenPrice()>=第一段加仓距离*Point)
  {
  laber("距离:"+DoubleToStr((OrderClosePrice()+点差距离*Point-OrderOpenPrice())/Point,0),Red);
  繁忙等待组件();
  t=OrderSend(Symbol(),OP_BUY,单量,Ask,滑点,0,0,备注,magic);
  if(OrderSelect(t,SELECT_BY_TICKET))
  //OrderModify(OrderTicket(),OrderClosePrice(),NormalizeDouble(做多指标数,Digits)-止损偏移*Point,0,0);
  OrderModify(OrderTicket(),OrderClosePrice(),OrderOpenPrice()-固定止损*Point,0,0);
  报错组件("");
  }

  if(分项单据统计(OP_BUY,magic)>0)
  if(分项单据统计(OP_BUY,magic)<第一段加仓个数+1+第二段加仓个数)
  if(OrderSelect(findlassorder(OP_BUY,magic),SELECT_BY_TICKET))
  if(OrderClosePrice()+点差距离*Point-OrderOpenPrice()>=第二段加仓距离*Point)
  {
  laber("距离:"+DoubleToStr((OrderClosePrice()+点差距离*Point-OrderOpenPrice())/Point,0),Yellow);
  繁忙等待组件();
  t=OrderSend(Symbol(),OP_BUY,单量,Ask,滑点,0,0,备注,magic);
  if(OrderSelect(t,SELECT_BY_TICKET))
  //OrderModify(OrderTicket(),OrderClosePrice(),NormalizeDouble(做多指标数,Digits)-止损偏移*Point,0,0);
  OrderModify(OrderTicket(),OrderClosePrice(),OrderOpenPrice()-固定止损*Point,0,0);
  报错组件("");
  }

  if(分项单据统计(OP_BUY,magic)>0)
  if(分项单据统计(OP_BUY,magic)<第一段加仓个数+1+第二段加仓个数+第三段加仓个数)
  if(OrderSelect(findlassorder(OP_BUY,magic),SELECT_BY_TICKET))
  if(OrderClosePrice()+点差距离*Point-OrderOpenPrice()>=第三段加仓距离*Point)
  {
  laber("距离:"+DoubleToStr((OrderClosePrice()+点差距离*Point-OrderOpenPrice())/Point,0),Blue);
  繁忙等待组件();
  t=OrderSend(Symbol(),OP_BUY,单量,Ask,滑点,0,0,备注,magic);
  if(OrderSelect(t,SELECT_BY_TICKET))
  //OrderModify(OrderTicket(),OrderClosePrice(),NormalizeDouble(做多指标数,Digits)-止损偏移*Point,0,0);
  OrderModify(OrderTicket(),OrderClosePrice(),OrderOpenPrice()-固定止损*Point,0,0);
  报错组件("");
  }  
//========================================
  if(分项单据统计(OP_SELL,magic)>0)
  if(分项单据统计(OP_SELL,magic)<第一段加仓个数+1)
  if(OrderSelect(findlassorder(OP_SELL,magic),SELECT_BY_TICKET))
  if(OrderOpenPrice()-(OrderClosePrice()-点差距离*Point)>=第一段加仓距离*Point)
  {
  laber("距离:"+DoubleToStr((OrderOpenPrice()-(OrderClosePrice()-点差距离*Point))/Point,0),Red);
  繁忙等待组件();
  t=OrderSend(Symbol(),OP_SELL,单量,Bid,滑点,0,0,备注,magic);
  if(OrderSelect(t,SELECT_BY_TICKET))
  //OrderModify(OrderTicket(),OrderClosePrice(),NormalizeDouble(做空指标数,Digits)+止损偏移*Point,0,0);
  OrderModify(OrderTicket(),OrderClosePrice(),OrderOpenPrice()+固定止损*Point,0,0);
  报错组件("");
  }

  if(分项单据统计(OP_SELL,magic)>0)
  if(分项单据统计(OP_SELL,magic)<第一段加仓个数+1+第二段加仓个数)
  if(OrderSelect(findlassorder(OP_SELL,magic),SELECT_BY_TICKET))
  if(OrderOpenPrice()-(OrderClosePrice()-点差距离*Point)>=第二段加仓距离*Point)
  {
  laber("距离:"+DoubleToStr((OrderOpenPrice()-(OrderClosePrice()-点差距离*Point))/Point,0),Yellow);
  繁忙等待组件();
  t=OrderSend(Symbol(),OP_SELL,单量,Bid,滑点,0,0,备注,magic);
  if(OrderSelect(t,SELECT_BY_TICKET))
  //OrderModify(OrderTicket(),OrderClosePrice(),NormalizeDouble(做空指标数,Digits)+止损偏移*Point,0,0);
  OrderModify(OrderTicket(),OrderClosePrice(),OrderOpenPrice()+固定止损*Point,0,0);
  报错组件("");
  }

  if(分项单据统计(OP_SELL,magic)>0)
  if(分项单据统计(OP_SELL,magic)<第一段加仓个数+1+第二段加仓个数+第三段加仓个数)
  if(OrderSelect(findlassorder(OP_SELL,magic),SELECT_BY_TICKET))
  if(OrderOpenPrice()-(OrderClosePrice()-点差距离*Point)>=第三段加仓距离*Point)
  {
  laber("距离:"+DoubleToStr((OrderOpenPrice()-(OrderClosePrice()-点差距离*Point))/Point,0),Blue);
  繁忙等待组件();
  t=OrderSend(Symbol(),OP_SELL,单量,Bid,滑点,0,0,备注,magic);
  if(OrderSelect(t,SELECT_BY_TICKET))
  //OrderModify(OrderTicket(),OrderClosePrice(),NormalizeDouble(做空指标数,Digits)+止损偏移*Point,0,0);
  OrderModify(OrderTicket(),OrderClosePrice(),OrderOpenPrice()+固定止损*Point,0,0);
  报错组件("");
  }      
//=====================================
   
价位止损组块("上",OP_BUY,多单离场价位,magic);
价位止损组块("下",OP_SELL,空单离场价位,magic);

   if(成本保护开关)
   获利后一次性止损保护(获利后一次性保护点数,获利后一次性保护激活点数,magic);


if(移动止损开关==true)
   gengzong(回调离场距离,跳跃距离,移动止损激活点数,magic);  
//----
   return(0);
  }
//+------------------------------------------------------------------+

void 价位止损组块(string 属性,int type,double 离场价位,int magic)
{
  if(离场价位!=0)
  {
   
   if(type==OP_BUY)
   if(属性=="上")
   if(Close[0]>=离场价位)
   {
   deleteorder(OP_BUY,magic);
   }

   if(type==OP_BUY)
   if(属性=="下")
   if(Close[0]<=离场价位)
   {
   deleteorder(OP_BUY,magic);
   }

   if(type==OP_SELL)
   if(属性=="上")
   if(Close[0]>=离场价位)
   {
   deleteorder(OP_SELL,magic);
   }

   if(type==OP_SELL)
   if(属性=="下")
   if(Close[0]<=离场价位)
   {
   deleteorder(OP_SELL,magic);
   }
  }
}

void 全部清仓(int a)
{
for(int i=OrdersTotal()-1;i>=0;i--)
  {
if(OrderSelect(i,SELECT_BY_POS))
if(OrderSymbol()==Symbol())
if(OrderMagicNumber()==a)
     {
if(OrderType()<2)
        {
繁忙等待组件();
        OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),滑点);
报错组件("");
        }

if(OrderType()>1)
        {
繁忙等待组件();
OrderDelete(OrderTicket());
报错组件("");
        }        
     }
   }   
}


double 分类单据利润(int a,int b)
{
double 利润=0;
for(int i=0;i<OrdersTotal();i++)
if(OrderSelect(i,SELECT_BY_POS))
if(OrderMagicNumber()==b)
if(OrderType()==a)
利润+=OrderProfit();
return(利润);
}



/*

void 批量修改止盈止损(int type,double 止盈,double 止损,int magic)
{
   if(止盈!=0)
   for(int i=0;i<OrdersTotal();i++)
   if(OrderSelect(i,SELECT_BY_POS))
   if(OrderMagicNumber()==magic)
   if(OrderTakeProfit()>NormalizeDouble(止盈,Digits)+Point||OrderTakeProfit()<NormalizeDouble(止盈,Digits)-Point)
   if(OrderType()==type)
   OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),止盈,0);

   if(止损!=0)
   for(i=0;i<OrdersTotal();i++)
   if(OrderSelect(i,SELECT_BY_POS))
   if(OrderMagicNumber()==magic)
   if(OrderStopLoss()>NormalizeDouble(止损,Digits)+Point||OrderStopLoss()<NormalizeDouble(止损,Digits)-Point)
   if(OrderType()==type)
   OrderModify(OrderTicket(),OrderOpenPrice(),止损,OrderTakeProfit(),0);
}

*/

int findlassorder(int a,int c)
{
for(int i=OrdersTotal()-1;i>=0;i--)
   {
if(OrderSelect(i,SELECT_BY_POS))
if(Symbol()==OrderSymbol())
if(OrderMagicNumber()==c)
if(OrderType()==a)
return(OrderTicket());
   }
return(-1);
}





void deleteorder(int a,int magic)
{
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS))
if(OrderSymbol()==Symbol())
if(OrderMagicNumber()==magic)
if(OrderType()==a)
{
if(OrderType()>=2)
{
繁忙等待组件();
OrderDelete(OrderTicket());
报错组件("");
}
else
{
繁忙等待组件();
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),滑点);
报错组件("");
}
}
}
}


int 分项单据统计(int a,int magic)
{
int buy=0,sell=0,buyl=0,selll=0,buys=0,sells=0;
for(int i=0;i<OrdersTotal();i++)
   {
if(OrderSelect(i,SELECT_BY_POS))
if(OrderSymbol()==Symbol())
if(OrderMagicNumber()==magic)
switch(OrderType())
      {
case OP_BUY:
buy++;
break;
case OP_SELL:
sell++;
break;
case OP_BUYLIMIT:
buyl++;
break;
case OP_BUYSTOP:
buys++;
break;
case OP_SELLSTOP:
sells++;
break;
case OP_SELLLIMIT:
selll++;
break;
      }
   }
switch(a)
   {
case OP_BUY:
return(buy);
case OP_SELL:
return(sell);
case OP_BUYLIMIT:
return(buyl);
case OP_BUYSTOP:
return(buys);
case OP_SELLLIMIT:
return(selll);
case OP_SELLSTOP:
return(sells);
   }
}

void laber(string a,color b)
{
   if(是否显示文字标签==true)
   {
   ObjectDelete("箭头"+TimeToStr(Time[0],TIME_DATE|TIME_MINUTES)+a);
   ObjectCreate("箭头"+TimeToStr(Time[0],TIME_DATE|TIME_MINUTES)+a,OBJ_TEXT,0,Time[0],Low[0]);
   ObjectSetText("箭头"+TimeToStr(Time[0],TIME_DATE|TIME_MINUTES)+a,a,8,"Times New Roman",b);
   }
}




//-----------------------------------------
void 繁忙等待组件()
{
while (!IsTradeAllowed() && IsTradeContextBusy()) Sleep(100);
RefreshRates();
}
//------------------------------------
void 报错组件(string a)
{
int t=GetLastError();
string 报警;
   if(t!=0)
   switch (t)
   {
   case 0:报警="错误代码:"+0+"没有错误返回";break;
   case 1:报警="错误代码:"+1+"没有错误返回但结果不明";break;
   case 2:报警="错误代码:"+2+"一般错误";break;
   case 3:报警="错误代码:"+3+"无效交易参量";break;
   case 4:报警="错误代码:"+4+"交易服务器繁忙";break;
   case 5:报警="错误代码:"+5+"客户终端旧版本";break;
   case 6:报警="错误代码:"+6+"没有连接服务器";break;
   case 7:报警="错误代码:"+7+"没有权限";break;
   case 8:报警="错误代码:"+8+"请求过于频繁";break;
   case 9:报警="错误代码:"+9+"交易运行故障";break;
   case 64:报警="错误代码:"+64+"账户禁止";break;
   case 65:报警="错误代码:"+65+"无效账户";break;
   case 128:报警="错误代码:"+128+"交易超时";break;
   case 129:报警="错误代码:"+129+"无效价格";break;
   case 130:报警="错误代码:"+130+"无效停止";break;
   case 131:报警="错误代码:"+131+"无效交易量";break;
   case 132:报警="错误代码:"+132+"市场关闭";break;
   case 133:报警="错误代码:"+133+"交易被禁止";break;
   case 134:报警="错误代码:"+134+"资金不足";break;
   case 135:报警="错误代码:"+135+"价格改变";break;
   case 136:报警="错误代码:"+136+"开价";break;
   case 137:报警="错误代码:"+137+"经纪繁忙";break;
   case 138:报警="错误代码:"+138+"重新开价";break;
   case 139:报警="错误代码:"+139+"定单被锁定";break;
   case 140:报警="错误代码:"+140+"只允许看涨仓位";break;
   case 141:报警="错误代码:"+141+"过多请求";break;
   case 145:报警="错误代码:"+145+"因为过于接近市场,修改否定";break;
   case 146:报警="错误代码:"+146+"交易文本已满";break;
   case 147:报警="错误代码:"+147+"时间周期被经纪否定";break;
   case 148:报警="错误代码:"+148+"开单和挂单总数已被经纪限定";break;
   case 149:报警="错误代码:"+149+"当对冲备拒绝时,打开相对于现有的一个单置";break;
   case 150:报警="错误代码:"+150+"把为反FIFO规定的单子平掉";break;
   case 4000:报警="错误代码:"+4000+"没有错误";break;
   case 4001:报警="错误代码:"+4001+"错误函数指示";break;
   case 4002:报警="错误代码:"+4002+"数组索引超出范围";break;
   case 4003:报警="错误代码:"+4003+"对于调用堆栈储存器函数没有足够内存";break;
   case 4004:报警="错误代码:"+4004+"循环堆栈储存器溢出";break;
   case 4005:报警="错误代码:"+4005+"对于堆栈储存器参量没有内存";break;
   case 4006:报警="错误代码:"+4006+"对于字行参量没有足够内存";break;
   case 4007:报警="错误代码:"+4007+"对于字行没有足够内存";break;
   case 4008:报警="错误代码:"+4008+"没有初始字行";break;
   case 4009:报警="错误代码:"+4009+"在数组中没有初始字串符";break;
   case 4010:报警="错误代码:"+4010+"对于数组没有内存";break;
   case 4011:报警="错误代码:"+4011+"字行过长";break;
   case 4012:报警="错误代码:"+4012+"余数划分为零";break;
   case 4013:报警="错误代码:"+4013+"零划分";break;
   case 4014:报警="错误代码:"+4014+"不明命令";break;
   case 4015:报警="错误代码:"+4015+"错误转换(没有常规错误)";break;
   case 4016:报警="错误代码:"+4016+"没有初始数组";break;
   case 4017:报警="错误代码:"+4017+"禁止调用DLL ";break;
   case 4018:报警="错误代码:"+4018+"数据库不能下载";break;
   case 4019:报警="错误代码:"+4019+"不能调用函数";break;
   case 4020:报警="错误代码:"+4020+"禁止调用智能交易函数";break;
   case 4021:报警="错误代码:"+4021+"对于来自函数的字行没有足够内存";break;
   case 4022:报警="错误代码:"+4022+"系统繁忙 (没有常规错误)";break;
   case 4050:报警="错误代码:"+4050+"无效计数参量函数";break;
   case 4051:报警="错误代码:"+4051+"无效参量值函数";break;
   case 4052:报警="错误代码:"+4052+"字行函数内部错误";break;
   case 4053:报警="错误代码:"+4053+"一些数组错误";break;
   case 4054:报警="错误代码:"+4054+"应用不正确数组";break;
   case 4055:报警="错误代码:"+4055+"自定义指标错误";break;
   case 4056:报警="错误代码:"+4056+"不协调数组";break;
   case 4057:报警="错误代码:"+4057+"整体变量过程错误";break;
   case 4058:报警="错误代码:"+4058+"整体变量未找到";break;
   case 4059:报警="错误代码:"+4059+"测试模式函数禁止";break;
   case 4060:报警="错误代码:"+4060+"没有确认函数";break;
   case 4061:报警="错误代码:"+4061+"发送邮件错误";break;
   case 4062:报警="错误代码:"+4062+"字行预计参量";break;
   case 4063:报警="错误代码:"+4063+"整数预计参量";break;
   case 4064:报警="错误代码:"+4064+"双预计参量";break;
   case 4065:报警="错误代码:"+4065+"数组作为预计参量";break;
   case 4066:报警="错误代码:"+4066+"刷新状态请求历史数据";break;
   case 4067:报警="错误代码:"+4067+"交易函数错误";break;
   case 4099:报警="错误代码:"+4099+"文件结束";break;
   case 4100:报警="错误代码:"+4100+"一些文件错误";break;
   case 4101:报警="错误代码:"+4101+"错误文件名称";break;
   case 4102:报警="错误代码:"+4102+"打开文件过多";break;
   case 4103:报警="错误代码:"+4103+"不能打开文件";break;
   case 4104:报警="错误代码:"+4104+"不协调文件";break;
   case 4105:报警="错误代码:"+4105+"没有选择定单";break;
   case 4106:报警="错误代码:"+4106+"不明货币对";break;
   case 4107:报警="错误代码:"+4107+"无效价格";break;
   case 4108:报警="错误代码:"+4108+"无效定单编码";break;
   case 4109:报警="错误代码:"+4109+"不允许交易";break;
   case 4110:报警="错误代码:"+4110+"不允许长期";break;
   case 4111:报警="错误代码:"+4111+"不允许短期";break;
   case 4200:报警="错误代码:"+4200+"定单已经存在";break;
   case 4201:报警="错误代码:"+4201+"不明定单属性";break;
   case 4202:报警="错误代码:"+4202+"定单不存在";break;
   case 4203:报警="错误代码:"+4203+"不明定单类型";break;
   case 4204:报警="错误代码:"+4204+"没有定单名称";break;
   case 4205:报警="错误代码:"+4205+"定单坐标错误";break;
   case 4206:报警="错误代码:"+4206+"没有指定子窗口";break;
   case 4207:报警="错误代码:"+4207+"定单一些函数错误";break;
   case 4250:报警="错误代码:"+4250+"错误设定发送通知到队列中";break;
   case 4251:报警="错误代码:"+4251+"无效参量- 空字符串传递到SendNotification()函数";break;
   case 4252:报警="错误代码:"+4252+"无效设置发送通知(未指定ID或未启用通知)";break;
   case 4253:报警="错误代码:"+4253+"通知发送过于频繁";break;
   }
   if(t!=0)
   {
   Alert(报警);
   Print(报警);
   laber(报警,Yellow);
   }
}





void 获利后一次性止损保护(int 保护距离,int 启动距离,int c)
{
   for(int i=0;i<OrdersTotal();i++)
   {
      if(OrderSelect(i,SELECT_BY_POS))
      if(OrderSymbol()==Symbol())
      if(OrderMagicNumber()==c)
      {
      double a=OrderClosePrice();

         if(OrderType()==OP_BUY)
         if(a-OrderOpenPrice()>启动距离*Point)
         if(OrderStopLoss()+Point<OrderOpenPrice()+保护距离*Point ||OrderStopLoss()==0)
         {
         繁忙等待组件();
         OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+保护距离*Point,OrderTakeProfit(),0);
         }

         if(OrderType()==OP_SELL)
         if(OrderOpenPrice()-a>启动距离*Point)
         if(OrderStopLoss()-Point>OrderOpenPrice()-保护距离*Point ||OrderStopLoss()==0)
         {
         繁忙等待组件();
         OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-保护距离*Point,OrderTakeProfit(),0);
         }
      }
   }
}





void gengzong(int 保持距离,int 跳跃距离,int 启动距离,int c)
{
   if(保持距离!=0)
   for(int i=0;i<OrdersTotal();i++)
   {
      if(OrderSelect(i,SELECT_BY_POS))
      if(OrderSymbol()==Symbol())
      if(OrderMagicNumber()==c)
      {
      RefreshRates();
      double a=OrderClosePrice();

         if(OrderType()==OP_BUY)
         if(a-OrderOpenPrice()>启动距离*Point)
         if(a-(保持距离+跳跃距离)*Point>=OrderStopLoss()||OrderStopLoss()==0)
         {
         繁忙等待组件();
         OrderModify(OrderTicket(),OrderOpenPrice(),a-保持距离*Point,OrderTakeProfit(),0);
         报错组件("");
         }

         if(OrderType()==OP_SELL)
         if(OrderOpenPrice()-a>启动距离*Point)
         if(a+(保持距离+跳跃距离)*Point<=OrderStopLoss()||OrderStopLoss()==0)
         {
         繁忙等待组件();
         OrderModify(OrderTicket(),OrderOpenPrice(),a+保持距离*Point,OrderTakeProfit(),0);
         报错组件("");
         }
      }
   }
}

最近访问 头像模式
举报

评论 使用道具

发新帖
EA交易
您需要登录后才可以评论 登录 | 立即注册

简体中文
繁體中文
English(英语)
日本語(日语)
Deutsch(德语)
Русский язык(俄语)
بالعربية(阿拉伯语)
Türkçe(土耳其语)
Português(葡萄牙语)
ภาษาไทย(泰国语)
한어(朝鲜语/韩语)
Français(法语)