Скачать MetaTrader 5

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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