Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Нужен программист? Оставь заказ и он сам тебя найдет!
Stanislav Korotky
16469
Stanislav Korotky 2016.11.10 23:31 

Прогнал в тестере эксперт, который выставляет отложенные ордера. Для них задается срок экспирации. После автоматического истечения ордеров распечатываю их с помощью OrderPrint. Согласно логам получается, что OrderCloseTime для таких ордеров на 1 бар позже срока экспирации (тестирование по ценам открытия на H1). Отсюда вопрос: значит ли, что дата истечения на самом деле указывает последнее время действия ордера? Тогда наблюдаемое поведение правильно, но документация неточна. Если же время истечения - это именно время, когда ордер нужно снимать, то тогда имхо время закрытия должно с ним совпадать. Получается баг.

В документации сейчас написано:

Если до этого времени ордер не сработает, он будет удален автоматически. 

Получается, что сниматься он должен именно в указанные дату/время экспирации, и тогда OrderCloseTime не может быть больше. 

Часть лога для примера:

#2 2016.09.01 00:00:00 sell stop 0.01 GBPJPY 135.386 135.856 0.000 2016.09.01 03:00:00 135.672 0.00 0.00 0.00 expiration 0 expiration 2016.09.01 02:00
#1 2016.09.01 00:00:00 buy stop 0.01 GBPJPY 136.265 135.856 0.000 2016.09.01 03:00:00 135.722 0.00 0.00 0.00 expiration 0 expiration 2016.09.01 02:00

Красным подчеркнуто время удаления, синим - время истечения.
 

fxsaber
3275
fxsaber 2016.11.10 23:51  
Stanislav Korotky:

Получается, что сниматься он должен именно в указанные дату/время экспирации, и тогда OrderCloseTime не может быть больше.

Вроде, это фича тестера. Если сделать OrderDelete, то ClosePrice будет равен следующему бару. Это в каком-то смысле и логично, потому что неизвестно, в какое время текущего бара шло удаление.

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

Stanislav Korotky
16469
Stanislav Korotky 2016.11.10 23:59  
fxsaber:

Вроде, это фича тестера. Если сделать OrderDelete, то ClosePrice будет равен следующему бару. Это в каком-то смысле и логично, потому что неизвестно, в какое время текущего бара шло удаление.

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

Спасибо за наводку. Хотя ИМХО этот как раз не логично. Почему ордер не может быть удален в начале именно того бара, когда была вызвана функция OrderDelete или сработала автоэкспирация? Время известно. В реальности, если указано удалить в 9:00, то будет удален в 9:00 и дальнейшее развитие этого бара нас не колышет. Я даже больше скажу - согласно "отквоченной" документации ("до этого времени") - бар целиком не должен нас колышить, включая его цену открытия - не имеет права он уже срабатывать.
fxsaber
3275
fxsaber 2016.11.11 00:08  

Экспирацию осуществляет торговый сервер. При этом отложенник может висеть на третьей стороне.

В момент экспирации отложенник может зафиллиться на третьей стороне, хоть процесс удаления по экспирации торговым сервером уже запущен. Просто торговый сервер получит отлуп на свою попытку удаления отложенника. Поэтому и для тестера такая логика вполне уместна.

Ihor Herasko
8471
Ihor Herasko 2016.11.11 11:10  
Stanislav Korotky:

Согласно логам получается, что OrderCloseTime для таких ордеров на 1 бар позже срока экспирации (тестирование по ценам открытия на H1).  

В режиме теста "По ценам открытия" все операции будут иметь время начала следующего бара после фактического исполнения операции, т. к. в этом режиме на один бар приходится только один тик. Проверьте в режиме "Все тики" - там все будет точно.
Stanislav Korotky
16469
Stanislav Korotky 2016.11.12 17:12  
Ihor Herasko:
В режиме теста "По ценам открытия" все операции будут иметь время начала следующего бара после фактического исполнения операции, т. к. в этом режиме на один бар приходится только один тик. Проверьте в режиме "Все тики" - там все будет точно.
Ну, эта логика мне не понятна. Пусть будет один тик на бар. Если задано время экспирации, совпадающее с временем бара, тестер должен удалить на этом тике ордер (одного тика достаточно). Могу догадываться, что MQ специально сделали задержку на бар, чтобы имитировать распределенность серверной части (как рассказал fxsaber).
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий