ПОЧЕМУ?
В вечернюю сессию сервер подменяет метод экспирации ордера. Вот ответ сервисдеска по этой проблеме:
Рассмотрели Вашу проблему. Поведение платформы корректное. Дело в том, что вечерняя торговая сессия является частью торговой сессией биржи следующего календарного дня. Т.е. бизнес день биржи для календарной даты X состоит из вечерней сессии календарного дня X-1 и основной торговой сессии в календарного дня X. Т.е. сегодня 6 августа с 19-00 начнется вечерняя торговая сессия торгового дня 7го августа. Таким образом, при модификации ордера Вы получаете полностью обновленное описание ордера с корректной датой истечения - Today(истечение после окончания текущей торговой сессии). В примере выше Вы выставили 30го июля ордер с истечением 31го июля, но 30го июля после 19-00 началась вечерняя торговая сессия 31го июля и Вы в эту сессию модифицировали ордер. После модификации выставился корректный тип истечения - Today(истечение после окончания текущей торговой сессии). Дополнительное на своей стороне проверим, почему дата истечения не выставилась корректно в период основного клиринга при переносе многодневных ордеров на следующую сессию. Судя по всему на момент клиринга данные ордера не маркируются на бирже как Today. Проверим дополнительно.
Решение: брать тип экспирации из модифицируемого ордера.
Добрый день!
Уважаемый Yurich!
Из справки MQL5:
ORDER_TIME_DAY - Ордер будет действовать только в течение текущего торгового дня
Конец выдержки из справки.
Дня - это значит до 23:49:59, а не торговой сессии.
т.е Если я установил ордер 19.09.2013 с параметром ORDER_TIME_DAY,
то ордер должен экспирироваться 19.09.2013 до 23:49:59
Беру у установленного ордера время экспирации:
if ( OrderSelect( set_order_ticket ) ) { datetime exp_time = ( datetime )OrderGetInteger( ORDER_TIME_EXPIRATION ); }
Модифицирую ордер:
void ModifyOrder( const string aSymbol, const double price, const datetime expiration ) { MqlTradeRequest request = {0}; MqlTradeResult result = {0}; request.action = TRADE_ACTION_MODIFY; request.magic = MagicNumber; request.symbol = aSymbol; request.order = set_order_ticket; request.price = price; request.type_time = ORDER_TIME_SPECIFIED; request.expiration = expiration; if ( OrderSend( request, result ) ) { if ( result.retcode == TRADE_RETCODE_PLACED ) { set_order_ticket = result.order; } } }
Ордер НЕ модифицируется с ответом "INVALID EXPIRATION"
Как же модифицировать ордер?

- www.mql5.com
Добрый вечер!
Нашел "косяк".
Если взять дату эскпирации установленного 19,09,2013 ордера,
if ( OrderSelect( set_order_ticket ) ) { datetime exp_time = ( datetime )OrderGetInteger( ORDER_TIME_EXPIRATION ); ........................................................
то exp_time = D'2013.09.19 00:00:00', т.е он УЖЕ ПРОСРОЧЕН!!!
Время ORDER_TIME_DAY должно быть 23:49:59, а 00:00:00 это утро 19.09.2013
Остаётся загадкой как же ордер модифицируется в первый раз, а так же устанавливается? :)
Добрый день!
Неужели никто не знает как нужно модифицировать ордер?
Если указывать время экспирации D'2013.09.27 23:49:59'
void ModifyOrder( const string aSymbol, const double price ) { MqlTradeRequest request = {0}; MqlTradeResult result = {0}; request.action = TRADE_ACTION_MODIFY; request.magic = MagicNumber; request.symbol = aSymbol; request.order = set_order_ticket; request.price = price; request.type_time = ORDER_TIME_SPECIFIED; request.expiration = D'2013.09.27 23:49:59'; if ( OrderSend( request, result ) ) { if ( result.retcode == TRADE_RETCODE_PLACED ) { set_order_ticket = result.order; } } }
То же "Invalid expiration"!!?????
Добрый день!
Неужели никто не знает как нужно модифицировать ордер?
Если указывать время экспирации D'2013.09.27 23:49:59'
То же "Invalid expiration"!!?????
Модифицировал лимитные ордера. Везде было
request.type_time=ORDER_TIME_DAY;
проблем не было. Сейчас не торгую на Фортс.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Добрый день!
Устанавливаю ордер, а затем модифицирую его
В первый раз ордер модифицируется, а потом нет (см. вложенный файл).
ПОЧЕМУ?