Исполнение отложенных ордеров во время отсутствия соединения с сервером...

 

Добрый день, друзья.

Кто знает, сталкивался... подскажите. Мог бы и сам проверить, но сейчас рынки не работают, а узнать нужно сегодня.

Если ордер исполнился при отсутствии коннекта придут ли в терминал транзакции исполнения ордера, когда связь с сервером восстановится?

Или они остаются не доступны и где-то теряются на просторах?

 
Юрий .С.:

Добрый день, друзья.

Кто знает, сталкивался... подскажите. Мог бы и сам проверить, но сейчас рынки не работают, а узнать нужно сегодня.

Если ордер исполнился при отсутствии коннекта придут ли в терминал транзакции исполнения ордера, когда связь с сервером восстановится?

Или они остаются не доступны и где-то теряются на просторах?

Придут обязательно.

Можно ведь выставить отложенные ордера, закрыть терминал, выключить комп, потом через месяц вернуться с отпуска, включить комп, открыть терминал, а там сюрпрайз)))

Либо слитый депозит,либо можно опять ехать в отпуск)))

 
Что подразумевается под "транзакцией"? Событие типа OnTradeTransaction? Вряд ли сервер хранит длинную очередь для отправки торговых событий на терминал. Если за какой-то таймаут событие не отправилось из-за отсутствия соединения с терминалом, то, полагаю, оно пропадет. При последующем подключении терминала - тот получит только текущее состояние счета.
 
Stanislav Korotky #:
ит только текущее состояние счета

Понял, спасибо за ответ. Именно это имелось ввиду. Буду дополнительно тестировать в понедельник, проверю предположение насчёт серверной длинны очереди или определенного таймаута...

 
Юрий .С. #:

Понял, спасибо за ответ. Именно это имелось ввиду. Буду дополнительно тестировать в понедельник, проверю предположение насчёт серверной длинны очереди или определенного таймаута...

Я первый вопрос не правильно понял)


Похоже на то, что ничего потом не приходит.

Проверил.

Запустил советник TradeTransactionListener из статьи С чего начать при создании торгового робота для Московской биржи MOEX

Выставил два лимитника, выключил терминал.

После включения оказалось что, один из ордеров сработал и открылась позиция, но ничего в OnTradeTransaction не пришло.

Единственная непонятка, что за модификация пришла через 10 минут после включения терминала, я никаких изменений позиции не делал.

14:41:50.184    TradeTransactionListener (XMRUSDT.fut,M1)       LAST PING=93 ms
14:41:57.461    TradeTransactionListener (XMRUSDT.fut,M1)       1. OnTradeTransaction
14:41:57.461    TradeTransactionListener (XMRUSDT.fut,M1)       MqlTradeTransaction: TRADE_TRANSACTION_ORDER_ADD order #33070212 ORDER_TYPE_BUY_LIMIT ORDER_STATE_STARTED   
14:41:57.462    TradeTransactionListener (XMRUSDT.fut,M1)       2. OnTradeTransaction
14:41:57.462    TradeTransactionListener (XMRUSDT.fut,M1)       MqlTradeTransaction: TRADE_TRANSACTION_ORDER_UPDATE order #33070212 ORDER_TYPE_BUY_LIMIT ORDER_STATE_PLACED   
14:41:57.462    TradeTransactionListener (XMRUSDT.fut,M1)       3. OnTradeTransaction
14:41:57.462    TradeTransactionListener (XMRUSDT.fut,M1)       MqlTradeTransaction: TRADE_TRANSACTION_REQUEST
14:41:57.462    TradeTransactionListener (XMRUSDT.fut,M1)       MqlTradeResult: order #33070212 retcode=TRADE_RETCODE_DONE 
14:42:00.100    TradeTransactionListener (XMRUSDT.fut,M1)       1. OnTradeTransaction
14:42:00.100    TradeTransactionListener (XMRUSDT.fut,M1)       MqlTradeTransaction: TRADE_TRANSACTION_ORDER_ADD order #33070213 ORDER_TYPE_SELL_LIMIT ORDER_STATE_STARTED   
14:42:00.101    TradeTransactionListener (XMRUSDT.fut,M1)       2. OnTradeTransaction
14:42:00.101    TradeTransactionListener (XMRUSDT.fut,M1)       MqlTradeTransaction: TRADE_TRANSACTION_ORDER_UPDATE order #33070213 ORDER_TYPE_SELL_LIMIT ORDER_STATE_PLACED   
14:42:00.101    TradeTransactionListener (XMRUSDT.fut,M1)       3. OnTradeTransaction
14:42:00.101    TradeTransactionListener (XMRUSDT.fut,M1)       MqlTradeTransaction: TRADE_TRANSACTION_REQUEST
14:42:00.101    TradeTransactionListener (XMRUSDT.fut,M1)       MqlTradeResult: order #33070213 retcode=TRADE_RETCODE_DONE 
14:50:31.681    TradeTransactionListener (XMRUSDT.fut,M1)       LAST PING=93 ms
15:00:00.690    TradeTransactionListener (XMRUSDT.fut,M1)       1. OnTradeTransaction
15:00:00.690    TradeTransactionListener (XMRUSDT.fut,M1)       MqlTradeTransaction: Position  #33070213 XMRUSDT.fut modified: SL=0.00000 TP=0.00000
 

Закрытие терминала - это-то ладно, это как бы сознательное действие. А вот после перебоя в связи - вот это действительно интересно.

И как удивительно, этот OnTradeTransaction существует уже 10 лет и больше... и вот, наконец, у кого-то возник этот вопрос.

Я-то хоть им не пользуюсь))

 
Dmitry Fedoseev #:

Закрытие терминала - это-то ладно, это как бы сознательное действие. А вот после перебоя в связи - вот это действительно интересно.

И как удивительно, этот OnTradeTransaction существует уже 10 лет и больше... и вот, наконец, у кого-то возник этот вопрос.

Я-то хоть им не пользуюсь))

Закрытие терминала и обрыв связи по сути в некоторых ситуациях похожи. Для эксперимента можно было отключить интернет, но я думаю, что результат был бы тот же.

Да, как оказалось весьма не надёжная функция, мне пришлось переделать уже несколько советников из за некоторых особенностей её работы.

Теперь стараюсь по возможности её не использовать.

 
Dmitry Fedoseev #:

Закрытие терминала - это-то ладно, это как бы сознательное действие. А вот после перебоя в связи - вот это действительно интересно.

И как удивительно, этот OnTradeTransaction существует уже 10 лет и больше... и вот, наконец, у кого-то возник этот вопрос.

Я-то хоть им не пользуюсь))

У меня робот хранит в файле состояния все свои действующие ордера, при старте и периодически сверяет с тем, что есть на сервере.

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