设置好止盈止损空间,为何所有的单子止盈止损都是同样的价格?

 

可以看到图上,订单很多,但所有订单的止盈止损是同样的价格。

而我在EA代码里,设置了止盈500点,止损1800点。而这个简单的EA代码,也是从mql5编程文档里复制过来的。请问这个问题是代码错误还是bug?

如果您有多两分钟的时间 ,请看一下代码:


#define EXPERT_MAGIC 102600

int vol=350;  //最大单量

int sl=1800;    //止损

int tp=500;    //止盈

double ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);

double bid=SymbolInfoDouble(Symbol(),SYMBOL_BID);

datetime ot;

int OnInit()

  {

   return(INIT_SUCCEEDED);

  }

void OnDeinit(const int reason)

  {

  }

void OnTick()

  {

   MqlTradeRequest request={0};

   MqlTradeResult  result={0};

   request.action   =TRADE_ACTION_DEAL; 

   request.symbol   =Symbol();

   request.volume   =0.01;                           

   request.price    =ask; // 持仓价格

   request.type_filling=ORDER_FILLING_IOC;   

   request.deviation=50;      

   request.type     =ORDER_TYPE_BUY;                      

   request.sl=ask-sl*Point();   //这里是按空间计算的,而不是固定的价格

   request.tp=ask+tp*Point();   //这里是按空间计算的,而不是固定的价格

  

   MqlTradeRequest kongrq={0};

   MqlTradeResult  kongrs={0};

   kongrq.action   =TRADE_ACTION_DEAL; 

   kongrq.symbol   =Symbol();

   kongrq.volume   =0.01;                                  

   kongrq.price    =bid; // 持仓价格

   kongrq.type_filling=ORDER_FILLING_IOC;   

   kongrq.deviation=50;      

   kongrq.type     =ORDER_TYPE_SELL;                      

   kongrq.sl=bid+sl*Point();   //这里是按空间计算的,而不是固定的价格

   kongrq.tp=bid-tp*Point();   //这里是按空间计算的,而不是固定的价格

   

   datetime time[];

   ArraySetAsSeries(time,true);

   CopyTime(Symbol(),0,0,1,time);

   

   if(ot!=time[0] && PositionsTotal()<=vol)

     { 

     OrderSend(request,result);

     OrderSend(kongrq,kongrs);

     ot=time[0];

     }

  double 余额=AccountInfoDouble(ACCOUNT_BALANCE);

  double 净值=AccountInfoDouble(ACCOUNT_EQUITY);

  double 盈亏=AccountInfoDouble(ACCOUNT_PROFIT);

  Comment(StringFormat("当前余额为  %G\n当前净值为  %G\n当前盈亏为  %G",余额,净值,盈亏));

  }