FORTS: OnTradeTransaction() 반환 코드 - 페이지 7

 
Михаил :

사실은 주문이 실행될 때 실행을 제어하지 않으므로 OnTick() 또는 OnBookEvent()를 차단하지 않는다는 것입니다.

실행된 주문 을 빠르게 제어하려면 OnTradeTransaction()에서 거래 이벤트를 처리해야 합니다.

코드는 곧 올리겠습니다...

음. 생각해봐야겠네요 감사합니다!
 
Alexey Kozitsyn :
음. 생각해봐야겠네요 감사합니다!
 #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 ; 
                                          
  }
}  
 

오히려 다음과 같이:

 #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 ; 
                                          
  }
}
 
Михаил :
이 구성이 OnBookEvent()를 차단할 시간이 있다는 것은 분명합니다. DOM 변경 이벤트는 일괄 처리될 수 있습니다. 확인하겠습니다, 다시 한번 감사드립니다.
 
Alexey Kozitsyn :
이 구성이 OnBookEvent()를 차단할 시간이 있다는 것은 분명합니다. DOM 변경 이벤트는 일괄 처리될 수 있습니다. 확인하겠습니다, 다시 한번 감사드립니다.
의심의 여지가 있습니다. 조언을 사용하지 마십시오. 그러나 "백업"을 넣을 때까지 나는 당신과 같은 것을 가지고있었습니다.
 
Михаил :
의심의 여지가 있습니다. 조언을 사용하지 마십시오. 그러나 "백업"을 넣을 때까지 나는 당신과 같은 것을 가지고있었습니다.
아니요, 아이디어는 흥미롭고 작업 품질이 높을수록 주문이 실행되는 시간이 길어집니다. 내가 구체적으로 언급한 경우 에는 주문 실행 과 삭제 모두 1ms가 걸렸습니다. 우리는 여전히 전문가의 논리를 확인해야 합니다.
 
Alexey Kozitsyn :
아니요, 아이디어는 흥미롭고 작업 품질이 높을수록 주문이 실행되는 시간이 길어집니다. 내가 구체적으로 언급한 경우 에는 주문 실행 과 삭제 모두 1ms가 걸렸습니다. 우리는 여전히 전문가의 논리를 확인해야 합니다.
https://www.mql5.com/ru/forum/16832
ФОРТС Отмена ордера в момент его исполнения [что приходит раньше - BookEvent или TradeEvent]
ФОРТС Отмена ордера в момент его исполнения [что приходит раньше - BookEvent или TradeEvent]
  • www.mql5.com
OnBookEvent срабатывает раньше, чем OnTradeTransAction. - - Категория: автоматические торговые системы
 
Alexey Kozitsyn :
주문 보내기(). 이 경우의 차이점은 무엇입니까?
"소품"의 구현에서
 
Михаил :

오히려 다음과 같이:

사실이 아니다.

마지막 두 매개변수 request result 는 TRADE_TRANSACTION_REQUEST 유형의 트랜잭션에 대한 값으로만 채워지며 트랜잭션에 대한 정보trans 변수유형 매개변수에서 얻을 수 있습니다 .

 
Alexey Kozitsyn :

사실이 아니다.

설명은 물론 trans.order