Sipariş numaralandırma döngüsünün organizasyonu - sayfa 15

 
Alexey Viktorov :

Ve GetAmountPositions'ı normal OnTradeTransaction ile değiştirirseniz ???

Aşağı yukarı şöyle:

yardım etmeyecek. Özellikle, varyantınızda OnTick arasında kesinlikle bir bağımsızlık yoktur.

 
fxsaber :

yardım etmeyecek. Özellikle, varyantınızda OnTick arasında kesinlikle bir bağımsızlık yoktur.

İyi evet. Aydan Mars'a olduğu kadar kene öykünmesinden de uzak olduğu gerçeğini hesaba katmadım.

OnTick yürütmesi tamamlanana kadar ne kadar gecikme yapmayın, OnTradeTransaction olayı gerçekleşir ve geçmişe hiçbir şey girmez.

 
fxsaber :

Bunun gibi bir şey yapabilirsiniz:

   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 );
onlar. pozisyon listeye girene kadar aptalca beklemek
 
Aleksey Lebedev :

Bunun gibi bir şey yapabilirsiniz:

onlar. pozisyon listeye girene kadar aptalca beklemek
 ulong ticket=Trade.ResultDeal(); // В этом месте может быть ноль
 

fxsaber :

sıfır olabilir

Yeniden kodlama ile siparişin yerine getirilmesi veya verilmesi olası değildir.

Hala sıfırsa, döngünün bitmesini 5 saniye bekleyin (belki 2-3 yeterlidir).

Bu süre zarfında, pozların listesi umarım güncellenecektir.

 
Aleksey Lebedev :

Bu süre zarfında, pozların listesi umarım güncellenecektir.

Avos'ta.

 
fxsaber :

Avos'ta.

değil, ortalama tavanın bilimsel yöntemi)