Стоп Лосс и Тейк Профит для отложенных ордеров.

 
Советники выставляющие СЛ и ТП для открытых позиций есть. Нужен точь такой же, но для отложенных ордеров. Возможно ли его вообще создать? В КодоБазе не попался такой, поэтому и спрашиваю.
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Свойства ордеров - Торговые константы - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vladimir Gulakov:
Советники выставляющие СЛ и ТП для открытых позиций есть. Нужен точь такой же, но для отложенных ордеров. Возможно ли его вообще создать? В КодоБазе не попался такой, поэтому и спрашиваю.

https://www.mql5.com/ru/code/33444

При открытии ордера, выставляет стоп и тейк. 

Или нужен, чтоб робот отслеживал появление новых ордеров и выставлял им стоп и тейк? Если так, то не знаю где брать (бесплатно).

 
Vladimir Gulakov:
Советники выставляющие СЛ и ТП для открытых позиций есть. Нужен точь такой же, но для отложенных ордеров. Возможно ли его вообще создать? В КодоБазе не попался такой, поэтому и спрашиваю.
В коде, где отсев нужных ордеров поменяйте тип ордеров на отложенные и их модифицируйте
 
Vladimir Gulakov:
Советники выставляющие СЛ и ТП для открытых позиций есть. Нужен точь такой же, но для отложенных ордеров. Возможно ли его вообще создать? В КодоБазе не попался такой, поэтому и спрашиваю.

Время будет, выложу в кодобазу.

#include <Trade\Trade.mqh>
CTrade         m_trade;

input double SL = 0;
input double TP = 0;
input bool   All_Charts = true;
//+------------------------------------------------------------------+
void OnTick()
  {
   for(int i = OrdersTotal() - 1; i >= 0; i--)
      if(OrderGetTicket(i) && (All_Charts || OrderGetString(ORDER_SYMBOL) == _Symbol))
        {
         bool Modify = false;
         string symbol = OrderGetString(ORDER_SYMBOL);
         double _SL = OrderGetDouble(ORDER_SL);
         double _TP = OrderGetDouble(ORDER_TP);

         if(SL != 0 && _SL == 0)
           {
            if(OrderGetInteger(ORDER_TYPE) == ORDER_TYPE_BUY_LIMIT || OrderGetInteger(ORDER_TYPE) == ORDER_TYPE_BUY_STOP || OrderGetInteger(ORDER_TYPE) == ORDER_TYPE_BUY_STOP_LIMIT)
               _SL = IsNormalizePrice(symbol, OrderGetDouble(ORDER_PRICE_OPEN) - SL * SymbolInfoDouble(symbol, SYMBOL_POINT));
            else
               _SL = IsNormalizePrice(symbol, OrderGetDouble(ORDER_PRICE_OPEN) + SL * SymbolInfoDouble(symbol, SYMBOL_POINT));
            Modify = true;
           }

         if(TP != 0 && _TP == 0)
           {
            if(OrderGetInteger(ORDER_TYPE) == ORDER_TYPE_BUY_LIMIT || OrderGetInteger(ORDER_TYPE) == ORDER_TYPE_BUY_STOP || OrderGetInteger(ORDER_TYPE) == ORDER_TYPE_BUY_STOP_LIMIT)
               _TP = IsNormalizePrice(symbol, OrderGetDouble(ORDER_PRICE_OPEN) + TP * SymbolInfoDouble(symbol, SYMBOL_POINT));
            else
               _TP = IsNormalizePrice(symbol, OrderGetDouble(ORDER_PRICE_OPEN) - TP * SymbolInfoDouble(symbol, SYMBOL_POINT));
            Modify = true;
           }

         if(Modify)
           {
            if(!TerminalInfoInteger(TERMINAL_TRADE_ALLOWED))
               return;
            if(!MQLInfoInteger(MQL_TRADE_ALLOWED))
               return;
            m_trade.OrderModify(OrderGetTicket(i), OrderGetDouble(ORDER_PRICE_OPEN), _SL, _TP, (ENUM_ORDER_TYPE_TIME)OrderGetInteger(ORDER_TYPE_TIME), OrderGetInteger(ORDER_TIME_EXPIRATION));
           }
        }
  }
//+------------------------------------------------------------------+
double IsNormalizePrice(string symbol, double price)
  {
   double tick_size = 0;
   SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_SIZE, tick_size);
   return(NormalizeDouble(MathRound(price / tick_size) * tick_size, (int)SymbolInfoInteger(symbol, SYMBOL_DIGITS)));
  }
//+------------------------------------------------------------------+

При настройке All_Charts = true,  будет ставить стоплосы и тейки на всех графиках, если false, то только на том где запущен советник.

Файлы:
0001.mq5  6 kb
 
Внесены дополнения в советник. Теперь можно выбрать режим работы с позициями, ордерами или и с позициями, и с ордерами.
Советники: SL_TP
Советники: SL_TP
  • 2022.12.15
  • www.mql5.com
Статьи и техническая библиотека по автоматическому трейдингу: Советники: SL_TP
 
Alexey Viktorov #:
Внесены дополнения в советник. Теперь можно выбрать режим работы с позициями, ордерами или и с позициями, и с ордерами.
trans.order_type%2

Лайк)

 
Aleksandr Slavskii #:

https://www.mql5.com/ru/code/33444

При открытии ордера, выставляет стоп и тейк. 

Или нужен, чтоб робот отслеживал появление новых ордеров и выставлял им стоп и тейк? Если так, то не знаю где брать (бесплатно).

По разному пробовал https://www.mql5.com/ru/code/33444 . СЛ и ТП на отложенных ордерах так и не выставился. На текущих тоже.

Ордера и настройки Советника прилагаю...

https://www.mql5.com/ru/code/33444

Quick_deals_EA. Горячие клавиши плюс клик левой кнопки мыши на графике.
Quick_deals_EA. Горячие клавиши плюс клик левой кнопки мыши на графике.
  • www.mql5.com
Советник открывает сделки, выставляет лимитные и стоповые ордера, удаляет ордера и закрывает позиции, также делает реверс открытых позиций, выставляет прописанные в настройках стоп лосс и тейк профит.
 
Valeriy Yastremskiy #:
В коде, где отсев нужных ордеров поменяйте тип ордеров на отложенные и их модифицируйте

Спасибо за совет. Когда нибудь возможно я начну всерьез вникать в коды. Но не сейчас...

 
Aleksandr Slavskii #:

Время будет, выложу в кодобазу.

При настройке All_Charts = true,  будет ставить стоплосы и тейки на всех графиках, если false, то только на том где запущен советник.

Ну если будет возможность желательно чтобы выложили... Только на всех графиках с моей точки зрения излишне. Достаточно только на текущем. И абсолютно согласен с вами что кроме СЛ и ТП других настроек и не надо по возможности.

 
Vladimir Gulakov #:

По разному пробовал https://www.mql5.com/ru/code/33444 . СЛ и ТП на отложенных ордерах так и не выставился. На текущих тоже.

Ордера и настройки Советника прилагаю...

Проверил, всё ставится, и ордера, и стоплосы, и тейкпрофиты. 

Судя по всему, вы запустили советник, а отложенные ордера выставляли каким то другим образом, а не этим советником.

Вы попробуйте советником поставить ордера, это же удобнее чем через контекстное меню.

 
Vladimir Gulakov #:

Ну если будет возможность желательно чтобы выложили... Только на всех графиках с моей точки зрения излишне. Достаточно только на текущем. И абсолютно согласен с вами что кроме СЛ и ТП других настроек и не надо по возможности.

Вы не смогли воспользоваться тем кодом, что я выложил?

Я добавил файл с советником под комментом с кодом.