작업 종료됨
![](https://c.mql5.com/i/avatar/avatar_na2.png)
명시
Многие пары инструментов рано или поздно вступают в корреляцию (однонаправленное или разнонаправленное симметричное движение). Об этом много писалось на форуме в www.mql5.com
При ручной торговле я использовал онлайн таблицу корреляции:
https://www.oanda.com/lang/ru/forex-trading/analysis/currency-correlation
Рассчитывается корреляция по формуле Пирсона
Как вариант:
Советник должен просчитывать корреляцию валютных пар и открывать коррелирующие пары. Сейчас советник просчитывает корреляцию валют на промежутке времени, заданном в установках советника (например, 120 дней) и проводит торги. Возможно в этом ошибка: надо просчитывать отдельно и сравнивать корреляции за 1 час, 1 день, 1 месяц, 3 месяца, 6 месяцев.
В ручном режиме в таблице на OANDE я искал пары с максимальным коэффициентом корреляции (либо положительной, либо отрицательной) на разных временных интервалах. При этом предпочтение отдавалась левым столбцам (1 час, 1 день, 1 месяц, 3 месяца, 6 месяцев). Когда появляется такая пара инструментов. Я смотрел, чтобы все они были больше 0.8 или меньше -0.8.
Если пара валютных инструментов (например, EURUSD и AUDNOK) в этом периоде времени показала значение корреляции больше (задается в установках) 0.9 (например), то открываются два разнонаправленных ордера (один SELL EURUSD, другой BUY AUDNOK); если корреляция = -0.9...0,99 (отрицательная корреляция), то открываются однонаправленные ордера для обоих пар. Одновременно может быть открыто любое количество пар, заданных в установках советника. Время для открытия подходящих пар - круглосуточно в удобный момент (корреляция большая, индикатор отфильтровал, может что-то ещё).
После достижения парой суммарного (на пару инструментов) профита, например, 10 pips (понимаем, что один инструмент при этом почти всегда в минусе, а другой в большем плюсе, при этом надо учесть накапливающийся своп) начинаем трейлить прибыль и затем закрываем сразу обе пары (оба инструмента). Значение этого профита задается в установках советника, параметры трала - тоже. Хотя пока можно обойтись и без трала.
При этом ведется (возможно в глобальных переменных) фиксированная прибыль (сейчас сделано по-другому). Которая «копится» при закрытии в плюс каждой парой инструментов.
Например, EURUSD имеет профит 1.25 (в валюте депозита), а AUDNOK имеет профит -0.96, то можно закрывать оба эти инструмента. При этом прибыль составит 0.29 в валюте депозита и она (прибыль) пошла в «накопление». Дальше к примеру, накопили 5 единиц в валюте депозита. Тогда надо найти пару инструментов, которая либо долго «висит», либо самая убыточная и потратить на неё, например. 10% от накопленной прибыли, т.е. 0.5 (убыток составит -0.5).
Когда накопленная прибыль позволяет - закрываем самую неперспективную пару инструментов (или самую старую, или самую убыточную, или корреляция стало низкой). При этом от накопленной прибыли должно тратиться не более 10% (значение в установках советника, это может быть и большее значение). Далее: поднабрали прибыль, можно потратить ещё 10% - и опять закрываем "ненужные" пары инструментов.
Таким образом накопив прибыль на нескольких парах инструментов, тратим 10% на "ненужные" (закрываем их); потом опять копим и опять закрываем ненужные. В итоге - идем в плюс.
Советник должен быть сдан в открытом коде (для моей дальнейшей модификации).
Советник должен просчитывать корреляцию валютных пар и открывать коррелирующие пары. Возможно надо подключить и другие инструменты МТ4: металлы, фьючерсы, индексы...
Начало советника во вложенном файле: сейчас он только просчитывает корреляцию валют на промежутке времени, заданном в установках советника (например, 90 дней) и выводит в Print название этих пар. Расчет корреляции достаточно проводить один раз в сутки и где-то записывать название пар на сутки (чтобы не гонять зря терминал и память).
Если пара (например, EURUSD и AUDNOK) в этом периоде времени показала значение корреляции больше (задается в установках) 0.9 (например), то открываются два разнонаправленных ордера (один SELL EURUSD, другой BUY AUDNOK); если корреляция = -0.9...0,99 (отрицательная корреляция), то открываются однонаправленные ордера для обоих пар. При этом направление открытия должно фильтроваться (но не жестко, чтобы не было больших задержек) стандартным индикатором их библиотеки MQL4 (например, Moving Average). Одновременно может быть открыто любое количество пар, заданных в установках советника. Время для открытия подходящих пар - круглосуточно в удобный момент (корреляция большая, индикатор отфильтровал, может что-то ещё).
После достижения парой суммарного (на пару) профита (понимаем, что одна пара при этом почти всегда в минусе, а другая в большем плюсе, при этом надо учесть накапливающийся своп) начинаем трейлить прибыль и затем закрываем сразу обе пары. Значение суммарного профита задается в установках советника, параметры трала - тоже.
При этом ведется (возможно в глобальных переменных) фиксированная прибыль. Когда накопленная прибыль позволяет - закрываем самую неперспективную пару (или самую старую, или самую убыточную, или корреляция стало низкой, или набор из этих условий). При этом от накопленной прибыли должно тратиться не более 10% (значение в установках советника). Далее: поднабрали прибыль, можно потратить 10% - закрываем "ненужные пары".
Советник должен быть протестирован мной на демо счете, а потом сдан в исходном коде (не ex4, a mq4).