Советники: Мастер MQL5 - Торговые сигналы по пересечению двух экспоненциальных скользящих средних с фильтрацией сделок по времени

 

Мастер MQL5 - Торговые сигналы по пересечению двух экспоненциальных скользящих средних с фильтрацией сделок по времени:

В статье Создание эксперта без программирования с помощью Мастера MQL5 описаны шаги по автоматическому созданию кода советника при помощи Мастера MQL5.

Принципы работы модуля торговых сигналов на пересечении двух скользящих средних рассмотрены в "Мастер MQL5 - Торговые сигналы по пересечению двух экспоненциальных скользящих средних". Системы, основанные на скользящих средних, эффективно работают лишь при наличии трендовых движений, в противном случае множество ложных сигналов значительно снизит эффективность торговли. Одним из методов улучшения торговых показателей является фильтрация сделок по времени, ограничивая вход в рынок заданными временными рамками (например, открывать позиции только в течение европейской сессии).

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

Основные положения стратегии:

  • Открытие позиции на покупку: когда быстрая скользящая средняя пересекает медленную снизу вверх и при этом не выполняется условие фильтрации сделок по времени.
  • Открытие позиции на продажу: когда быстрая скользящая средняя пересекает медленную сверху вниз и при этом не выполняется условие фильтрации сделок по времени.

Автор: MetaQuotes Software Corp.


Результаты тестирования советника, использующего стратегию пересечения двух экспоненциально сглаженных скользящих средних без фильтра ITF

Результаты тестирования советника, использующего стратегию пересечения двух EMA без использования фильтра ITF

Результаты тестирования советника, использующего стратегию пересечения двух EMA с фильтрацией входов по часам (BadHoursofDay=16777152)

Результаты тестирования советника, использующего стратегию пересечения двух EMA с фильтрацией входов по часам (BadHoursofDay=16777152)

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

 

Хорошая статья, но прошу некоторых пояснений:

**** открывать позиции только с 0:00 до 5:59. Это можно сделать, установив значение BadHoursOfDay=16777152=11111111111111111111111111000000b. Все остальные торговые часы являются "плохими", поэтому лучше запретить открытие новых позиций с 6:00 и до конца дня. ****

Здесь необходимы некоторые детали:

- как рассчитать/определить это значение " 16777152", как определить его для другого времени "открытия/закрытия" или только для времени "открытия"?

- как принимать решения по нескольким ITF, например: TOKYO/LONDON/NY opening times ?

 
razoff:

Здесь необходимы некоторые детали:

- как рассчитать/определить это значение " 16777152", как определить его для другого времени "открытия/закрытия" или только для времени "открытия"?

В данном примере реализован фильтр по открытию новых позиций. (Предполагается, что они будут закрыты SL/TP).

Двоичное представление 16777152:

В нашем случае мы использовали фильтр по часам, "плохие" часы были отмечены соответствующими битами=1. То же самое можно сделать и с BadMinutesOfHour.

Для преобразования двоичных значений можно использовать calc.exe:


- Как принимать решения по нескольким МФТ, например: TOKYO/LONDON/NY opening times?

Если вы хотите использовать 3 отдельных фильтра (TOKYO,LONDON,NY), вы можете добавить дополнительные экземпляры класса CSignalITF (в нашем случае только один m_time_filter) в ваш класс сигналов.

 
Как бы вы оптимизировали временной фильтр в тестере стратегий?
 
ssn:
Как бы вы оптимизировали временной фильтр в тестере стратегий?

Лучший временной фильтр можно найти с помощью оптимизации входного параметра BadHoursOfDay в Strategy Tester. Вы можете указать начальное и конечное значения параметров, и он найдет лучшие часы, поскольку используется генетический алгоритм оптимизации, это не займет много времени, как кажется.

Второй способ - проверять время убыточных сделок вручную и "помечать" их битами параметра BadHoursOfDay.

По сути, это позволяет настроить свою стратегию и учесть некоторые "логические" причины торговой идеи. Например, осцилляторы лучше работают во флэте, причиной флэта может быть отсутствие новостей, свойства сессии/валютной пары и т.д.

 
Automated-Trading:

В данном примере реализован фильтр по открытию новых позиций. (Предполагается, что они будут закрыты SL/TP).

Двоичное представление 16777152 имеет вид:

В нашем случае мы использовали фильтр по часам, "плохие" часы были отмечены соответствующими битами=1. То же самое можно сделать и с BadMinutesOfHour.

Для преобразования двоичных значений можно использовать calc.exe:


Если вы хотите использовать 3 отдельных фильтра (TOKYO,LONDON,NY), вы можете добавить дополнительные экземпляры класса CSignalITF (в нашем случае только один m_time_filter) в ваш класс сигналов.

Спасибо за эту статью, но что за головная боль :( Нельзя ли просто использовать что-то более удобное для пользователя, например, StartHour/EndHour/StartMinute/EndMinute, как это можно сделать в MT4? Зачем использовать этот сложный бинарный режим?
 
razoff:
Спасибо за эту статью, но какая головная боль :( Нельзя ли просто использовать что-то более удобное для пользователя, например, StartHour/EndHour/StartMinute/EndMinute, как это можно сделать в MT4? Зачем использовать этот сложный бинарный режим?

Двоичное представление параметров имеет ряд существенных преимуществ. Например, вы можете исследовать пространство параметров в тестере стратегий (начало с 0, конец 16777215, шаг 1). Попробуйте.

Найдя лучшие часы, вы можете исследовать дни. Но учтите, что временные фильтры эффективны для младших таймфреймов (H1 и ниже).

Если вам нужен более "дружелюбный" способ, вы можете написать собственный класс торговых сигналов (см. MQL5 Wizard: How to Create a Module of Trading Signals).

 
Automated-Trading:

Двоичное представление параметров имеет ряд существенных преимуществ. Например, вы можете исследовать пространство параметров в Тестере стратегий (начало с 0, конец 16777215, шаг 1). Попробуйте.

Найдя лучшие часы, вы можете исследовать дни. Но учтите, что временные фильтры эффективны для младших таймфреймов (H1 и ниже).

Если вам нужен более "дружелюбный" способ, вы можете написать свой собственный класс торговых сигналов (см. MQL5 Wizard: How to Create a Module of Trading Signals).

Итак, сначала мне нужно понять, что такое бинарники; если calc.exe или любое другое научное приложение может "конвертировать" бинарники, то мне нужно найти, как получить бинарники простым и понятным способом (не все же Эйнштейны: например, в примере объяснения, зачем начинать с 23 и заканчивать 0, чтобы вычислить этот бинарник? Затем, как получить двоичное число для других временных рамок, таких как дни (от субботы до понедельника?), минуты (от 59 до 0?).
 
Automated-Trading:

Фильтр наилучшего времени можно найти с помощью оптимизации входного параметра BadHoursOfDay в Strategy Tester. Вы можете указать начальные и конечные значения параметров, и он сам найдет лучшие часы, причем из-за использования генетического алгоритма оптимизации это не займет много времени, как кажется.

Второй способ - проверять время убыточных сделок вручную и "помечать" их битами параметра BadHoursOfDay.

По сути, это позволяет настроить свою стратегию и учесть некоторые "логические" причины торговой идеи. Например, осцилляторы лучше работают во флэте, причиной флэта может быть отсутствие новостей, свойства сессии/валютной пары и т.д.

Хорошо, пожалуйста, поправьте меня, если я ошибаюсь, но если предположить, что я хочу отфильтровать плохие минуты, значит ли это, что мне нужно просеивать варианты 1152921504606846975?
 
ssn:
Хорошо, пожалуйста, поправьте меня, если я ошибаюсь, но если предположить, что я хочу отфильтровать плохие минуты, значит ли это, что мне нужно просеять 1152921504606846975 опционов?
Верно.
 

здравствуйте.

а можно сделать что бы средние были на выбор - MA, EMA, WMA. а также был бы сдвиг средней. и в дополнении закрытие по профиту на другом индикаторе?