Скачать MetaTrader 5

Задать expiration в OrderModify

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

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

 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
43473
Dmitry Fedoseev 2010.10.08 03:12  
Это можно только для отложенны ордеров. Переменная datetime expiration=TimeCurrent()+количество секунд. Это количество секунд меньше чем 11 минут быть не должно.
ilias
34
ilias 2010.10.08 07:21  
Integer:
Это можно только для отложенны ордеров. Переменная datetime expiration=TimeCurrent()+количество секунд. Это количество секунд меньше чем 11 минут быть не должно.


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


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

 

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

Vladislav Andruschenko
93952
Vladislav Andruschenko 2010.10.10 16:43  

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


Попробуй.

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