EA需要的简单代码(修改两个未结订单) - 页 5

 
deVries:


你想让它对相同点数的买入和卖出交易修改止损吗?

如果这是你想要的,你可以再想想,为什么它不能这样修改....。

也不要在每一个新的方向上修改交易,选择一个尾随步骤来允许修改(XX点可以选择10个或更多,以避免很多tradecontext太忙的错误)。

"!"是类似于不在编码中的东西

目前,我只想在两笔交易中修改止盈,止损在整个交易中都是一样的(反正在目前的测试中)。
 

好的,找到了问题所在 .... 点差是以点的数量返回的 . .

所以,把这些线条 . .

if(OrderTakeProfit() > Candle23Open - ((TakeProfitModified - 1) * Point) + Spread )      //  check if TakeProfit has already been modified
                  if(!OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), Candle23Open - (TakeProfitModified * Point) + Spread, 0, Blue))

到这个 . .

if(OrderTakeProfit() > Candle23Open + ((Spread - TakeProfitModified + 1 ) * Point)  )      //  check if TakeProfit has already been modified
                  if(!OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), Candle23Open + ((Spread - TakeProfitModified) * Point) , 0, Blue))
 
RaptorUK:

好的,找到了问题所在 ....点差是以点的数量返回的 . .

所以,改变这些行 .. .

改为这样 . .

这样就可以了,谢谢!买入和卖出的交易现在都得到了修改,然而,由于某些原因,它们在整个交易中被修改了几次,而且获利 似乎有时比输入的要求更远。这似乎发生在2:00或7:00等整个时间段,我不太清楚为什么会发生这种情况,这是否与点差一直在变化有关?这种情况在买入和卖出交易中都会发生,所以我想这不可能是点差的问题。我想到的唯一方法是23:00的蜡烛出现变化,尽管这没有意义,我不知道如何测试。

 
在这里和那里添加一些Print语句,向你展示变量在做什么,然后你就可以找出问题所在并加以解决。
 

我正在尝试使用这个。

Print(Open [iBarShift(NULL, 0, StrToTime("23:00") )]);

来查看条形图的开盘价 是否发生变化,但每次似乎都是打印随机时间。

另外,在其中一天,我注意到交易没有遵循关闭所有规则,无论发生什么,都在22:59关闭交易,我认为这已经停止工作了。

我在使用这个

   if (TimeDayOfWeek(TimeCurrent())==5 && TimeCurrent()>=StrToTime("22:59")) { CloseAll(); return(0); }

和这个

void CloseAll()
   {
   for(int cnt=OrdersTotal()-1;cnt>=0;cnt--)
      {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
      if (OrderMagicNumber()!=MagicNumber) continue;
         
      //
      //
      //
      //
      //
         
      if (OrderType()==OP_BUY || OrderType()==OP_SELL)
         {
         for(int c=0; c<3; c++)
            {
            RefreshRates();
            if (OrderType()==OP_BUY)
                  { double cp = Bid;}  
            else  {        cp = Ask;}
               
            OrderClose(OrderTicket(),OrderLots(),cp,0,Yellow);
            int err=GetLastError();
            if(err==4 || err==136 || err==137 || err==138 || err==146)
               {
               Sleep(5000); continue;
               }  
               break;                     
            }
            break;

在指定时间关闭交易。

 

一个全部使用大写字母的帖子已被删除

请不要在发帖时过度使用大写字母。这被认为是大喊大叫,非常无礼。