Organiser le cycle de commande - page 15

 
Alexey Viktorov:

Que diriez-vous de remplacer GetAmountPositions par l'habituelle OnTradeTransaction???

A peu près comme ça :

Ça ne servira à rien. En particulier, dans votre variante, il n'y a pas du tout d'indépendance entre les OnTick.

 
fxsaber:

Ça ne servira à rien. D'autant plus qu'il n'y a pas du tout d'indépendance entre OnTick dans votre version.

Eh bien, oui. Je n'ai pas tenu compte du fait qu'il est aussi éloigné de l'émulation de tiques que la lune l'est de Mars.

Peu importe le retard que vous prenez, l'événement OnTick ne se produira pas avant l'exécution de la OnTradeTransaction et rien ne sera écrit dans l'historique.

 
fxsaber:

Vous pourriez faire quelque chose comme ça :

   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);
c'est-à-dire que nous attendons simplement que la position soit dans la liste
 
Aleksey Lebedev:

Vous pourriez faire quelque chose comme ça :

c'est-à-dire que nous attendons simplement que la position soit dans la liste
ulong ticket=Trade.ResultDeal(); // В этом месте может быть ноль
 

fxsaber:

Cela pourrait être zéro

Peu probable, par retcode l'ordre est soit exécuté soit placé.

S'il est égal à zéro, nous attendons 5 secondes la fin du cycle (peut-être que 2 ou 3 secondes suffisent).

Pendant ce temps, nous espérons que la liste des postes sera mise à jour.

 
Aleksey Lebedev:

Dans l'intervalle, la liste des poses sera, nous l'espérons, mise à jour.

Sur le défi.

 
fxsaber:

Sur le défi.

non, la méthode scientifique du plafond moyen)