Создать свой сигнал для Эксперта MQL5 - нереально сложная задача.
По сути, подробной документации по созданию сигналов просто нет. Чтобы в них разобраться, приходится вчитываться в большое количество статей и долго анализировать исходные коды включенные в стандартную поставку, натыкаясь по дороге на проблемы, на которые никто не может дать ответ.
А тут еще выясняется, что сигналы нужно еще каким-то чудесным способом комбинировать по совершенно непонятному алгоритму.
Возникает вполне естественное желание не связываться ни с какими комбинированиями и просто запихнуть всё, что нужно в один единственный сигнал.
Да, он распухнет, но хотя бы будет работать как надо.
На самом деле, комбинировать сигнала нужно обязательно. Это очень сильно облегчает разработку, да и алгоритм комбинирования весьма простой, если в нём разобраться.
Комбинирование = использование нескольких сигналов в одном Эксперте (советнике/роботе) MQL5.
Почему стоит комбинировать сигналы, а не делать всё в одном
В чём же прелесть нескольких сигналов по сравнению с одним единственным?
Давайте разберемся..
Весь смак комбинирования сигналов состоит в том, чтобы очень-очень быстро менять критерии срабатывания.
Допустим, Вы сделали заготовку сигнала, запустили его и обнаружили, что он выдаёт лишние сигналы.
Рассмотрим пример:
Представьте, что изучая получившиеся сигналы Вы осознали, что обычно цена отскакивает от средней (красная линия Moving Average), и что если бы Вы покупали НАД средней и продавали ПОД средней, то результат сделок был бы гораздо лучше.
Стрелками на изображении отмечены “неверные сделки”, которые могли бы уйти, если бы сигнал учитывал расположение цены относительно Moving Average (MA).
Как быть? Дописать сигнал, добавив в него анализ Moving Average? Казалось бы, да, но… что обозначает такой подход?
Любая модификация кода обозначает появление новых ошибок
Делая правки в своём сигнале Вы автоматически вызываете возникновения новых ошибок.
Но если код не менять, то ошибок новых не будет, верно?
Т.е. если написать новый сигнал не трогая старый, то в старом сигнале не возникнет ошибок, т.е. в целом система будет устойчивее.
Встраивание всё новых условий в один и тот же сигнал чрезвычайно усложняет логику сигнала
Обычно, чтобы сделать Вашего робота прибыльным, необходимо добавить в него много дополнительных условий.
Вернёмся к нашему примеру. Вот что получилось после добавления в сигнал анализа MA:
Оказалось, что введения MA недостаточно, т.к. в боковиках возникает много ложных убыточных сигналов.
Т.е. следующим шагом будет введение в сигнал дополнительного условия избегания боковика.
Встроить это условие в в старый сигнал? Но это будет обозначать распухание кода, его усложнение и увеличение вероятности ошибки.
А если сделать проверку на боковик отдельным сигналом?
Да это возможно. И гораздо выгоднее, чем пихать всё в одну кучу.
Комбинирование сигналов позволяет быстро изменить одно условие на другое
А если Вы решите вместо MA использовать что-то другое? Как быть?
Вычищать все упоминания MA из сигнала? Или может быть проще заменить один сигнал на другой?
Конечно, замена - гораздо более простой и правильный способ
Как комбинируются сигналы в Эксперте MQL5 - о сложном простыми словами
Алгоритм комбинирования сигналов в Эксперте MQL5 на самом весьма прост.
Для упрощения, давайте рассмотрим только вход в лонг.
Представьте, что у Вас одновременно работают три сигнала:
- основной сигнал, выдающий главное условие.
- дополнительный фильтр, что в лонг можно входить только когда цена находится над MA
- дополнительный фильтр на наличие боковика
Каждый из сигналов возвращает “100”, если его условие сработало, и “0” - если нет.
Эксперт запускает проверку входа в лонг для каждого из сигналов.
Т.е. в каждый момент времени возможны следующие исходы:
- Не сработал ни один сигнал (все 3 сигнала возвратили 0);
- 1 сигнал возвратил 100, а остальные два - 0;
- 2 сигнала возвратили 100, а один - 0;
- все 3 сигнала возвратили 100.
Всё, что делает Эксперт - просто считает среднее арифметическое для каждой из ситуаций:
- (0 + 0 + 0)/3 = 0
- (100 + 0 + 0)/3 = 33.33
- (100 + 100 + 0)/3 = 66.66
- (100 + 100 + 100)/3 = 100
Какая из этих четырех ситуаций нас устраивает? Только одна - четвёртая, верно?
Почему? Да потому, что нужно, чтобы одновременно выполнялись все условия: сработал основной сигнал, цена была НАД MA и не было боковика.
Т.е. все три сигнала возвратили “100” одновременно. Это 4-й вариант в списке.
А теперь подумаем: каким образом Эксперт узнает, что возник 4-й вариант?
Очень просто: по среднему арифметическому.
Если среднее арифметическое сигналов = 100, то это на наша ситуация, верно?
Да, вот так всё просто.
В параметрах советника (которые показываются при его запуске), Вы можете указать значение этого среднего арифметического.
Параметр называется TresholdOpen (Treshold = граница срабатывания, Open = для открытия позиций).
Выставьте TresholdOpen = 100 и Ваш эксперт будет открывать позиции только когда возникнет 4-я ситуация, когда сработали все 3 советника одновременно.
Всё понятно? Всё просто? Думаю, Вы согласитесь, что это действительно довольно просто.
Ну и для того, чтобы немного усложнить процесс, в Эксперте MQL5 есть возможность назначить вес каждому сигналу (по умолчанию вес всех сигналов = 1).
Пусть у первого сигнала вес будет = 0.8, у второго = 0.5, а у третьего = 0.2.
Вот, что мы получим для всех четырех исходов:
- (0*0.8 + 0*0.5 + 0*0.2)/3 = 0
- (100*0.8 + 0*0.5 + 0*0.2)/3 = 26.66
- (100*0.8 + 100*0.5 + 0*0.2)/3 = 43.33
- (100*0.8 + 100*0.5 + 100*0.2)/3 = 50
Если нас устраивает только 4-я ситуация, TresholdOpen нужно выставить в значение “50”. Понятно почему?
Для входа в Short и для закрытия применяется точно такой же алгоритм.
Итого
Как видите, в комбинировании сигналов в Эксперте MQL5 нет никакой особой сложности.
Более того, это наиболее правильный и весьма удобный способ разработки робота.
Комбинирование сигналов позволяет:
- сократить количество ошибок в коде,
- легко добавить новое условие срабатывания,
- легко заменить один сигнал на другой.
Комбинируйте их! И да пребудет с Вами сила!