Вопрос про OrderModify() и expiration

 

Как сделать чтобы при модификации ордера время его жизни не изменилось?

Экспериментировал с минимальным сроком жизни отложника 10 минут. Если через минуту его модифицировать так OrderModify(OrderTicket(), NewPrice, NewSL, NewTP,OrderExpiration(), CLR_NONE); то выдаёт ошибку 3 (неправильный параметр), если-же вместо OrderExpiration() поставить 0, то время совсем снимается и естественно ордер не удалится.

Есть-ли решение? Или я что-то не так делаю???

 

Время истечения отложенного ордера не может быть меньше 10 минут. Если при модификации это условие нарушается, Вам возвращается ошибка.

Выход - отслеживайте срок истечения в советнике.

 

Может я не совсем точно выразился?

Мне не надо срок жизни ордера сокращать, его надо оставить без изменения. Ведь любой другой параметр можно оставить без изменения, а срок жизни отложника почему-то нельзя.

 
Вы, наверное, тоже не понимаете. Сначала Вы ставите 10 минут истечение, через минуту начинаете изменять ордер и посылаете все новые значения, потому как при модификации Вы должны дать полный список новых значений и хотя Вы знаете, что несколько из них старые, но сервера об этом не знает, для него все новые. И вот это старое для Вас, но новое для сервера значение истечения отличается на 9 минут, поэтому приходит ошибка.
 

Нверное имеется вииду, что можно оставить профит допустим без изменений путём OrderTakeProfit(), а время как оставить прежним?

Если в момент модификации профит остаётся таким же и до него меньше 10 пунктов, то он разве выдаст ошибку, что неправильные стопы? Выдаст вроде.

 

В принципе, Ваш ответ подтвердил мои догадки. Большое спасибо. Но, если не возражаете я поставлю вопрос несколько иначе.

Допустим поставили отложник за пределами СтопЛевел, модифицируем ТП и СЛ ордера, а OrderOpenPrice() уже ближе допустимого уровня...

Пишем OrderModify(OrderTicket(), OrderOpenPrice(), NewSL, NewTP, 0, CLR_NONE); в этом же случае ошибку не выдаёт... А с OrderExpiration() такое не прокатывает...

И ещё, если не менять ни-одного параметра при модификации ордера, то возвращается ошибка 1. Значит, видимо, не всё для сервера "новое".


ps: Я не пытаюсь с Вами спорить.

 
FOReignEXchange:

Нверное имеется вииду, что можно оставить профит допустим без изменений путём OrderTakeProfit(), а время как оставить прежним?

Если в момент модификации профит остаётся таким же и до него меньше 10 пунктов, то он разве выдаст ошибку, что неправильные стопы? Выдаст вроде.


Может этот пример даже лучше подходит...
 
AlexeyVik:

ps: Я не пытаюсь с Вами спорить.

Отчего ж не поспорить, я ведь не разработчик и сам только подстраиваюсь под те законы, которые придумывают разработчики. Раз не идет как хочется - придумываем обходные пути. :)
 
Roger:
Отчего ж не поспорить, я ведь не разработчик и сам только подстраиваюсь под те законы, которые придумывают разработчики. Раз не идет как хочется - придумываем обходные пути. :)

Может у Вас есть решение такого вопроса: Если оборвалась связь с сервером ДЦ, все ордера БайСтоп, СеллСтоп удаляются по возможности быстрее.

 
А как Вы сможете удалить ордера с помощью компьютера, если оборвалась связь с сервером?
 

Вот этим OrderExpiration() и пытался решить вопрос. Просто изгалялся в попытке сократить время жизни отложника. Хотелось сделать так, чтобы при установке ордера назначить ему OrderExpiration() = 10 минут, но во-время модификации ордера не менять OrderExpiration(). Тогда если связь прерывается через 8 минут после последней модификации ордера ему осталось-бы жить всего 2 минуты, а не 10.

Кто знает когда может прерваться связь с сервером??? (это не вопрос. на него отвечать не надо)(смайлик)

А потом, на 9-той минуте опять поставить 10. Но ничего видимо не получится...

Причина обращения: