ФОРТС: OnTradeTransaction() коды возврата - страница 11

 
Dmitry Fedoseev:
Вот непонятно какое конкретно состояние у ордера было.

Для УДАЛЕНИЯ ордера, важно что он СУЩЕСТВУЕТ и не находится в "промежуточном" состоянии.

Посмотрите внимательно (со всеми объяснениями):

https://www.mql5.com/ru/forum/58012/page9#comment_2074928 

ФОРТС: OnTradeTransaction() коды возврата
ФОРТС: OnTradeTransaction() коды возврата
  • www.mql5.com
Сейчас, коды возврата торгового сервера функции OnTradeTransaction() выглядят так:. - Страница 9 - Категория: биржевой трейдинг
 
Михаил:

Для УДАЛЕНИЯ ордера, важно что он СУЩЕСТВУЕТ и не находится в "промежуточном" состоянии.

Посмотрите внимательно (со всеми объяснениями):

https://www.mql5.com/ru/forum/58012/page9#comment_2074928 

Все равно интересно, и может было бы полезно, в качестве четкого аргумента для сервисдеска.
 
Dmitry Fedoseev:
Все равно интересно, и может было бы полезно, в качестве четкого аргумента для сервисдеска.

Т.е Вы считаете, что функция CheckOrderState() написана не правильно?

P/S СД, как всегда молчит.... 

 
Михаил:

Т.е Вы считаете, что функция CheckOrderState() написана не правильно?

P/S СД, как всегда молчит.... 

Незнаю. Если было состояние ORDER_STATE_PLACED, то вероятно все тот же баг. 

А если ORDER_STATE_PARTIAL, то неизвестно, про этот случай Алексанр не рассказывал, может какие тонкости. 

В любом случае функцию можно улучшить, чтобы знать какое конкретно состояние было у ордера. 

 
Dmitry Fedoseev:

Незнаю. Если было состояние ORDER_STATE_PLACED, то вероятно все тот же баг. 

А если ORDER_STATE_PARTIAL, то неизвестно, про этот случай Алексанр не рассказывал, может какие тонкости. 

В любом случае функцию можно улучшить, чтобы знать какое конкретно состояние было у ордера. 

Возможно и можно улучшить, но (по моему мнению) важно следующее:

1. Когда ордер находится в промежуточном состоянии, а именно:

 ORDER_STATE_STARTED

ORDER_STATE_REQUEST_ADD 

ORDER_STATE_REQUEST_MODIFY

ORDER_STATE_REQUEST_CANCEL

то с ним НИЧЕГО нельзя сделать, поэтому ORD_BUSY

(вообще не вижу смысла в этих состояниях) 

2. Если ордера нет в истории, то он СУЩЕСТВУЕТ и может принимать ТОЛЬКО

в два состояния:

ORDER_STATE_PARTIAL = ORD_EXIST_PARTIAL

ORDER_STATE_PLACED = ORD_EXIST 

3. Все эти умозаключения взяты не "с потолка", а из документации к MQL5,

и если у разработчиков есть какие-то "особенности", то они ОБЯЗАНЫ

были изложить их в мануале! 

4. Я, например, не ясновидящий, и не могу знать, что разработчики имели ввиду

написав ту или иную функцию.

Какое дали объяснение - таков и результат! 

P/S Конечно, можно что-то не правильно понять, но не в данном случае. 

 

А почему, когда ордер "отфутболиыает" брокер (биржа), нет никакого кода возврата?

case ORDER_NONE_REJECTED:
              Print( __FUNCTION__, ": Main ордер отклонён брокером(биржей). Билет = ", trans.order, " Причина: ", result.retcode, " ", result.retcode_external );
            break

 

2016.09.02 16:11:05.687 trader (GAZR-12.16,H1)    OnTradeTransaction: Main ордер отклонён брокером(биржей). Билет = 43595612 Причина: 0 0
2016.09.02 16:11:05.687 Trades  'xxxxx': exchange buy 9.00 GAZR-12.16 at market
2016.09.02 16:11:05.687 Trades  'xxxxx': accepted exchange buy 9.00 GAZR-12.16 at market
2016.09.02 16:11:05.687 Trades  'xxxxx': exchange buy 9.00 GAZR-12.16 at market placed for execution in 11.344 ms
2016.09.02 16:18:45.902 Trades  'xxxxx': buy limit 9.00 GAZR-3.17 at 14165
2016.09.02 16:18:45.908 Trades  'xxxxx': accepted buy limit 9.00 GAZR-3.17 at 14165
2016.09.02 16:18:45.909 Trades  'xxxxx': buy limit 9.00 GAZR-3.17 at 14165 placed for execution
 
prostotrader:

А почему, когда ордер "отфутболиыает" брокер (биржа), нет никакого кода возврата?

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

Мы проверим шлюзы и подумаем над заполнением этого кода возврата, если найдем точные ответы.

 
Renat Fatkhullin:

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

Мы проверим шлюзы и подумаем над заполнением этого кода возврата.

Спасибо.
 

Сегодня был какой-то сбой на сервере МТ5 ордера реджектились, а причины нет (0 0).....

Print( __FUNCTION__, ": Buy ордер отклонён брокером(биржей). Билет = ", trans.order,
                                   " Причина: ", result.retcode, " ", result.retcode_external );

 

2016.10.20 20:31:08.793 trader (PLT-12.16,H1)     OnTradeTransaction: Buy ордер отклонён брокером(биржей). Билет = 46614026 Причина: 0 0
2016.10.20 20:31:08.797 trader (TATN-12.16,H1)    StopTrading: Время сервера = 20:31:08; Статус ордера = BUY_ORDER; Билет = 46614027  Ордер отклонён.
2016.10.20 20:31:08.797 trader (TATN-12.16,H1)    OnTradeTransaction: Buy ордер отклонён брокером(биржей). Билет = 46614027 Причина: 0 0
2016.10.20 20:31:08.801 trader (BR-12.16,M1)      StopTrading: Время сервера = 20:31:08; Статус ордера = SELL_ORDER; Билет = 46614028  Ордер отклонён.
2016.10.20 20:31:08.801 trader (BR-12.16,M1)      OnTradeTransaction: Sell ордер отклонён брокером(биржей). Билет = 46614028 Причина: 0 0
2016.10.20 20:31:08.804 trader (SNGP-12.16,H1)    StopTrading: Время сервера = 20:31:08; Статус ордера = BUY_ORDER; Билет = 46614029  Ордер отклонён.
2016.10.20 20:31:08.804 trader (SNGP-12.16,H1)    OnTradeTransaction: Buy ордер отклонён брокером(биржей). Билет = 46614029 Причина: 0 0
2016.10.20 20:31:08.806 trader (MXI-12.16,M1)     StopTrading: Время сервера = 20:31:08; Статус ордера = BUY_ORDER; Билет = 46614030  Ордер отклонён.
Причина обращения: