Смотри, как бесплатно скачать роботов
Ищи нас в Twitter!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Советники

Close All if Take Profit activation - эксперт для MetaTrader 5

Просмотров:
1989
Рейтинг:
(14)
Опубликован:
2020.03.31 11:07
Обновлен:
2020.03.31 11:08
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Принцип работы

Советник ожидает закрытие позиции при срабатывании Take Profit. После этого производится попытка закрыть все позиции (без учёта символа и Magic number) и удалить все отложенные ордера (без учёта символа и Magic number).

Как советник понимает, что позиция была закрыта в результате срабатывания Take Profit:

  • сначала отлавливается транзакция TRADE_TRANSACTION_DEAL_ADD (добавление сделки в историю)
    • проверяем - действительно ли есть эта сделка в истории
  • отфильтруем лишнее: сделка должна быть или BUY или SELL, это должна быть сделка DEAL_ENTRY_OUT (Выход из рынка) или DEAL_ENTRY_INOUT (Разворот)
  • и САМОЕ ГЛАВНОЕ - это должна быть сделка DEAL_REASON_TP (Сделка проведена в результате срабатывания ордера Take Profit)

//+------------------------------------------------------------------+
//| TradeTransaction function                                        |
//+------------------------------------------------------------------+
void OnTradeTransaction(const MqlTradeTransaction &trans,
                        const MqlTradeRequest &request,
                        const MqlTradeResult &result)
  {
//--- get transaction type as enumeration value
   ENUM_TRADE_TRANSACTION_TYPE type=trans.type;
//--- if transaction is result of addition of the transaction in history
   if(type==TRADE_TRANSACTION_DEAL_ADD)
     {
      if(HistoryDealSelect(trans.deal))
         m_deal.Ticket(trans.deal);
      else
         return;
      if(m_deal.DealType()==DEAL_TYPE_BUY || m_deal.DealType()==DEAL_TYPE_SELL)
        {
         if(m_deal.Entry()==DEAL_ENTRY_OUT || m_deal.Entry()==DEAL_ENTRY_INOUT)
           {
            long deal_reason=-1;
            if(m_deal.InfoInteger(DEAL_REASON,deal_reason))
              {
               if((ENUM_DEAL_REASON)deal_reason==DEAL_REASON_TP)
                 {
                  m_need_close_all=true;     // close all positions
                  m_need_delete_all=true;    // delete all pending orders
                 }
              }
           }
        }
     }
  }


RSI Arrow Out of Zone EA RSI Arrow Out of Zone EA

Торговая стратегия на основе сигналов пользовательского индикатора 'RSI Arrow Out of Zone EA'

Tunnel gen4 2 Tunnel gen4 2

Модификация кода 'Tunnel gen4'

Indicators Create Indicators Create

Библиотека (в виде советника) всего необходимого для создания индикаторов в советниках

Close Delete By Loss Or Profit Close Delete By Loss Or Profit

Закрытие всех позиций и удаление отложенных ордеров