MQL4 - automated forex trading   /  

Code Base

Code Base  Советники  Копирование сделок с одного счёта на другой (Советники ExpertSource и ExpertReceiver) Авторизуйтесь или зарегистрируйтесь, чтобы добавить новый код

Этот индикатор для
MetaTrader 4

Мобильный трейдинг!
Купите лицензию и торгуйте мобильно

Имя:
Копирование сделок с одного счёта на другой (Советники ExpertSource и ExpertReceiver)
Автор: EvgeTrofi (08.02.2010 11:10)
Скачано: 242
Скачать:
 ExpertSource.mq4 (5.1 Kb) View
 ExpertReceiver.mq4 (22.8 Kb) View

ExpertSource

ExpertSource - советник, предназначенный для передачи информации об изменениях на счёте-источнике. Из счёта, на который установлен данный эксперт, считываются сделки и записываются в текстовый файл.

Внимание! Этот эксперт требует разрешения на иcпользование сторонних библиотек DLL
Эксперт устанавливается на любую пару в терминале со счётом источника сделок.

FileName - имя файла для получателя
Path - каталог получателя (Необходимо назначить папку файлов терминала, в котором будет работать эксперт ExpertReceiver Например: "D:\MetaTraderПолучатель\experts\files")

ExpertReceiver

Эксперт устанавливается на любую пару в терминале со счётом, на который требуется переносить сделки. Назовём его счёт-получатель.
При этом в окне "Обзор рынка" должны быть отображены все необходимые инструменты!!!

FileName - Имя файла в каталоге TerminalPath()+"\experts\files", с которого будут считываться данные о изменениях в ордерах.
MagicStart
, MagicEnd
- Эксперт удаляет только ордера, магики которых входят в указанный здесь интервал. При переносе открытой позиции или отложенного ордера со счёта-источника на счёте-получателе появляется новая позиция (ордер) с магическим числом, равным порядковому номеру сделки (Ticket) на счёте источника. Советник ExpertReciver закрывает позицию по теущей цене, либо удаляет отложенный ордер в случае, если среди существующих позиций на счёте-источнике отсутствует позиция с таким номером (Ticket), как Magic Number у позиции на счёте получателе.
Sensitivity
- Чувствительность сигнала в пунктах. На получателе будут открываться лишь те сделки, цена открытия которых не отличается от указанного здесь количества пунктов. При Sensitivity = 0 сделки будут открываться только если текущая цена абсолютно совпадает с ценой открытия позиции на счёте-источнике.
NewRisk
- Коэффициент изменения риска. Если NewRisk = 1, то лот в счёте получателе будет выставлен с таким же риском, по отношению к свободным средствам, как и в счёте источнике.

Формула для расчёта счёта риска, в данном случае, имеет такой вид:
Risk = OrderLots()*MarketInfo(OrderSymbol(), MODE_MARGINREQUIRED)/AccountEquity();
откуда лот можно выразить так:
lot = (Risk*AccountEquity())/(MarketInfo(mySymbol, MODE_MARGINREQUIRED))

LittleLots - Если true, то при лоте меньше минимальнодопустимого на этом счёте, будет открыт минимальный лот
SP
- SleepPage - предельное отклонение от цены

13 комментариев: 1 2   Авторизуйтесь или зарегистрируйтесь, чтобы добавить новый комментарий
vldim писал(а):

Ваши советники не работают для роботов. Только для ручной торговли. :((( Разочарован.

Неправ. Я разобрался все работает отлично, полноценный советник. Спасибо Автору, то что нужно, вещь.


04.03.2010 01:08 gvi2504

Ваши советники не работают для роботов. Только для ручной торговли. :((( Разочарован.

03.03.2010 23:07 vldim

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

А поэтому в любом случае надо будет держать связь с источником.

08.02.2010 19:38 sergeev

EvgeTrofi писал(а):
История сделок анализируется для случая, когда я вручную закрою позицию, открытую советником, чтобы он её второй раз не открыл. 

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

08.02.2010 18:45 getch
EvgeTrofi писал(а):

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

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

--------------

Есть же не только копировщик сделок (когда на приёмник отсылается параметры ордера). - есть же ещё и приемник сигналов от других экспертов. Когда на приёмник отсылается не ордер, а состояние индикаторов или результат какого то вычисления на сервере. А приёмник сам решает что делать с ними. Но это тоже совсем другая тема, которая выходит за рамки текущей модели простого копировщика сделок.

08.02.2010 18:27 sergeev
sergeev писал(а):

в более простом варианте (если упростить работу приёмника) - то входы/выходы будут полностью рыночными - без стопов. 

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

08.02.2010 17:58 EvgeTrofi
getch писал(а):

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

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


08.02.2010 17:44 EvgeTrofi
getch писал(а):

Не критика, а просто мысли вслух:

система копирования сделок для работы вовсе не должна анализировать историю закрытых сделок. Анализироваться должно только изменение текущих нетто-позиций:

+1 поддерживаю.

в более простом варианте (если упростить работу приёмника) - то входы/выходы будут полностью рыночными - без стопов.

и контроля (как в этом копировщике) Sensitivity. То есть всё осуществляется по итогу работы источника.

08.02.2010 13:12 sergeev

Не критика, а просто мысли вслух:

система копирования сделок для работы вовсе не должна анализировать историю закрытых сделок. Анализироваться должно только изменение текущих нетто-позиций: цена открытия, объем (включая направление). А также текущие отложки (включая SL и TP). Т.е. для копирования сделок история вообще не нужна. Анализ проводится только текущей ситуации и только нетто-позиций (учет структуры нетто-позиций не нужен).

При такой реализации взаимосвязи вообще не нужны. Автоматически появится учет частичного закрытия и CloseBy. И также это никак не скажется на работе других советников и на источнике сделок и на счете-"двойнике".

P.S. MT4-бриджи (STP (еще проше) и ECN) именно так и реализованы. А бриджи - это и есть "копирование" сделок с одного счета на другой.

P.P.S. Забыл главное сказать: Автор - молодец!

08.02.2010 13:00 getch
sergeev писал(а):

2. Ничего лучшего придумать не смог :)

воспользуйтесь глобальными переменными.

В данном случае глобальные переменные - крайне ненадежное решение. Терминал слетел, комп выключился и т.д. и вся связка потерялась. Связи для надежности должны храниться только на стороне торгового сервера. А это либо мэджики, либо комменты, либо "далекие" отложки с использованием всех доступных для модификации полей, либо "далекие" уровни SL и TP для позиций-ордеров, не использующих их.

Повторюсь, хранить локально - это ненадежное решение. Такое решение пока предлагается и на MT5.

Решение с мэджиками видится самым логичным. Диапазон значений с возможными исключениями (для работы остальных советников) можно задавать несложной функцией.

08.02.2010 12:48 getch