Описание
Trade Position Copy - это советник-утилита для копирования сделок с одного MT5-счёта или MT4-счёта на другой MT5-счёт или MT4-счёт. Версии для запуска на MT4 и MT5 разные. Данный советник является дальнейшим развитием Real Trade Copy, в котором реализован новый режим копирования: не объемов, а отдельных позиций. Такой режим копирования позволяет реализовать новые возможности, которые были недоступны для режима копирования объемов позиций.
Также проведен глубокий рефакторинг кода:
- Сделан графический интерфейс для установки параметров
- Добавлено автообнаружение работающих отправителей
- Улучшено быстродействие
- Упрощены настройки и убраны параметры, задаваемые до запуска советника
На одном терминале советник запускается в режиме Sender (отправитель), на другом - в режиме Receiver (получатель).
Можно копировать позиции между Netting и Hedging счетами в любых комбинациях. Можно будет устанавливать фильтры по названию инструмента и магическим номерам позиций, которые будут копироваться. Отправитель посылает информацию только о рыночных позициях. Отложенные ордера обрабатываются в момент превращения их в открытые рыночные позиции.
Терминалы должны работать на одном сервере, чтобы у них была одинаковая общая папка данных, через которую они обмениваются данными.
Порядок установки:
- В терминале счёта-отправителя запускаем советник, и в открывшемся диалоге выбираем Sender. Разрешение на торговлю и импорт DLL не требуются.
- В диалоге свойств отправителя можно изменить название (по-умолчанию будет подставлен номер счёта) и запустить кнопкой Start
- В терминале счёта-получателя запускаем советник, и в открывшемся диалоге выбираем Receiver. Разрешение на торговлю требуется, на импорт DLL - не требуются.
- В диалоге свойств получателя должно отобразиться название запущенного отправителя и настройки по-умолчанию, устанавливающие копирование всех совпадающих символов с соотношением объёмов 1:1.
- Если такие настройки устраивают, запускаем получатель кнопкой Start, иначе меняем настройки и запускаем после изменения.
Для копирования MT4 -> MT5 можно использовать Trade Position Copy MT5 как получатель и Trade Position Copy MT4 как отправитель.
Версия для MT5 скоро будет опубликована на Маркете, пока что доступна только версия для МТ4.
Запускать советник в режиме Sender можно на реальном и демо-счёте без какого-то риска, так как он не совершает никаких торговых операций.
Перед использованием советника в режиме Receiver на реальном счете настоятельно рекомендуется подобрать необходимые значения параметров на демо-счёте с параметрами, аналогичными реальному счёту.
Обратите дополнительное внимание на правильную установку параметра Ratio, если на торговых счетах Sender и Receiver используются разные валюты.
1. Параметры Sender (отправителя)
Run Mode: режим работы Sender. При нажатии на кнопку можно поменять режим на Receiver
Sender name: название отправителя. Под этим именем отправитель сохраняет информацию о позициях, а получатель ищет эту информацию
На отправителе этот параметр можно сделать пустым - в этом случае в качестве имени будет использован номер торгового счёта отправителя.
На получателе этот параметр выбирается из списка имён уже запущенных отправителей.
Symbols: выбор символов, с которых будут посылаться данные о позициях и ордерах.
2. Параметры Receiver (получателя)
Run Mode: режим работы Receiver .При нажатии на кнопку можно поменять режим на Sender
Sender name: название отправителя. Список значений формируется автоматически из имён уже запущенных отправителей и постоянно обновляется. Поэтому как только запускается новый отправитель, он сразу появляется в этом списке. Если ни один отправитель не запущен, то список не показывается. Когда хотя бы один отправитель будет запущен, то список покажется снова.
Symbols: названия торговых инструментов, позиции которых будут копироваться. Разделяются символом ";"
Например:
Если на отправителе и получателе инструменты называются по-разному, то можно указать сначала имя инструмента на отправителе, а затем имя инструмента на получателе, разделив их символом "="
Например:
Можно смешивать эти два варианта.
Например:
Если названия инструментов на Sender и Receiver отличаются только префиксами и/или суффиксами, то вместо перечисления всех пар имен торговых инструментов можно указать маску, задающую правило преобразования. В маске символ звёздочки * обозначает совпадающую часть названий торговых инструментов.
Например, если на Sender используются имена торговых инструментов без префиксов и суффиксов, а на Receiver у имен торговых инструментов есть суффикс "_x", то маска должна быть задана таким образом:
Если на Sender используются имена торговых инструментов c префиксом "r" и без суффиксов, а на Receiver у имен торговых инструментов есть префикс "_" и суффикс ".r", то маска должна быть задана таким образом:
Если значение не указано, то получатель будет принимать те символы, которые были в списке Market Watch на момент запуска.
How calculate volumes: Способ расчёта объемов позиций на получателе. Возможен один из трех способов.
- Use fixed ratio: объемы позиций на отправителе умножается на коэффициент Ratio.
R_vol = S_vol * Ratio
- Use balances and ratio: рассчитывается соотношение балансов на получателе и отправителе и умножается на коэффициент Ratio.
R_vol = S_vol * Ratio * (R_bal / S_bal) - 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 - коэффициент из параметра Ratio
R_bal - баланс торгового счёта на Receiver
S_bal - баланс торгового счёта на Sender
R_lev - плечо торгового счёта на Receiver
S_lev - плечо торгового счёта на Sender
Ratio: коэффициент для формул выше.
Использование этого коэффициента со значением, отличным от 1.0, может быть необходимым в двух случаях:
- Если на Sender и Receiver используются разные валюты торговых счетов и при расчёте учитывается соотношение балансов счетов 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.
Другие параметры будут перенесены в графический интерфейс позже.
По мере развития это пост будет пополняться.