Real Trade Copy. Описание и настройки

22 марта 2022, 22:42
Yuriy Bykov
10
521

Описание

Real Trade Copy (RTC) - это советник-утилита для копирования сделок с одного MT5-счёта или MT4-счёта на другой MT5-счёт или MT4-счёт. Версии для запуска на MT4 и MT5 одинаковые по функциональности, но доступны на Маркете только как разные продукты.

Можно копировать позиции между Netting и Hedging счетами в любых комбинациях. Можно устанавливать фильтры по названию инструмента и магическим номерам позиций, которые будут копироваться. Пока что источник посылает информацию только о рыночных позициях. Отложенные ордера обрабатываются в момент превращения их в открытые рыночные позиции.

На одном терминале советник запускается в режиме Sender (отправитель), на другом - в режиме Receiver (получатель).

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

Порядок установки:

  1. В терминале счёта-отправителя запускаем советник, указав в параметрах:
    • Run As = SENDER->
    • Sender name = [любое имя, пригодное для имени файла]. Можно сделать его пустым, тогда в качестве имени будет использоваться номер торгового счёта отправителя.
  2. Дожидаемся, пока запущенный отправитель отобразит в окне графика "Status: OK"
  3. В терминале счёта-получателя запускаем советник, указав в параметрах:
    • Run As = ->RECEIVER
    • Sender name = [имя, выбранное для отправителя].
    • Остальные параметры для получателя (подробности ниже).
  4. Дожидаемся, пока запущенный получатель отобразит в окне графика "Status: OK" или смотрим в логах описание ошибки, если "Status: ERROR"
Для копирования MT5 -> MT4 можно использовать Real Trade Copy MT5 как отправитель и Real Trade Copy MT4 как получатель.

Для копирования MT4 -> MT5 можно использовать Real Trade Copy MT5 как получатель и Real Trade Copy MT4 как отправитель.

Запускать советник в режиме Sender можно на реальном и демо-счёте без какого-то риска, так как он не совершает никаких торговых операций. Можно даже не выдавать в параметрах разрешение на торговлю, это не помешает его корректной работе.

Перед использованием советника в режиме Receiver на реальном счете настоятельно рекомендуется подобрать необходимые значения параметров на демо-счёте с параметрами, аналогичными реальному счёту.

Обратите дополнительное внимание на правильную установку параметра 2.1.1. Ratio, если на торговых счетах Sender и Receiver используются разные валюты.

Важные принципы

При создании и дальнейшей разработке использовались следующие основные принципы:

  • Receiver работает один.
    Торговый счёт, на котором работает Receiver, желательно использовать только для копирования сделок и только с одного Sender.
    В дальнейшем планируется добавить возможность копировать сделки от нескольких Sender.
    Вести одновременную торговлю вручную или запуская другие советники не рекомендуется.

    Но такое не всегда удобно, поэтому, если все-таки этот принцип не удается соблюсти, то можно попробовать сделать следующее.
    Если использовать Hedging-счёт, то в принципе, можно делать на нем всё, что угодно, одновременно с работой Receiver, если другие эксперты не будут использовать его Magic.
    Это касается и других экземпляров Receiver - с разными значениями Magic они должны спокойно работать на одном Hedging-счёте.
    Если случайно закрыть позицию, открытую Receiver, то он ее переоткроет (но еще один спред будет потерян).

    Для Netting-счетов решения пока нет, поэтому использование Receiver с одновременной ручной или автоматической торговлей может привести к непредсказуемым результатам.

  • Копируются объемы. Постоянно.
    Sender сохраняет информацию об открытых объемах, а не событиях открытия и закрытия позиций.
    Поэтому Receiver постоянно поддерживает нужный объем открытых позиций по каждому инструменту.

  • Отложенные ордера не копируются.
    В текущей реализации такой возможности не предусмотрено из-за сложностей с обеспечением точности копирования при возможных различиях котировок на счетах Sender и Receiver.
    Например, потенциально проблемными представляются ситуации, когда на Sender отложенный ордер уже превратился в открытую позицию, а на Receiver - еще нет. Или наоборот.
    Возможно, это будет решено при добавлении нового режима копирования - Each Position.
    Но при превращении любого отложенного ордера в открытую позицию она сразу же будет скопирована.

  • SL и TP не копируются.
    Используются только виртуальные SL и TP - как только SL или TP срабатывает на Sender и закрывает какой-то объем, то на Receiver сразу же будет тоже закрыт соответствующий объём.
    Это сделано для защиты от повторных открытий позиций при срабатывании SL или TP на Receiver без срабатывания на Sender.

Для дополнительного внимания к соблюдению этих принципов добавлены параметры 2.3 и 2.4 (см. ниже). При обнаружении несоответствия их значений допустимым, советник не будет совершать никаких действий.
Это сделано исключительно в целях предотвращения возможных убытков при неправильном применении, а не для создания каких-либо искусственных ограничений.

Если что-то из этого кажется неправильным, пишите в комментариях.

1. Общие параметры

1.1. Run as: Режим работы.

  • SENDER->: как отправитель,
  • ->RECEIVER: как получатель,
  • SELF<->COPY: как умножитель объемов на счёте с Hedging (пока не протестировано)

1.2. Sender name: название отправителя. Под этим именем отправитель сохраняет информацию о позициях, а получатель ищет эту информацию
На отправителе этот параметр можно сделать пустым (убрав значение по-умолчанию 'account') - в этом случае в качестве имени будет использован номер торгового счёта отправителя.
На получателе этот параметр должен быть обязательно указан и совпадать одним из имён уже запущенных отправителей.

1.3. Symbols, separated by ';': названия торговых инструментов, позиции которых будут копироваться. Разделяются символом ";"
Например: EURGBP;EURUSD;GBPUSD
Если на отправителе и получателе инструменты называются по-разному, то можно указать сначала имя инструмента на отправителе, а затем имя инструмента на получателе, разделив их символом "="
Например: EURUSD_x=EURUSD;GOLD=XAUUSD
Можно смешивать эти два варианта.
Например: GOLD=XAUUSD;EURGBP;EURUSD;GBPUSD
Если значение не указано, то отправитель будет посылать все символы, а получатель будет принимать те символы, которые были в списке Market Watch на момент запуска.


2. Параметры Receiver (получателя)

2.1. How calculate volumes on receiver (R_vol)?: Способ расчёта объемов позиций на получателе. Возможен один из трех способов.

  • Use balances, leverage and ratio: рассчитывается соотношение балансов и плеч на получателе и отправителе и умножается на коэффициент Ratio. Если плечо на получателе больше, то их соотношение считается равным 1.


    R_vol = S_vol * Ratio * (R_bal / S_bal) * (R_lev / S_lev),
    где
    R_vol - объем позиции на Receiver
    S_vol - объем позиции на Sender
    Ratio - коэффициент из параметра 2.1.1
    R_bal - баланс торгового счёта на Receiver
    S_bal - баланс торгового счёта на Sender
    R_lev - плечо торгового счёта на Receiver
    S_lev - плечо торгового счёта на Sender

  • Use balances and ratio: рассчитывается соотношение балансов на получателе и отправителе и умножается на коэффициент Ratio.


    R_vol = S_vol * Ratio * (R_bal / S_bal)

  • Use fixed ratio: объемы позиций на отправителе умножается на коэффициент Ratio.

    R_vol = S_vol * Ratio

2.1.1. Ratio: коэффициент для формул выше.
Использование этого коэффициента со значением, отличным от 1.0, может быть необходимым в двух случаях:

  • Если на Sender и Receiver используются разные валюты торговых счетов.

    Например, предположим, что используется RUB на Sender и USD на Receiver. На оба счёта было внесено по 1000 USD (что превратилось условно в 100 000 RUB на Sender). Тогда величина соотношения балансов
    (R_bal / S_bal) = 1000 / 100000 = 0.01.
    В этом случае необходимо установить Ratio = 100, чтобы получить на Receiver открытие позиций такого же объема, как и на Sender. Если этого не сделать, то для небольших объемов на Sender позиции на Receiver открываться не будут, так как их размер, уменьшенный в 100 раз, скорее всего, будет меньше минимально возможного размера позиции на Receiver.

    В обратной ситуации, предположим, что используется USD на Sender и RUB на Receiver. На оба счёта снова было внесено по 1000 USD (что превратилось условно в 100 000 RUB но теперь уже на Receiver). Тогда величина соотношения балансов
    (R_bal / S_bal) = 100000 / 1000 = 100.
    В этом случае необходимо установить Ratio = 0.01, чтобы получить на Receiver открытие позиций такого же объема, как и на Sender. Если этого не сделать, то для небольших объемов на Sender позиции на Receiver открываться размером в 100 раз больше, что очень опасно.

  • Если надо пропорционально изменить размер позиций на Sender по сравнению с Receiver.


2.3. Reopen manualy closed positions: Автоматическое открытие закрытых вручную позиций. Пока что реализован только режим со значением True.

2.4. Allow manual or other EA trading: Корректная работа возможна при параллельной ручной торговле только на Hedging-счетах.
Для Netting-счетов этот параметр должен быть равен False

2.5. Open Pending Orders (PO) instead Positions: Включает режим, при котором вместо открытия позиций по текущей цене будут открываться отложенные ордера по лучшей цене.
В этом случае для каждой открываемой позиции из отложенного ордера прибыль будет больше, но чем дальше будет устанавливаться ордер от текущей цены, тем меньше вероятность, что он сможет превратиться в позицию.
Для этого режима можно поставить свои уровни Stop Loss и Take Profit. При достижении этих уровней позиция будет закрыта на Receiver и сразу же будет выставлен новый отложенный ордер.
При закрытии позиций на Sender на Receiver сначала будут удаляться отложенные ордера и только потом, если нужный объем еще не закрыт, будут закрываться открытые позиции.

2.5.1. Price delta for PO: Расстояние, на котором будет выставляться отложенный ордер от текущей цены.
В этом и следующих параметрах для отложенных ордеров можно указать либо одно числовое значение, которое будет использовано для всех инструментов, либо несколько числовых значений, разделённых символом ';'. В этом случае количество значений обязательно должно совпадать с количеством инструментов, указанных в параметре [1.3. Symbols] или с количеством инструментов в Market Watch, если этот параметр пустой. Порядок значений должен соответствовать порядку инструментов.

2.5.2. Stop Loss for PO: Stop Loss для отложенных ордеров

2.5.3. Take Profit for PO:  Take Profit для отложенных ордеров

2.5.4. Time for reopen PO: Время истечения отложенных ордеров (в секундах), после которого они будут выставлены снова


3. Параметры фильтров для получателя

3.1. Magics, separated by ';' or empty for all: фильтр позиций по магическому номеру. Если значение не пустое, то разрешены только перечисленные номера


4. Настройки защиты

4.1. Minimal Margin for open new Positions: Минимальный размер маржи при котором будут копироваться новые позиции.
Если маржа будет меньше этого значения, то Receiver будет выполнять только операции закрытия уже существующих позиций. Когда маржа станет больше, позиции будут открываться снова.



Данный советник остается пока на Маркете, но дальнейшее развитие будет происходить в двух других продуктах:

  • Trade Volume Copy MT4/MT5 - реализует режим копирования объемов. Аналогичен RTC только с графическим интерфейсом настроек. Первая версия, реализующая основную функциональность, уже выложена, далее будет дорабатываться в основном интерфейс настроек.
  • Trade Position Copy MT4/MT5 - реализует режим копирования отдельных позиций (ордеров в MT4). В этом режиме открывается много новых возможностей по настройке работы копировщика, недоступных в режиме копирования объемов: настройка собственных уровней SL, TP, безубытка, приостановки копирования, фильтрации копируемых позиций по разным признакам и прочее. Такого режима нет в RTC.

По мере развития это пост будет пополняться.


Поделитесь с друзьями: