Aynı anda birden fazla EA çalıştırma - sayfa 4

 
Sneck55 : eşleşmesi için bir emri kapatırsa, bir emri kapatmazsa azaltması gerekir. Bir emri kapatmadan azalırsa sonsuz bir döngüye girer.
Bir atı suya götürebilirsin...
 
Sneck55 :
Havuzda olanla eşleşmesi için bir emri kapatırsa, bir emri kapatmazsa azaltması gerekir. Bir emri kapatmadan azalırsa sonsuz bir döngüye girer.

OrdersTotal()'ı aramaya devam etmeseydin, bu problemin olmazdı. Toplamı bir kez arayın. Bir int içine koyun. Bu int'yi for döngüsünde kullanın.

Bunu söyledikten sonra daha önceki cevabımı okudun mu? Bu döngünün tamamı tam bir zaman kaybı. Koduna bak. SellTicket'in halihazırdaki değeri nedir sizce?

         if ( SellTicket!= 0 )
            {
             if (SmallMA>MediumMA)
            {
             for (Counter= 0 ;Counter<= OrdersTotal ()- 1 ;Counter++)
               {
               SelectedOrder = OrderSelect (Counter, SELECT_BY_POS );
               if ( OrderMagicNumber ()==MagicNumber&& OrderSymbol ()== Symbol ()&& OrderType ()== OP_SELL )
                  {
               //   while(IsTradeContextBusy()) Sleep(10);
                  Closed= OrderClose ( OrderTicket (), OrderLots (), MarketInfo ( Symbol (), MODE_ASK ),Slippage,Red);
                   if (Closed) SellTicket= 0 ;
                   else Alert ( "Symbol: " , Symbol (), " Ticket: " ,SellTicket, " unable to close sell order(s): sell ma convergence close routine" );                  
                  }
            Counter--;               
                }
            }
            }
 
Ve zamanla işlemci gücünü tüketecektir.
 

Evet öyle ve EA'da zaten gerekli değerlere sahip olmak, sonra onları unutmak ve onları almak için sipariş havuzunda gezinmek mantıklı değil. Bu tür şeyler yalnızca yeniden başlatma kurtarma işleminin bir parçası olarak yapılmalıdır.