Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5

Мастер MQL5 - Торговые сигналы по пересечению двух экспоненциальных скользящих средних - эксперт для MetaTrader 5
- Просмотров:
- 9619
- Рейтинг:
- Опубликован:
- 2011.01.11 20:30
- Обновлен:
- 2016.11.22 07:33
-
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
В статье Создание эксперта без программирования с помощью Мастера MQL5 описаны шаги по автоматическому созданию кода советника при помощи Мастера MQL5.
Здесь мы расскажем о трендовой стратегии, основанной на пересечении двух (быстрой и медленной) экспоненциально сглаженных скользящих средних. Эта стратегия включена в стандартную поставку терминала и называется "Signals based on crossover of two EMA".
Основные положения стратегии:
- Покупка: когда быстрая скользящая средняя пересекает медленную снизу вверх
- Продажа: когда быстрая скользящая средняя пересекает медленную сверху вниз.
Торговая стратегия реализована в классе CSignalCrossEMA.
Рисунок 1. Торговые сигналы стратегии, торгующей по пересечению двух экспоненциально сглаженных скользящих средних
Торговые сигналы
Модуль с торговыми сигналами по данной стратегии реализован в классе CSignalCrossEMA, для удобства проверки условий торговли в нем есть несколько защищенных (protected) методов, которые используются для доступа к значениям индикаторов:
double FastEMA(int ind) // возвращает значение быстрой скользящей средней на указанном баре double SlowEMA(int ind) // возвращает значение медленной скользящей средней на указанном баре double StateEMA(int ind) // возвращает разность между значениями медленной и быстрой средними на указанном баре
1. Открытие длинной позиции
Условия открытия длинной позиции:
- StateEMA(1)>0 и StateEMA(2)<0: быстрая скользящая средняя пересекла медленную снизу вверх на последнем сформировавшимся баре.
//+------------------------------------------------------------------+ //| Проверяет выполнение условий для покупки | //+------------------------------------------------------------------+ bool CSignalCrossEMA::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration) { if(!(StateEMA(2)<0 && StateEMA(1)>0)) return(false); //--- price=0.0; sl =0.0; tp =0.0; //--- return(true); }
2. Закрытие длинной позиции
Условия закрытия длинной позиции:
- StateEMA(1)<0 и StateEMA(2)>0: быстрая скользящая средняя пересекла медленную сверху вниз на последнем сформировавшимся баре.
//+------------------------------------------------------------------+ //| Проверяет выполнение условий для закрытия длинной позиции | //+------------------------------------------------------------------+ bool CSignalCrossEMA::CheckCloseLong(double& price) { if(!(StateEMA(2)>0 && StateEMA(1)<0)) return(false); //--- price=0.0; //--- return(true); }
3. Открытие короткой позиции
Правила открытия короткой позиции аналогичны правилам закрытия длинной позиции.
//+------------------------------------------------------------------+ //| Проверяет выполнение условий для продажи | //+------------------------------------------------------------------+ bool CSignalCrossEMA::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration) { if(!(StateEMA(2)>0 && StateEMA(1)<0)) return(false); //--- price=0.0; sl =0.0; tp =0.0; //--- return(true); }
4. Закрытие короткой позиции
Правила закрытия короткой позиции аналогичны правилам открытия длинной позиции.
//+------------------------------------------------------------------+ //| Проверяет выполнение условий для закрытия короткой позиции | //+------------------------------------------------------------------+ bool CSignalCrossEMA::CheckCloseShort(double& price) { if(!(StateEMA(2)<0 && StateEMA(1)>0)) return(false); //--- price=0.0; //--- return(true); }
Создание эксперта на основе торговых сигналов при помощи Мастера MQL5
Чтобы создать торгового робота по данной стратегии при помощи Мастера MQL5, выберите на втором шаге тип сигналов "Signals based on crossover of two EMA":
Рисунок 2. Выбор модуля сигналов пересечения двух экспоненциально сглаженных скользящих средних в Мастере MQL5
На последующих шагах укажите нужный тип трейлинга и систему управления капиталом. Код эксперта будет создан автоматически, теперь его нужно скомпилировать и можно приступать к тестированию.
Помимо данного модуля сигналов в Стандартной библиотеке также представлен модуль торговых сигналов по пересечению двух скользящих средних "Signals based on crossover of two MA", функционал которого реализован в классе CSignalCrossMA. Он позволяет произвести более гибкую настройку данной торговой системы (помимо периодов скользящих средних он позволяет использовать различные типы и методы усреднения, смещения средних а также работу с уровнями Stop Loss и Take Profit).
Рисунок 3. Модуль сигналов пересечения двух скользящих средних в Мастере MQL5
Результаты тестирования
Результаты тестирования советника на исторических данных (EURUSD H1, период тестирования: 1.1.2010-05.01.2011, FastPeriod=12, SlowPeriod=24).
В данном советнике использовался модуль торговли фиксированным объемом 0.1 лота (Trading Fixed Lot), трейлинг не использовался (Trailing not used).
Рисунок 4. Результаты тестирования советника, использующего стратегию пересечения двух экспоненциально сглаженных скользящих средних
Файл SignalCrossEMA.mqh, содержащий класс торговых сигналов CSignalCrossEMA нужно скопировать в каталог_данных_терминала\MQL5\Include\Expert\Signal.

Скрипт, генерирующий собственный исходный текст. Решение классической задачи на MQL5. Прикладного значения не имеет. Впрочем, может быть полезен изучающим программирование и алгоритмизацию.

Торговые сигналы по пересечению ценой экспоненциальной скользящей средней с подтверждением от индикатора ADX "Signals based on price crossover with MA confirmed by ADX".

Торговые сигналы по пересечению двух экспоненциальных скользящих средних с фильтрацией сделок по временным параметрам "Signals based on crossover of two EMA with intraday time filter".

Торговые сигналы по пересечению основной и сигнальной линий индикатора MACD "Signals based on crossover of main and signal MACD lines" (класс CSignalMACD из Стандартной библиотеки).