Organizando o ciclo do pedido - página 15

 
Alexey Viktorov:

Que tal substituir a GetAmountPositions pela OnTradeTransaction regular??

Aproximadamente assim:

Isso não vai ajudar. Especialmente, em sua variante não há nenhuma independência entre a OnTick.

 
fxsaber:

Isso não vai ajudar. Especialmente porque não há nenhuma independência entre a OnTick em sua versão.

Bem, sim. Não levei em conta o fato de que está tão longe da emulação de carrapatos quanto a lua é de Marte.

Não importa o atraso, o evento OnTick não ocorrerá até que a OnTradeTransaction seja executada e nada será escrito na história.

 
fxsaber:

Você poderia fazer algo como isto:

   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);
ou seja, apenas esperamos até que a posição esteja na lista
 
Aleksey Lebedev:

Você poderia fazer algo como isto:

ou seja, apenas esperamos até que a posição esteja na lista
ulong ticket=Trade.ResultDeal(); // В этом месте может быть ноль
 

fxsaber:

Poderia ser zero

Improvável que, por código retcode, o pedido seja executado ou colocado.

Se for zero, esperamos 5 segundos pelo final do ciclo (talvez 2-3 seja suficiente).

Durante este tempo, espera-se que a lista de posições seja atualizada.

 
Aleksey Lebedev:

Enquanto isso, espera-se que a lista de poses seja atualizada.

Sobre a ousadia.

 
fxsaber:

Sobre a ousadia.

não, o método científico do teto médio)