Задать expiration в OrderModify

 

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

 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.

 спасибо 

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


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


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

 

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

 

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


Попробуй.

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