Organizzazione del ciclo dell'ordine - pagina 15

 
Alexey Viktorov:

Che ne dite di sostituire GetAmountPositions con il normale OnTradeTransaction?

All'incirca così:

Non servirà. In particolare, nella tua variante non c'è alcuna indipendenza tra OnTick.

 
fxsaber:

Non servirà. Soprattutto perché non c'è alcuna indipendenza tra OnTick nella tua versione.

Beh, sì. Non ho tenuto conto del fatto che è tanto lontano dall'emulazione di zecca quanto la luna da Marte.

Non importa quanto ritardo tu faccia, l'evento OnTick non si verificherà fino all'esecuzione di OnTradeTransaction e nulla sarà scritto nella storia.

 
fxsaber:

Si potrebbe fare qualcosa del genere:

   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);
cioè aspettiamo solo che la posizione sia nella lista
 
Aleksey Lebedev:

Si potrebbe fare qualcosa del genere:

cioè aspettiamo solo che la posizione sia nella lista
ulong ticket=Trade.ResultDeal(); // В этом месте может быть ноль
 

fxsaber:

Potrebbe essere zero

Improbabile, per retcode l'ordine viene eseguito o piazzato.

Se è zero, aspettiamo 5 secondi per la fine del ciclo (forse 2-3 sono sufficienti).

Durante questo periodo si spera che l'elenco delle posizioni venga aggiornato.

 
Aleksey Lebedev:

Nel frattempo, si spera che la lista delle pose venga aggiornata.

Sulla sfida.

 
fxsaber:

Sulla sfida.

no, il metodo scientifico del tetto medio)