Организация цикла перебора ордеров - страница 15

 
Alexey Viktorov:

А если заменить GetAmountPositions на штатную OnTradeTransaction???

Примерно так:

Не поможет. Тем более, в Вашем варианте совсем отсутствует независимость между OnTick.

 
fxsaber:

Не поможет. Тем более, в Вашем варианте совсем отсутствует независимость между OnTick.

Ну, да. Я не учёл тот факт, что это так далеко от эмуляции тиков, как от Луны до Марса.

Сколько не делайте задержку, пока не закончится выполнение OnTick событие OnTradeTransaction не произойдёт и в историю ничего не попадёт.

 
fxsaber:

Можно как-то так сделать:

   if(Trade.Buy(volume,_Symbol,OP,SL,TP))
     {
      uint retcode=Trade.ResultRetcode();
      if(retcode==TRADE_RETCODE_PLACED||retcode==TRADE_RETCODE_DONE)
         {
         ulong ticket=Trade.ResultDeal();
         for(int n=0;n<500;n++)
            {
            if(!PositionSelectByTicket(ticket)) Sleep(10);
            else return(true);
            }
         }
      else return(false);
     }
   else return(false);
т.е. тупо ждём, пока позиция не попадёт в список
 
Aleksey Lebedev:

Можно как-то так сделать:

т.е. тупо ждём, пока позиция не попадёт в список
ulong ticket=Trade.ResultDeal(); // В этом месте может быть ноль
 

fxsaber:

может быть ноль

Вряд ли, по retcode ордер или исполнен или размещён.

Если таки ноль, ждём окончания цикла 5 секунд(возможно достаточно 2-3).

За это время список поз, можно надеяться, обновится.

 
Aleksey Lebedev:

За это время список поз, можно надеяться, обновится.

На Авось.

 
fxsaber:

На Авось.

не, научный метод среднего потолочного)

Причина обращения: