Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
Мастер MQL5 - Торговые сигналы по пересечению основной и сигнальной линий индикатора MACD - эксперт для MetaTrader 5
- Просмотров:
- 6585
- Рейтинг:
- Опубликован:
- 2011.01.13 20:19
- Обновлен:
- 2017.09.05 16:46
- Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
В статье Создание эксперта без программирования с помощью Мастера MQL5 описаны шаги по автоматическому созданию кода советника при помощи Мастера MQL5.
Здесь мы расскажем о трендовой стратегии, основанной на использовании линий индикатора MACD. Эта стратегия включена в стандартную поставку терминала и называется "Signals based on crossover of main and signal MACD lines".
В основе индикатора MACD лежат быстрая EMA (FastEMA) и медленная EMA (SlowEMA). На основе этих линий строится основная линия MACD как разность между быстрой EMA и медленной EMA. Сигнальная линия индикатора MACD получается сглаживанием основной линии MACD с периодом PeriodSignal.
Основные положения стратегии:
- Покупка: когда основная линия индикатора MACD пересекает сигнальную линию MACD снизу вверх.
- Продажа: когда основная линия индикатора MACD пересекает сигнальную линию MACD сверху вниз.
Торговая стратегия реализована в классе CSignalMACD из Стандартной библиотеки (расположена в MQL5\Include\Expert\Signal\SignalMACD.mqh)
Рисунок 1. Торговые сигналы стратегии, торгующей по пересечению основной и сигнальной линий индикатора MACD
Торговые сигналы
Модуль с торговыми сигналами по данной стратегии реализован в классе CSignalMACD, для удобства проверки условий торговли в нем есть несколько защищенных (protected) методов, которые используются для доступа к значениям линий индикатора MACD и их расчету их взаимных положений:
double MainMACD(int ind) // возвращает значение основной линии MACD на указанном баре double SignalMACD(int ind) // возвращает значение сигнальной линии MACD на указанном баре double StateMACD(int ind) // возвращает разность между основной и сигнальной линиями на указанном баре int ExtStateMACD(int ind); // возвращает кол-во изменений знака разности между основной и сигнальной линиями MACD
1. Открытие длинной позиции
Условия открытия длинной позиции:
- ExtStateMACD(1)==1; определяется факт пересечения снизу вверх основной и сигнальной линий индикатора MACD
//+------------------------------------------------------------------+ //| Проверяет выполнение условий для покупки | //+------------------------------------------------------------------+ bool CSignalMACD::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration) { price=0.0; sl =m_symbol.Ask()-m_stop_loss*m_adjusted_point; tp =m_symbol.Ask()+m_take_profit*m_adjusted_point; //--- return(ExtStateMACD(1)==1); }
2. Закрытие длинной позиции
Условия закрытия длинной позиции:
- ExtStateMACD(1)==-1; определяется факт пересечения сверху вниз основной и сигнальной линий индикатора MACD
//+------------------------------------------------------------------+ //| Проверяет выполнение условий для закрытия длинной позиции | //+------------------------------------------------------------------+ bool CSignalMACD::CheckCloseLong(double& price) { price=0.0; //--- return(ExtStateMACD(1)==-1); }
3. Открытие короткой позиции
Правила открытия короткой позиции аналогичны правилам закрытия длинной позиции.
//+------------------------------------------------------------------+ //| Проверяет выполнение условий для продажи | //+------------------------------------------------------------------+ bool CSignalMACD::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration) { price=0.0; sl =m_symbol.Bid()+m_stop_loss*m_adjusted_point; tp =m_symbol.Bid()-m_take_profit*m_adjusted_point; //--- return(ExtStateMACD(1)==-1); }
4. Закрытие короткой позиции
Правила закрытия короткой позиции аналогичны правилам открытия длинной позиции.
//+------------------------------------------------------------------+ //| Проверяет выполнение условий для закрытия короткой позиции | //+------------------------------------------------------------------+ bool CSignalMACD::CheckCloseShort(double& price) { price=0.0; //--- return(ExtStateMACD(1)==1); }
Создание эксперта на основе торговых сигналов при помощи Мастера MQL5
Чтобы создать торгового робота по данной стратегии при помощи Мастера MQL5, выберите на втором шаге тип сигналов Signals based on crossover of main and signal MACD lines":
Рисунок 2. Выбор модуля сигналов на основе пересечения линий индикатора MACD в Мастере MQL5
На последующих шагах укажите нужный тип трейлинга и систему управления капиталом. Код эксперта будет создан автоматически, теперь его нужно скомпилировать и можно приступать к тестированию.
Результаты тестирования
Результаты тестирования советника на исторических данных (EURUSD H1, период тестирования: 1.1.2010-05.01.2011, PeriodFast=12, PeriodSlow=24, PeriodSignal=9, StopLoss=20, TakeProfit=80).
В данном советнике использовался модуль торговли фиксированным объемом 0.1 лота (Trading Fixed Lot), трейлинг не использовался (Trailing not used).
Рисунок 3. Результаты тестирования советника, использующего стратегию пересечения линий индикатора MACD
Файл SignalMACD.mqh, содержащий класс торговых сигналов CSignalMACD (входит в Стандартную библиотеку MetaTrader 5) располагается в папке MQL5\Include\Expert\Signal.
Торговые сигналы по пересечению двух экспоненциальных скользящих средних с фильтрацией сделок по временным параметрам "Signals based on crossover of two EMA with intraday time filter".
Мастер MQL5 - Торговые сигналы по пересечению двух экспоненциальных скользящих среднихТорговые сигналы по пересечению двух экспоненциально сглаженных скользящих средних "Signals based on crossover of two EMA".
ZigZag, лишенный большинства недостатков типового.
Мастер MQL5 - Торговые сигналы по пересечению линий индикатора AlligatorТорговые сигналы по пересечению линий индикатора Alligator.