Трендовый фильтр

Материал из Forex wiki
Перейти к: навигация, поиск

Трендовый фильтр – это один из способов торговать в направлении общего тренда, отфильтровывая сделки, которые противоречат тренду, с надеждой (проверенной при бэк-тестировании), что трендовый фильтр отфильтровывает больше убыточные сделки, чем выигрышные. Мы, системные трейдеры, часто находим или создаем интересную систему для торговли в трендах на меньшем таймфрейме, например, на M30, и благодаря бэк-тестированию можно увидеть, что система может предоставлять множество возможностей для получения прибыли, следуя тренду, на этом относительно коротком таймфрейме. Тем не менее, визуально используя бэк-тестирование, мы также можем видеть, что система, хотя и приносит, в конечном счете, прибыль, открывает и множество убыточных позиций, если они открываются против общего тренда. Видя это, мы начинаем искать трендовый фильтр или же альтернативный индикатор, устанавливаем более длительный таймфрейм или период, который может помочь системе определить более длительный рыночный тренд, и открываем позиции только в направлении этого большего тренда. Это помогает нам, если мы кодируем трендовый фильтр истинным/ложным ключевым словом, таким образом, мы можем легко протестировать данный фильтр или выключить его, чтобы увидеть, помогает ли он.

Для того чтобы получить представление о процессе создания и реализации трендового фильтра, давайте проанализируем конструкцию трендового фильтра скользящей средней. На примере данного трендового фильтра вы сможете легко использовать под свою стратегию и множество альтернативных фильтров, основанных на различных индикаторах, пока вы, наконец, не встретите необходимый вам набор трендовых фильтров для тестирования всех своих трендовых стратегий.

Трендовый фильтр скользящая средняя

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

Длинные позиции: Когда цена закрытия будет выше скользящей средней.

Короткие позиции: Когда цена закрытия будет ниже скользящей средней.

Параметры

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

MAFilterRev Укажите, хотите ли вы включить обратный фильтр скользящую среднюю. При этом позиции будут открываться исключительно в противоположном направлении скользящей средней: только длинные, когда цены закрытия будут находиться ниже скользящей средней, и только короткие позиции, когда цены закрытия будут выше нее. По умолчанию фильтр отключен. Хотя обратный фильтр используется не часто, он может быть полезен, если при бэк-тестировании вы обнаружили, что применение MAFilter, о котором упомянуто выше, дает серьезные промахи в вашей стратегии. Следовательно, для улучшения ситуации вы можете применить MAFilterRev.

MATime Это таймфрейм вашей скользящей средней. По умолчанию 0, что означает тот же таймфрейм, что и на графике. Вы должны протестировать работу фильтра сначала на одинаковых таймфреймах, а затем переходить на более длительные таймфреймы, осуществляя тестирование на каждом из них. Например, если ваша основная стратегия разработана для графика M30, то изначально Вам следует протестировать свою Moving Average со значением по умолчанию 0, т.е. на графике M30, затем протестировать ее на таймфрейме H1, затем на H4, и, наконец, на D1.

MAPeriod Это период вашей скользящей средней. По умолчанию значение установлено на 50, что является обычно более длительным периодом скользящей средней для определения направления тренда. Еще одним обычно используемым длительным периодом является 200. Для того чтобы увидеть, какие из более длительных периодов MA могут лучше определять тренд для данной валютной пары на каждом из тестируемых вами таймфреймов, я бы посоветовал установить оптимальный период между 50 и 200, с интервалом шага в 25 или 50.

MAMethod Это метод или способ скользящей средней, который по умолчанию равен 1, экспоненциальная скользящая средняя. Помните о значениях, указанных в параметре метода: 0 = простая, 1 = экспоненциальная, 2 = сглаженная, 3 = линейно взвешенная. Я думаю, что 1, или экспоненциальная, – это лучший тип скользящей средней. Другой хорошей скользящей средней, которую вам следует протестировать, является 0, или простая скользящая средняя. Оба режима скользящей средней очень популярны и эффективны.

Фрагменты кода MT4

Блок кода рассматривается ниже, в разделе внешних переменных.

Блок кода рассматривается ниже в разделе индикатора вызова.

Пример использования кода MT4

Ниже приведен пример того, как MAFilter переплетается с кодом стратегии пересечения скользящих средних. Ранее мы подробно рассматривали, как построить стратегию пересечения скользящих средних, таким образом, она должна быть идентичной. Можно предположить, что добавление MAFilter к стратегии пересечения скользящих средних будет излишним; однако, в некоторых случаях это допускается, поскольку этот фильтр может дополнять данную стратегию. Например, если пересечение скользящих средних принималось в качестве сигнала открытия позиций применительно к таймфрейму М30, то можно протестировать ее на таймфрейме H4 в комплексе с использованием MAFilter 200. Это может принести пользу в том, что мы будем открывать позиции в направлении трендов на более коротких таймфреймах и меньших периодах, которые, в конечном итоге, будут сонаправлены с трендом на более длительных таймфреймах и больших периодах.

Объяснение

В разделе использования MT4, упомянутом выше, имеется 5 блоков кода. В первом блоке кода я создаю логическое значение для BuyCondition и логическое значение для SellCondition; по умолчанию значения отсутствуют. Я изначально не выставлял значений, поскольку я хочу, чтобы выставляемые логические значения были «истинными». Второй и третий блоки кода изложены для определения условий покупки и продажи, основанных на пересечение скользящих средних. Когда быстрая скользящая средняя пересекает более медленной скользящей средней снизу вверх, то BuyCondition = верно; когда быстрая скользящая средняя пересекает медленную скользящую среднюю сверху вниз, то SellCondition = верно. Мы уже повторяли эти условия, изучая основы советника – пересечение скользящих средних. Разница лишь в том, что я отнес эти условия в значения BuyCondition и SellCondition вместо значений OpenBuy и OpenSell, на которые я делаю ссылку в четвертом и пятом блоках кода.

Это четвертый и пятый блоки кода, которые осуществляют работу MAFilter. Каждый начинается с условия «если ()», которое подразумевает три условия, указанные в скобках. Первое условие, BuyCondition или SellCondition, включает в категорию логику открытия позиции при пересечении скользящих средних.

Второе условие – условие MAFilter – является составной командой в скобках, разделенной между собой символом || («или»). Первая часть заявления указывает на то, что если MAFilter установлен в значение «ложь» (MAFilter = ложь), то MAFilter не работает. Вторая часть утверждения (после символа ||) указывает на то, что если MAFilter установлен в значение «истина» (обратите внимание, что он не должен быть установлен на «истину», поскольку значение само по себе означает «истину»), то следует перейти к правилу MAFilter. Под BuyCondition правило MAFilter подразумевает то, что значение Ask должно быть больше (>), чем значение mafilter. Примечание: переменная для mafilter (в нижнем регистре) определяется в MT4 фрагментом, помещенным в индикатор, вызывающий раздел.

Третье условие – условие MAFilterRev – также является составной командой в скобках, разделенной между собой символом || («или»). Первая часть утверждения указывает на то, что если MAFilterRev установлен в значение «ложь» (MAFilterRev = ложь), то MAFilterRev не работает. Вторая часть утверждения (после символа ||) указывает на то, что если MAFilterRev установлен в значение «истина», то следует перейти к правилу MAFilterRev. Как видите, правило MAFilterRev является противоположностью правила MAFilter. Если правило MAFilter определяет, что значение Ask должно быть больше (>), чем значение mafilter, то MAFilterRev определяет, значение Ask должно быть меньше (<), чем значение mafilter.

Если все три из указанных выше условий будут выполнены, то EA может инициировать OpenBuy = истина или OpenSell = истина, что дает согнал на открытие позиции на покупку или продажу.

Рассмотренный нами выше MAFilter является лишь одним из множества возможных трендовых фильтров, которые можно построить и реализовать. Я выбрал MAFilter, потому что это, пожалуй, один из самых простых и наиболее эффективных фильтров для выявления направление тренда.

Другими хорошими индикаторами, которые могут выступать в качестве трендовых фильтров, являются вариации скользящей средней: JMA, Hull, NonLagMA, and Slope Directional Line. Я использую все четыре индикатора как надежные трендовые фильтры. Можно также поэкспериментировать и с такими импульсными осцилляторами, как RSI и стохастик осциллятор. Какой бы ни использовался индикатор, для того чтобы увидеть, какой из них является наилучшим фильтром для большего тренда, его следует протестировать на различных периодах и таймфреймах. Тренд имеет значение только в сочетании с таймфреймом, и как только вы определите таймфрейм, не стоит более фантазировать относительно концепции тренда.

Необязательно попытаться найти или построить супермодные, математические трендовые фильтры. Многие трейдеры пытаются еще больше усложнить проблему определения тренда. В целях более точного определения, является ли тренд восходящим или нисходящим, они изобретают все виды причудливых математических уравнений и методов, основанных на бэк-тестировании поведения цены, и большинство таких попыток бессмысленны. Часто лучшими являются простейшие и самые популярные подходы к определению тренда.

Не каждая скользящая средняя может помочь извлечь выгоду при наличии трендового фильтра. Некоторые советники включают трендовые индикаторы, которые работают достаточно хорошо, без дополнительных трендовых фильтров. Другие советники пытаются предсказать развороты тренда или же являются датчиками трендовых условий, и могут давать сигнал для входа в рынок против тренда.

Имейте в виду, что все фильтры предотвращают возникновение в основном убыточных сделок, как мы того и желаем. Обычно лучше тестировать один фильтр, и старайтесь не использовать их сразу несколько. Ваша стратегия должна быть достаточно хороша, чтобы подавать сигналы самостоятельно, без необходимости применения дополнительных фильтров. Трендовый фильтр следует использовать в комплексе с хорошей стратегией лишь как дополнительный инструмент, который предварительно следует протестировать. Если мы обнаружим, что фильтр не производит большое количество сигналов или даже равное количество выигрышных сделок, это нехороший фильтр, с которым бы можно было торговать. Единственным приемлемым являлся бы фильтр, который бы мог предотвратить большой процент убыточных сделок при длительном бэк-тестировании на 5-10 предыдущих годах.