Скачать MetaTrader 5

Модификация ордера менее, чем за 10 минут до его истечения

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Ищешь единомышленников? На форуме их много!
Ihor Herasko
9049
Ihor Herasko 2010.12.28 14:55 

Столкнулся со следующей проблемой.

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

             if (!OrderModify(OrderTicket(), NP(price), NP(sl),//Изменение цены открытия,
                              NP(tp), OrderExpiration(), CLR_NONE))      // стопа и профита
               return(false);                      // Вернем ошибку, если не удалось..

Причем, если вместо OrderExpiration вставить 0, то модификация становится возможной. Но в этом случае теряем время истечения...

Владимир Тезис
4266
Владимир Тезис 2010.12.28 15:44  
Попробуйте запомнить время истечения, затем OrderExpiration вставить 0, модифицировать и вернуть обратно время истечения.
o_o
Модератор
23695
o_o 2010.12.28 15:51  
drknn:
Попробуйте запомнить время истечения, затем OrderExpiration вставить 0, модифицировать и вернуть обратно время истечения.
не получится, так как время истечения потом нельзя поставить на 9 минут
Владимир Тезис
4266
Владимир Тезис 2010.12.28 15:59  
Мда, проблема. Ну тогда единственое что остаётся, это после модификации удалить ордер принудительно - то есть возложить на советника проблему отслеживания оставшихся минуток.
Ihor Herasko
9049
Ihor Herasko 2010.12.28 16:06  
drknn:
Мда, проблема. Ну тогда единственое что остаётся, это после модификации удалить ордер принудительно - то есть возложить на советника проблему отслеживания оставшихся минуток.

Да, получается, что тут есть лишь два пути:

1) Организовывать слежение за истечением программно, без применения OrderExpiration()

2) Принимать как данность, что за 10 минут до истечения ордер нельзя модифицировать.

Владимир Тезис
4266
Владимир Тезис 2010.12.28 16:22  
Думаю, что если в торговой системе время истечения ордера критично, то не стОит отнимать у него этот параметр. Дело в том, что время истечения лежит на сервере и при отключении электропитания на стороне клиента, ордер будет удалён вОвремя. Это защитит трейдера от убытков. Верь пока нет света цена может зацепить ордер, затем развернуться и поехать в убыток. Имхо.
Ihor Herasko
9049
Ihor Herasko 2010.12.28 16:34  
drknn:
Думаю, что если в торговой системе время истечения ордера критично, то не стОит отнимать у него этот параметр. Дело в том, что время истечения лежит на сервере и при отключении электропитания на стороне клиента, ордер будет удалён вОвремя. Это защитит трейдера от убытков. Верь пока нет света цена может зацепить ордер. затем развернуться и поехать в убыток. Имхо.

Я полностью согласен с тем, что если есть опция Expiration (некоторые брокеры ее не поддерживают), то необходимо использовать ее. Вот только получается, что использовать до конца преимущества такого подхода невозможно.

В этом случае стоит лишь сокрушаться по поводу различного подхода к параметрам в алгоритме функции OrderModify. Касательно цены открытия, стопа и профита такой проблемы нет, а именно: изменение тейк профит рыночного ордера в непосредственной близости от стопа (уровень ниже StopLevel) возможно:

OrderModify(OrderTicket(), 0, OrderStopLoss(), tp, 0);
и не вызывает никаких ошибок, т.к. MT4 "понимает", что изменяется не стоп, а профит. В случае с истечением ордера это не так: МТ4 расценивает OrderExpiration() как попытку изменения времени истечения.
Alexander
4034
Alexander 2010.12.28 17:26  
Scriptong:

Да, получается, что тут есть лишь два пути:

1) Организовывать слежение за истечением программно, без применения OrderExpiration()

2) Принимать как данность, что за 10 минут до истечения ордер нельзя модифицировать.

Первый предпочтительнее имхо. Т.к. далеко не все брокеры поддерживают экспирацию.
Ihor Herasko
9049
Ihor Herasko 2010.12.28 18:10  
goldtrader:
Первый предпочтительнее имхо. Т.к. далеко не все брокеры поддерживают экспирацию.

Согласен, так и сделал. Необходимость модификации ордера в последние 10 минут его существования перевешивает риск потери связи с сервером. Исходя из современных возможностей дублирования интернет-каналов (доступно человеку со средним доходом) и компьютеров (примерно также), риск потери связи будет близок к нулю. Это утверждение основано на том факте, что раз уж мы доверили программе управление счетом, то должны принять все возможные меры по обеспечению ее бесперебойной работы.

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