Помогите немного в написании советника

 
Я тестирую советника в реале и столкнулся с проблемой не выполнения приказа на закрытие ордера со стороны брокера. То есть советник приказ отдает на закрытие, а брокер не выполняет вовремя, потом цена уходит из этого диапазона и ордер остается открытым.
Выход вижу в том чтобы приказ был на изменение Take Profit, а Stop Loss должен оставаться неизменным, что то подобное Trailing Stop
ModifyOrder и т.д.
 
Изменение тейка сделать не сложно. Я так понимаю, Вы его хотите придвинуть поближе к рынку? Нужен чёткий критерий идентификации условия передвижения тейка. А само перемещение тейка делается аналогично перемещению стопа.
 
KimIV:
Изменение тейка сделать не сложно. Я так понимаю, Вы его хотите придвинуть поближе к рынку? Нужен чёткий критерий идентификации условия передвижения тейка. А само перемещение тейка делается аналогично перемещению стопа.
У меня стоит блок закрытия ордеров это в МТ3, я еще не брался переписывать в МТ4, хочу довести ее до ума сначала в более простом варианте
if TotalTrades>0 then {
for i=1 to TotalTrades {if ord(i,VAL_SYMBOL)=Symbol then {
if buy_close=1 and ord(i,VAL_TYPE)=OP_BUY then {
CloseOrder(Ord(i,VAL_TICKET),Ord(i,VAL_LOTS),Bid,3,red);exit;};
if sell_close=1 and ord(i,VAL_TYPE)=OP_SELL then {
CloseOrder(Ord(i,VAL_TICKET),Ord(i,VAL_LOTS),ask,3,red);exit;};
Я так понимаю в данной ситуации надо заменить на ModifyOrder и перенести Take Profit на 5-6 пунктов (Спред) выше (если это sell) или ниже (если это buy) от текущей цены.
Соответственно в условиях команды buy_close=1 и sell_close=1 я также добавлю 5-6 пунктов.
Я пишу перемещение аналогично перемещению стопа, но команда не выполняется, где то ошибаюсь, не могу понять, если не трудно нарисуйте!
 
Pavlovich:
... и перенести Take Profit на 5-6 пунктов (Спред) выше (если это sell) или ниже (если это buy) от текущей цены.
Вы не ошиблись? ДЦ не позволит так сделать.

Pavlovich:
если не трудно нарисуйте!
в МТ3 не буду, а в МТ4 нарисую. Но сначала правильно сформулируйте задачу.
 
KimIV:
Pavlovich:
... и перенести Take Profit на 5-6 пунктов (Спред) выше (если это sell) или ниже (если это buy) от текущей цены.
Вы не ошиблись? ДЦ не позволит так сделать.

Pavlovich:
если не трудно нарисуйте!
в МТ3 не буду, а в МТ4 нарисую. Но сначала правильно сформулируйте задачу.
Нет не ошибся !
Дело в том что я тестирую в ДЦ http://www.fxbest.ru/ у них спред низкий и разрешается ставить отложенные ордера или Take Profit и Stop Loss всего на один пункт от текущей цены, но они до сих пор работают в МТ3, поэтому я не спешу с написанием в МТ4, но если нарисуете в МТ4 буду очень благодарен.
 
Pavlovich:
Нет не ошибся !
И всё-таки, я думаю, что Вы ошиблись. Цитирую

Pavlovich:
... и перенести Take Profit на 5-6 пунктов (Спред) выше (если это sell) или ниже (если это buy) от текущей цены.
Теперь попробуем разобраться. Операция SELL - это продажа. Торгуем вниз. Стоп стоит вверху, тейк - внизу. Вы предлагаете тейк передвинуть выше цены. Ваш ДЦ позволит это сделать? Ведь по сути, такому ордеру уже надо как бы сработать. С баем аналогично. Проясните, пожалуйста, этот момент.
 
KimIV:
Pavlovich:
Нет не ошибся !
И всё-таки, я думаю, что Вы ошиблись. Цитирую

Pavlovich:
... и перенести Take Profit на 5-6 пунктов (Спред) выше (если это sell) или ниже (если это buy) от текущей цены.
Теперь попробуем разобраться. Операция SELL - это продажа. Торгуем вниз. Стоп стоит вверху, тейк - внизу. Вы предлагаете тейк передвинуть выше цены. Ваш ДЦ позволит это сделать? Ведь по сути, такому ордеру уже надо как бы сработать. С баем аналогично. Проясните, пожалуйста, этот момент.
Я предлагаю перейти на прямое сообщение по электронке
 
KimIV:
Вы не ошиблись? ДЦ не позволит так сделать.
В МТ4 технически допустимо модифицировать любые параметры ордеров.
Единственным ограничением является минимально допустимая дистанция, прнятая на ДЦ.
Это значение сообщается в терминал трейдера для каждой валюты. Получить это значение можно так:
Min_Dist = MarketInfo( Symbol(), MODE_STOPLEVEL);

Единственная особенность состоит в том, что мин. дистанция для отложенных ордеров на 1п больше, чем для открытых (мне так и не удалось выяснить почему это сделано, но на сегодняшний день это так; это касается только расстояния от текущего курса до заявленного курса самого ордера, но не затрагивает дистанцию от куса отл. ордера до SL и ТР).

Обратите внимание на такую особенность.
Если ДЦ оганичивает мин. дист. 5 пунктами, то, скажем, для отл. ордера BuyStop= 1.0000 возможно выставить ТР не ближе, чем 1.0005. Когда ордер будет открыт мин. дист. считается не от Ask, как для отложенного, а от Bid, поэтому в момент, следующий за открытием (при спреде=0. 0003), технически возможно установить ТР на курс 1.0002.
 
Pavlovich:
KimIV:
Pavlovich:
Нет не ошибся !
И всё-таки, я думаю, что Вы ошиблись. Цитирую

Pavlovich:
... и перенести Take Profit на 5-6 пунктов (Спред) выше (если это sell) или ниже (если это buy) от текущей цены.
Теперь попробуем разобраться. Операция SELL - это продажа. Торгуем вниз. Стоп стоит вверху, тейк - внизу. Вы предлагаете тейк передвинуть выше цены. Ваш ДЦ позволит это сделать? Ведь по сути, такому ордеру уже надо как бы сработать. С баем аналогично. Проясните, пожалуйста, этот момент.
Я предлагаю перейти на прямое сообщение по электронке
Попробую разобраться – может, действительно перепутал.

Итак мы купили – бай

Стоп поставили внизу у меня он довольно далеко 250 пунктов, профит поставили на 50 пунктов вверху, но валюта не пошла в нашу сторону и провалилась, к примеру на сто пунктов. Потом приподнялась на 50 пунктов и на этом уровне у меня срабатывает приказ на смену позиции - это продажа. На уровень продажи система выставляет отложенный ордер на 5-8 пунктов выше текущей цены, а также на этот уровень я хочу перенести и профит который должен быть на 5-8 пунктов выше чем текущая цена. Аналогично и с ордером шел.

Значит, я вначале перепутал, сильно извиняюсь!
 
Pavlovich:
Стоп поставили внизу у меня он довольно далеко 250 пунктов, профит поставили на 50 пунктов вверху, но валюта не пошла в нашу сторону и провалилась, к примеру на сто пунктов. Потом приподнялась на 50 пунктов и на этом уровне у меня срабатывает приказ на смену позиции - это продажа. На уровень продажи система выставляет отложенный ордер на 5-8 пунктов выше текущей цены, а также на этот уровень я хочу перенести и профит который должен быть на 5-8 пунктов выше чем текущая цена.
Попробуйте воспользоваться этой функцией. Для её использования нужно предварительно выбрать ордер функцией OrderSelect(). В качестве параметра передавайте нужное Вам значение. Цвет, как параметр можете убрать.
//+------------------------------------------------------------------+ //| Перенос уровня TakeProfit | //| Параметры: | //| ldTake - уровень TakeProfit | //| lcColor - цвет модификации | //+------------------------------------------------------------------+ void ModifyTakeProfit(double ldTake, color lcColor) { double ldOpen=OrderOpenPrice(); double ldStop=OrderStopLoss(); OrderModify(OrderTicket(), ldOpen, ldStop, ldTake, 0, lcColor); }
 
А может просто Slippage увеличить?
Причина обращения: