Функция OnTradeTransaction

 

Добрый день!

Кто-нибудь сможет объяснить:

Почему, когда совершается сделка (TRADE_TRANSACTION_DEAL_ADD),  

состояние ордера ORDER_STATE_STARTED???

2014.08.04 15:15:45.705 Forts_trader (GAZR-9.14,H1) Trans type = TRADE_TRANSACTION_DEAL_ADD Order state = ORDER_STATE_STARTED Ticket = 6509891

Из справки MQ:

ORDER_STATE_STARTED - Ордер проверен на корректность, но еще не принят брокером! 

 
где код?
 

Специально для Вас, sergeev:

//+------------------------------------------------------------------+
// Expert Trade Transaction function                                 |
//+------------------------------------------------------------------+
void OnTradeTransaction( const MqlTradeTransaction &trans, const MqlTradeRequest &request, const MqlTradeResult &result )
{
  switch( trans.type )
  {
    case TRADE_TRANSACTION_DEAL_ADD:   Print( "Trans type = ", EnumToString(trans.type), " Order state = ", EnumToString( trans.order_state ), " Ticket = ", trans.order );
                                       break;   
  }                                     
}
 
Mikalas:

Добрый день!

Кто-нибудь сможет объяснить:

Почему, когда совершается сделка (TRADE_TRANSACTION_DEAL_ADD),  

состояние ордера ORDER_STATE_STARTED???

Возможно, потому что ORDER_STATE_STARTED=0 :)

Внимательно прочитайте  Структура торговой транзакции (MqlTradeTransaction).

 
Mikalas:

Специально для Вас, sergeev:

вот. а в сервисдеске все телепаты. им  не надо ваш код.

теперь ждите ответа от разрабов. а лучше сразу к ним напрямую.

 
Yurich:

Возможно, потому что ORDER_STATE_STARTED=0 :)

Внимательно прочитайте  Структура торговой транзакции (MqlTradeTransaction).

Yurich, спасибо!

Т.е это поле не заполняется. 

 
mikalas:

yurich, спасибо!

т.е это поле не заполняется. 

я тоже на это натыкался. неудобная неоднозначность.

предложите в сд исправить код started?

 
komposter:

я тоже на это натыкался. неудобная неоднозначность.

предложите в сд исправить код started?

Зачем исправлять? Следуя этой логике, много чего еще можно исправить, например, POSITION_TYPE_BUY :)

 

Yourich!

НУЖНО исправлять!

Это же очень просто:

POSITION_TYPE_NULL или ORDER_STATE_NULL и т.д

Тогда НИКТО не будет натыкаться....

Это просто БЕЗГРАМОТНОЕ программирование!

Ведь в ENUM 0 всегда должен быть обозначен, например:

enum ENUM_ORDER_STATE
{
  ORD_NO_STATE       = 0,
  ORD_BUY_DO_SET     = 1,
  ORD_BUY_DO_MODIFY  = 2,
  ORD_BUY_WORK       = 3,
  ORD_BUY_DO_CANCEL  = 4,
  ORD_SELL_DO_SET    = 5,
  ORD_SELL_DO_MODIFY = 6,
  ORD_SELL_WORK      = 7,
  ORD_SELL_DO_CANCEL = 8
};

 ORD_NO_STATE       = 0,

 
mikalas:

yourich!

нужно исправлять!

это же очень просто:

position_type_null или order_state_null и т.д

тогда никто не будет натыкаться....

это просто безграмотное программирование!

ведь в enum 0 всегда должен быть обозначен, например:

 ord_no_state       = 0,

сомнительные утверждения. и про безграмотное программирование, и про enun 0. 

для enum есть значение wrong_value.

если параметр не определен, то зачем его проверять? этот вопрос как раз относится к грамотности :)

если нет позиции, то и нет смысла узнавать ее тип.

upd. А где заглавные буквы?(это вопрос к программистам сайта) 

 

Yiurich!

Пусть каждый останется при своём мнении!

НО, если 2 человека говорят, что это не корректно, то, вероятно, стоит прислушаться. 

Причина обращения: