Organizar el ciclo de pedidos - página 15

 
Alexey Viktorov:

¿Qué tal si se sustituye GetAmountPositions por el habitual OnTradeTransaction?

Aproximadamente así:

No servirá de nada. Especialmente, en su variante no hay independencia entre OnTick en absoluto.

 
fxsaber:

No servirá de nada. Sobre todo porque en su versión no hay ninguna independencia entre OnTick.

Pues sí. No tuve en cuenta el hecho de que está tan lejos de la emulación de la garrapata como la luna lo está de Marte.

Por mucho que se retrase, el evento OnTick no se producirá hasta que se ejecute el OnTradeTransaction y no se escribirá nada en el historial.

 
fxsaber:

Podrías hacer algo así:

   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);
es decir, esperamos a que la posición esté en la lista
 
Aleksey Lebedev:

Podrías hacer algo así:

es decir, esperamos a que la posición esté en la lista
ulong ticket=Trade.ResultDeal(); // В этом месте может быть ноль
 

fxsaber:

Podría ser cero

Poco probable, por retcode la orden se ejecuta o se coloca.

Si es cero, esperamos 5 segundos a que termine el ciclo (quizás 2-3 sean suficientes).

Es de esperar que durante este tiempo se actualice la lista de puestos.

 
Aleksey Lebedev:

Mientras tanto, es de esperar que la lista de poses se actualice.

En el desafío.

 
fxsaber:

En un reto.

no, el método científico del techo medio)