Скачать MetaTrader 5

Задать expiration в OrderModify

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
ilias
34
ilias  

Есть примерно такой код:

 datetime dt = TimeCurrent() + N;

Print(TimeToStr(dt)); // 1

OrderSelect(...) 

bool ret = OrderModify(<все остальные параметры без изменений>, dt);

Print(ret); // 2

Print(TimeToStr(OrderExpiration())); // 3

в 1 печатается нормальное время, я ставлю где-то на сутки вперед

в 2 печатается 1 (и ошибок никаких в логе нету)

в 3 печатается  1970.01.01 00:00

 Подскажите пожалуйста как правильно задать expiration именно в OrderModify.

 спасибо 

Dmitry Fedoseev
45310
Dmitry Fedoseev  
Это можно только для отложенны ордеров. Переменная datetime expiration=TimeCurrent()+количество секунд. Это количество секунд меньше чем 11 минут быть не должно.
ilias
34
ilias  
Integer:
Это можно только для отложенны ордеров. Переменная datetime expiration=TimeCurrent()+количество секунд. Это количество секунд меньше чем 11 минут быть не должно.


Ордера вроде отложенные. BUYLIMIT и SELLLIMIT. Время где-то на сутки вперед ставлю. Нигде никто никаких ошибок не выдает. Это-то и странно.
Dmitry Fedoseev
45310
Dmitry Fedoseev  
Некоторые ДЦ не поддерживают время истечения ордера. Попробуйте вручную из окна ордера.
ilias
34
ilias  
Integer:
Некоторые ДЦ не поддерживают время истечения ордера. Попробуйте вручную из окна ордера.


Попробовал. Вручную всё ставится нормально.
ilias
34
ilias  
В итоге всё вроде бы заработало, но как-то уж очень странно: когда ставится expire в первый раз - всё проходит без ошибок, но вызванная OrderExpiration() тут же после установки возвращает 0. При попытке поставить expire во второй раз тому же ордеру, проверка на то, что у него уже есть expiration возвращает время, установленное в первый раз.
Dmitry Fedoseev
45310
Dmitry Fedoseev  
ilias:
В итоге всё вроде бы заработало, но как-то уж очень странно: когда ставится expire в первый раз - всё проходит без ошибок, но вызванная OrderExpiration() тут же после установки возвращает 0. При попытке поставить expire во второй раз тому же ордеру, проверка на то, что у него уже есть expiration возвращает время, установленное в первый раз.

 

После модификации надо снова  сделать ОrderSelect().

Vladislav Andruschenko
99694
Vladislav Andruschenko  

сталкивался с похожей проблемой, долго мучался, помог перевод из TimeCurrent в string и обратно StringToTime .


Попробуй.

Dm
107
Dm  
Integer:
Это можно только для отложенны ордеров. Переменная datetime expiration=TimeCurrent()+количество секунд. Это количество секунд меньше чем 11 минут быть не должно.
а почему 11 минут?
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий