FORTS: OnTradeTransaction() dönüş kodları - sayfa 7

 
Михаил :

Gerçek şu ki, bir emir yürütüldüğünde, onun yürütülmesini kontrol edemezsiniz ve bu nedenle OnTick() veya OnBookEvent()'i engellemezsiniz.

Yürütülen emri hızlı bir şekilde kontrol etmek için, Deal olayını OnTradeTransaction() içinde işlemeniz gerekir.

Kodu birazdan paylaşacağım...

Um. Bunu düşünmek lazım, teşekkürler!
 
Alexey Kozitsyn :
Um. Bunu düşünmek lazım, teşekkürler!
 #property copyright "Copyright 2015, Mikalas"
#property link        "https://www.mql5.com"
#property version    "1.00"
//
bool is_busy;
//
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
{
  is_busy = false ;
   return ( INIT_SUCCEEDED ); 
}
//----------------------------
void OnBookEvent ( const string &a_symbol ) 
{
   if ( ( a_symbol == _Symbol ) && ( !is_busy ) )
  {
     //Работаем дальше
  }
}  
//------------
void OnTradeTransaction ( const MqlTradeTransaction &trans, const MqlTradeRequest &request, const MqlTradeResult &result )
{
   switch ( trans.type )
  {
     case TRADE_TRANSACTION_DEAL_ADD : if ( trans.order_state == ORDER_STATE_STARTED )
                                     {
                                       is_busy = true ;
                                       //Обнуляем билет этого ордера, если одер залился полностью
                                       is_busy = false ;
                                     }
                                     break ; 
                                          
  }
}  
 

Daha doğrusu şöyle:

 #property copyright "Copyright 2015, Mikalas"
#property link        "https://www.mql5.com"
#property version    "1.00"
//
bool is_busy;
ulong order_ticket;
//
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
{
  is_busy = false ;
   return ( INIT_SUCCEEDED ); 
}
//----------------------------
void OnBookEvent ( const string &a_symbol ) 
{
   if ( ( a_symbol == _Symbol ) && ( !is_busy ) )
  {
     //Работаем дальше
  }
}  
//------------
void OnTradeTransaction ( const MqlTradeTransaction &trans, const MqlTradeRequest &request, const MqlTradeResult &result )
{
   switch ( trans.type )
  {
     case TRADE_TRANSACTION_DEAL_ADD : if ( trans.order_state == ORDER_STATE_STARTED )
                                     {
                                       if ( result.order == order_ticket )
                                       { 
                                         is_busy = true ;
                                         //Обнуляем билет этого ордера, если одер залился полностью
                                         is_busy = false ;
                                       }  
                                     }
                                     break ; 
                                          
  }
}
 
Михаил :
Açıktır ki, sadece bu yapının OnBookEvent'i () engellemek için zamana sahip olacağına dair şüpheler var. DOM change olayı, gruplar halinde art arda gidebilir. Kontrol edeceğim, tekrar teşekkürler.
 
Alexey Kozitsyn :
Açıktır ki, sadece bu yapının OnBookEvent'i () engellemek için zamana sahip olacağına dair şüpheler var. DOM change olayı, gruplar halinde art arda gidebilir. Kontrol edeceğim, tekrar teşekkürler.
Bir şüphe var - tavsiyeyi kullanmayın, ancak bir "yedek" koyana kadar sizinle aynı şeyi yaşadım.
 
Михаил :
Bir şüphe var - tavsiyeyi kullanmayın, ancak bir "yedek" koyana kadar sizinle aynı şeyi yaşadım.
Hayır, fikir ilginç ve işin kalitesi o kadar yüksek olacak, sipariş ne kadar uzun süre yürütülürse. Sadece özellikle belirttiğim durumda, hem emrin yerine getirilmesi hem de kaldırılması bir ms sürdü. Yine de uzmanın mantığını kontrol etmemiz gerekiyor.
 
Alexey Kozitsyn :
Hayır, fikir ilginç ve işin kalitesi o kadar yüksek olacak, sipariş ne kadar uzun süre yürütülürse. Sadece özellikle belirttiğim durumda, hem emrin yerine getirilmesi hem de kaldırılması bir ms sürdü. Yine de uzmanın mantığını kontrol etmemiz gerekiyor.
https://www.mql5.com/ru/forum/16832
ФОРТС Отмена ордера в момент его исполнения [что приходит раньше - BookEvent или TradeEvent]
ФОРТС Отмена ордера в момент его исполнения [что приходит раньше - BookEvent или TradeEvent]
  • www.mql5.com
OnBookEvent срабатывает раньше, чем OnTradeTransAction. - - Категория: автоматические торговые системы
 
Alexey Kozitsyn :
siparişGönder(). Bu durumda fark nedir?
"Sahne" uygulamasında
 
Михаил :

Daha doğrusu şöyle:

Doğru değil.

Son iki parametre isteği ve sonucu yalnızca TRADE_TRANSACTION_REQUEST türünde bir işlem için değerlerle doldurulur, trans değişkeninin type parametresinden işleme ilişkin bilgi alınabilir .

 
Alexey Kozitsyn :

Doğru değil.

Tarif edilen, elbette trans.sipariş