任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 429

 
Trader7777:

伙计们,请检查一下这个功能,我对它有一些怀疑。


好吧,如果是关闭,最好是向后循环。
 
splxgf:

因此,如果有一个关闭,最好是向后循环。

不,它应该从旧秩序关闭到新秩序。
 
Trader7777:

不,它应该从旧秩序关闭到新秩序

如果你改变了顺序,就会从旧的到新的。在此期间,从新到旧,甚至通过一个人有时可能会发生。
 
evillive:

如果你改变了顺序,就会从旧的到新的。同时,从新的到旧的,有时可能通过一个发生。

如果你为(int i =OrdersTotal()-1; i>0; i--)它将从新到旧关闭!
 
evillive:

如果你改变了顺序,就会从旧的到新的。但在这期间,从新到旧,有时一个接一个,都可能发生。

我不明白,如果你懒得提出错误,为什么要把一个根据我的TS,我不需要的功能强加给我?
 

晚上好...

这个https://www.mql5.com/ru/code/9767 专家顾问中的指标将是正确的?

如果(iCustom( NULL,0, "wave(MACD_FZR)",1,0)<Low[1] )

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point, "macd sample",16384,0,Green);

如果(ticket>0)

{

如果(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))Print("BUY订单打开:",OrderOpenPrice())。

}

else Print("错误打开BUY订单:",GetLastError())。

return(0);

}

// 检查空头头寸(卖出)。

如果(iCustom( NULL, 0, "wave(MACD_FZR)",1,1)>High[1] )

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point, "macd sample",16384,0,Red);

 
Trader7777:

我不明白,如果你懒得提出错误,为什么要把一个根据我的TS不需要的功能强加给我?

好吧,那么看看你的函数,比如说,第一笔订单被取走,由于它符合条件,所以被删除......它的位置被第二阶梯所取代。

在下一个循环中,将检查第三个订单,而第二个订单将被跳过。

这就是为什么我们指出,列举是错误的......

如果你自己的顺序真的很重要,我们可以在删除它的时候递减循环变量。

 
Trader7777:

我不明白,如果你懒得提出错误,为什么要把一个根据我的TS,我不需要的功能强加给我?

我告诉过你,要一边做。喜欢(更新3)。

void CloseHalfOrders(int otype) {
   int count = 0;
   double CTexisting = CountTrades(otype), nCloseOrdersCnt = NormalizeDouble(CTexisting/2,1), price;
   int i = 0;
   while (i < OrdersTotal()) {
      if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES)) {
         if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType() == otype) {
            if (otype == OP_BUY) price = Bid;
            else if (otype == OP_SELL) price = Ask;
            else return;//работаем только с OP_BUY/OP_SELL
            if (count < nCloseOrdersCnt) {
               OrderClose(OrderTicket(),OrderLots(),price,0,Lime);
               count++;
               Sleep(1000);
               i = 0;
               continue;
            } else i = OrdersTotal();
         }
      }
      i++;
   }
}
 

           OrderClose(OrderTicket(),OrderLots(),Bid,0,Lime);
           i--;
 
                    if (count<n)

为什么k和n是与关闭的总订单数相比?