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

GRat Order Exchange - библиотека для MetaTrader 5

Просмотров:
1277
Рейтинг:
(13)
Опубликован:
2022.11.30 17:37
Обновлен:
2022.12.01 09:51
MQL5 Фриланс Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Прилагаемые включаемые файлы предназначены для экспорта ордеров и сделок из одного советника и импорта их в другой (копирование сделок), который может быть запущен как в том же самом терминале, так и в другом терминале на том же самом компьютере. Также возможен обмен сделками между разными символами, например, копирование сделок инструмента спотового рынка на соответствующий фьючерс или любой другой коррелирующий с ним инструмент.

Экспорт

Необходимо подключить файл GRat_OrderExport.mqh к своему экспортирующему советнику следующей командой:

#include <GRat_OrderExport.mqh>

Сделать это надо в области входных параметров именно в том месте, где должны быть параметры экспорта:

  • Common - true - нужен экспорт в другой терминал на этом же компьютере; false - нужен экспорт в этот же терминал.
  • KeepSeconds - сколько секунд экспортируемые сделки доступны для импорта. 0 - неограниченно.

Далее в коде советника везде, где выполняются сделки функцией OrderSend() (или методами класса CTrade), необходимо добавить вызов функции ExportOrder(), например:

MqlTradeRequest request = {};
// Рыночная продажа
request.action = TRADE_ACTION_DEAL;
request.symbol = Symbol();
request.volume = 0.2;
request.type = ORDER_TYPE_SELL;
request.price = SymbolInfoDouble(Symbol(), SYMBOL_BID);
request.magic = 20000;
OrderExport(request);

    Структуру MqlTradeRequest можно использовать ту же самую, что и для функции  OrderSend(), но необходимо помимо обязательных заполнить дополнительные поля для действий

     TRADE_ACTION_DEAL(закрытие позиции), TRADE_ACTION_SLTP, TRADE_ACTION_REMOVE и TRADE_ACTION_MODIFY:

    • type (для модификации позиций должно быть ORDER_TYPE_BUY - для длинной позиции и ORDER_TYPE_SELL - для короткой)
    • volume
    • price (только для отложенных ордеров)
    • stoplimit (только для ордеров Stop Limit)
    • sl
    • tp
    • position (положительное значение, только для закрытия позиций)

    Пример реализации экспортирующего советника - GRat_OrderExport.

    Импорт

    Необходимо подключить файл GRat_OrderImport.mqh к своему импортирующему советнику следующей командой:

    #include <GRat_OrderImport.mqh>

    Сделать это надо в области входных параметров именно в том месте, где должны быть параметры импорта:

    • Common - true - нужен импорт из другого терминал на этом же компьютере; false - нужен импорт из этого же терминала.
    • VolumeFactor - множитель для объема. Можно использовать для изменения риска торговли, либо в случае, когда лоты инструментов отличаются, например при копировании сделок со спота на фьючерс и наоборот.
    • PriceFactor множитель для цены. Можно использовать в случае, когда цены коррелирующих инструментов отличаются, например при копировании сделок со спота на фьючерс и наоборот.
    • DeleteAfter - true - удалить все сделки из файла обмена сразу после импорта. Для случая, когда сделки импортируются только в один советник. Если в несколько - задать false.

    Далее для импорта сделок надо вызвать функцию ImportOrder(). Пример вызова:

    MqlTradeRequest aReq[];
    OrderImport(aReq, Magic, Symbol());

      В результате в массив aReq считаются все последние необработанные сделки с магическим числом Magic и символом текущего графика. В последнем параметре задайте другой символ, если он отличается в импортируемых сделках.

      Далее в цикле необходимо выполнить считанные сделки по нужному символу, при необходимости корректируя параметры ордера:

      for (int i = 0; i < ArraySize(aReq); i++)
      {
              aReq[i].symbol = _Symbol;
              aReq[i].price = NormalizeDouble(aReq[i].price, _Digits);
              aReq[i].stoplimit = NormalizeDouble(aReq[i].stoplimit, _Digits);
              aReq[i].sl = NormalizeDouble(aReq[i].sl, _Digits);
              aReq[i].tp = NormalizeDouble(aReq[i].tp, _Digits);
              if (aReq[i].action == TRADE_ACTION_DEAL)
              {
                      ...
              }
              ...
      }
      

      Прилагается пример реализации импортирующего советника, который открывает требуемые сделки на символе своего графика.

      Simple_High_Low_Day_Pending_Order Simple_High_Low_Day_Pending_Order

      Простейший советник, который устанавливает отложенные ордера на некотором расстоянии Indent от экстремумов предыдущего дня.

      The Roofing Filter The Roofing Filter

      "The Roofing Filter Indicator" был создан John Ehlers и опубликован в "Cycle Analytics for Traders" pg. 80 - 82

      Breakeven line Breakeven line

      Индикатор показывает уровень безубытка открытых позиций с учётом свопа и комиссии за сделки.

      Color Levels Color Levels

      Color Levels - удобный инструмент для тех, кто применяет в торговле технический анализ и использует такие инструменты, как Трендовая линия и Прямоугольник.