Organisation des Auftragszyklus - Seite 15

 
Alexey Viktorov:

Wie wäre es, GetAmountPositions durch das reguläre OnTradeTransaction zu ersetzen?

Ungefähr so:

Es wird nicht helfen. Insbesondere gibt es in Ihrer Variante überhaupt keine Unabhängigkeit zwischen OnTick.

 
fxsaber:

Es wird nicht helfen. Zumal es in Ihrer Version überhaupt keine Unabhängigkeit zwischen OnTick gibt.

Nun, ja. Ich habe nicht bedacht, dass sie von der Zeckenemulation so weit entfernt ist wie der Mond vom Mars.

Unabhängig davon, wie viel Sie verzögern, wird das OnTick-Ereignis erst dann eintreten, wenn die OnTradeTransaction ausgeführt wird, und es wird nichts in die Historie geschrieben.

 
fxsaber:

Sie könnten etwa so vorgehen:

   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);
d.h. wir warten einfach, bis die Position in der Liste steht
 
Aleksey Lebedev:

Sie könnten etwa so vorgehen:

d.h. wir warten einfach, bis die Position in der Liste steht
ulong ticket=Trade.ResultDeal(); // В этом месте может быть ноль
 

fxsaber:

Es könnte Null sein

Unwahrscheinlich, denn nach dem Retcode wird der Auftrag entweder ausgeführt oder erteilt.

Wenn er Null ist, warten wir 5 Sekunden auf das Ende des Zyklus (vielleicht reichen auch 2-3).

In dieser Zeit wird die Liste der Stellen hoffentlich aktualisiert werden.

 
Aleksey Lebedev:

In der Zwischenzeit wird die Liste der Posen hoffentlich aktualisiert werden.

Bei der Mutprobe.

 
fxsaber:

Bei einer Mutprobe.

nein, die wissenschaftliche Methode der durchschnittlichen Obergrenze)