Идея коротко
Простая система по наклону скользящей средней переворачивает позицию при каждом изгибе линии. На боковике средняя покачивается около одного уровня, и позиция меняется почти на каждом баре. На схеме Kevin Davey такой участок даёт 14 сигналов.
Фильтр из книги Перри Кауфмана «Smarter Trading» (стр. 151, рядом с кодом KAMA) запоминает значение средней в точке последнего разворота. Покупка разрешена, только когда средняя поднялась от последнего минимума больше чем на порог. Шорт зеркально: средняя должна опуститься от последнего максимума больше чем на порог. На той же схеме с фильтром остаётся 2 сигнала.
Davey назвал фильтр «скрытой жемчужиной» и проверил его на 44 фьючерсных рынках. Кауфман на том же вебинаре добавил, как задавать порог: одно стандартное отклонение самой адаптивной средней за 10–15 дней.
Почему это может работать
Изгиб средней на боковике почти ничего не говорит о тренде. Цена ходит в диапазоне, средняя колеблется, и каждый мелкий изгиб даёт переворот. По отдельности такие сделки маленькие. Davey подчёркивает, что при просмотре графика их обычно не замечают, а в сумме они дают заметный убыток, и один большой тренд его не всегда покрывает.
Порог требует, чтобы средняя прошла расстояние больше обычного шума. На трендовом участке это стоит небольшого опоздания со входом. На боковике это убирает большую часть переворотов. Порог выхода при этом подтягивается сам: каждый новый локальный максимум средней обновляет точку, от которой отсчитывается разворот вниз.
Кауфман объясняет порог в одну сигму так: этого хватает, чтобы убрать мелкие колебания, пока система идёт вбок. Он же напоминает, что адаптивная средняя задумана как трендовая система. Поэтому его не удивил результат Davey на контртрендовом входе, где средняя сделка стала хуже.
Объяснения, почему фильтр отсекает именно худшие сделки, в видео нет. Есть сводная таблица по 44 рынкам и один показательный пример на нефти.
Правила
Носитель: наклон средней (Davey)
MAVal = SMA(Close, MALen) // автор: Average(Close, MALen); длина в тесте не названа
// без фильтра: всегда в рынке, покупка переворачивает шорт и наоборот
IF MAVal > MAVal[1] THEN BUY AT NEXT BAR OPEN
IF MAVal < MAVal[1] THEN SELL SHORT AT NEXT BAR OPEN
Фильтр от последнего разворота (автор)
// запоминаем значение средней в точке разворота
IF MAVal > MAVal[1] AND MAVal[1] < MAVal[2] THEN ExtLow = MAVal[1] // разворот вверх
IF MAVal < MAVal[1] AND MAVal[1] > MAVal[2] THEN ExtHigh = MAVal[1] // разворот вниз
IF MAVal > MAVal[1] AND MAVal - ExtLow > Filter THEN BUY AT NEXT BAR OPEN
IF MAVal < MAVal[1] AND ExtHigh - MAVal > Filter THEN SELL SHORT AT NEXT BAR OPEN
// отдельного стопа и цели нет: позиция живёт до сигнала в обратную сторону
// Finetiq: пока не было ни одного разворота, ExtLow и ExtHigh не определены, сигналы не считаем
Порог Filter
// вариант Davey: абсолютное число в единицах цены, подбиралось walk-forward, значение не показано
Filter = const
// вариант книги (фото страницы на слайде 28): inputs period(10), filter(.1),
// сигналы на адаптивной средней и исполнение на закрытии бара (buy on close)
// вариант Кауфмана на вебинаре (46:00)
Filter = 1 * StdDev(MAVal, 10) // автор: сигма значений самой средней за 10 или 15 дней
// Finetiq: второе прочтение для проверки, сигма приращений средней
Filter_alt = StdDev(MAVal - MAVal[1], 10)
Кауфман описывает порог ещё и как полосу вверх и вниз вокруг адаптивной средней. Как именно полоса сочетается с точкой разворота из кода, в видео не сказано. Мы берём прочтение, совместимое с кодом: сигма подставляется вместо абсолютного Filter.
Вариант B. Фильтр на адаптивной средней Кауфмана
В книге фильтр стоит на KAMA, а не на простой средней. Для трендовой торговли Кауфман сейчас советует период 60 вместо 10 и быстрый конец сглаживания 6–8 дней вместо 2–3, потому что после 2000 года рынки стали шумнее.
ER = |Close - Close[Period]| / Sum(|Close - Close[1]|, Period) // путь по прямой к сумме шагов
Fast = 2 / (FastLen + 1)
Slow = 2 / (SlowLen + 1)
SC = (ER * (Fast - Slow) + Slow) ^ 2
AMA = AMA[1] + SC * (Close - AMA[1])
// автор: Period = 60, FastLen = 6..8 (вебинар); SlowLen = 30 (код Davey и подпись графика Кауфмана)
// дальше тот же фильтр: MAVal = AMA, Filter = StdDev(AMA, 10..15)
Где применять (Davey)
Фильтр проверен на трендовом входе: покупка при растущей средней. На контртрендовом входе (покупка при падающей средней) он сократил число сделок и суммарный убыток, но средняя сделка стала хуже. Davey делает вывод, что фильтр подходит трендовым системам, а для систем возврата к среднему его нужно проверять отдельно.
Параметры
| Параметр | Значение | Откуда |
|---|---|---|
| Средняя носителя | простая, Average(Close, MALen) |
автор |
| MALen | 50 | Finetiq: так нарисовано на схеме Davey, в тесте длина не названа |
| Filter, вариант Davey | абсолютный, подбор walk-forward | автор (значение не показано) |
| Filter, вариант книги | 0.1 при period 10 | автор (слайд 28) |
| Filter, вариант Кауфмана | 1 σ значений средней | автор |
| Окно сигмы | 10 или 15 баров | автор |
| Сигма приращений средней | для проверки | Finetiq |
| Исполнение | открытие следующего бара | автор (код Davey), в книге на закрытии бара |
| Размеры бара в тесте | 180–1440 минут | автор |
| Период теста | 2007–2025, отсев меньше 50 сделок | автор |
| Стоп и цель | нет, переворот по обратному сигналу | автор |
| Вариант B: KAMA | период 60, быстрый конец 6–8, медленный 30 | автор |
Что проверить
- Разница off и on. Прогоните носитель без фильтра и с фильтром на одном наборе рынков и таймфреймов. Сравнивайте число сделок, среднюю сделку и итог. Так Davey и читал свой тест: носитель может быть убыточным, важен сдвиг.
- Какой порог. Абсолютный порог, 1 σ значений средней за 10 и за 15 баров, 1 σ приращений средней. Абсолютный порог нельзя перенести между рынками и десятилетиями, сигма подстраивается под текущий шум сама.
- Окрестность параметров. Множитель сигмы 0.5, 1 и 1.5, длина средней 40, 50 и 60. Если улучшение держится только в одной точке, порог подогнан.
- Трендовый и контртрендовый вход. Повторите опыт Davey: тот же фильтр на покупке при растущей средней и на покупке при падающей. По его данным на контртренде средняя сделка ухудшается. Если у вас так же, фильтр не ставят поверх систем возврата к среднему.
- Совет Кауфмана про отбор рынков. Разбейте рынки по efficiency ratio дневных баров на верхнюю и нижнюю половину. Сравните эффект фильтра в каждой. Кауфман утверждает, что на трендовых рынках носитель не будет убыточным, но в видео это не проверяли.
- SMA против KAMA. Тот же фильтр на простой средней и на KAMA с настройками 60, 6–8, 30. Кауфман тестировал фильтр именно на адаптивной средней.
- Экономия на издержках. Без фильтра носитель часто переворачивается на боковике. Прогоните оба варианта с комиссией и проскальзыванием и посмотрите, какая часть улучшения объясняется меньшим числом сделок, а какая отбором.
Особенности платформ
TradingView (Pine Script)
ta.stdevпо умолчанию генеральное (biased = true), какStdDevв EasyLanguage. Для совпадения сигмы с EasyLanguage ничего менять не нужно.- KAMA встроенной нет, пишется по формуле. Проверьте, что период ER и длины быстрой и медленной EMA совпадают с источником: у авторов индикаторов в библиотеке настройки бывают другими.
strategy.entryв противоположную сторону переворачивает позицию. Повторный сигнал в ту же сторону безpyramidingигнорируется, что совпадает с логикой кода Davey.- Абсолютный порог зависит от ряда. У непрерывных фьючерсов проверьте, включена ли корректировка склеек, иначе расстояние от точки разворота на стыке контрактов исказится.
MultiCharts и TradeStation (EasyLanguage)
- Код со слайдов написан для TradeStation и переносится как есть:
Average,buy next bar at market,sellshort next bar at market. - Davey отдельно подчеркнул, что его 1440-минутные бары не дневные. У фьючерса в TradeStation дневной бар закрывается по settlement, а 1440-минутный по последней сделке. Сигналы разойдутся, тестируйте и торгуйте на одном виде бара.
StdDevгенеральное,StdDevSвыборочное. На окне 10 выборочная сигма больше примерно на 5%, и порог сдвигается вместе с ней.- В книге сигналы исполняются на закрытии того же бара (
buy on close). В бэктесте это оптимистичнее, чем вход на следующем баре, как в тесте Davey.
MetaTrader 5 (MQL5)
- Встроенный
iAMAпринимает период ER, быстрый и медленный периоды. Для варианта B задайте 60, 6–8 и 30 и сверьте линию с расчётом по формуле на нескольких барах. - Сигму значений средней считайте сами по массиву её значений.
iStdDevпо умолчанию считает разброс цены, а не средней. - Таймфрейм 3 часа (H3) в MT5 есть, но бары строятся по времени сервера брокера. Их границы не совпадут с 180-минутными барами фьючерса в TradeStation.
- CFD на товары и индексы отличаются от фьючерса ценой и часами торговли. Абсолютный порог из теста Davey к ним не переносится. Сигнал берите с закрытого бара (индекс 1) и проверяйте появление нового бара.
Где идея может сломаться
- Носитель в тесте Davey убыточен в сумме по 44 рынкам и с фильтром, и без него. Фильтр уменьшил убыток, но не сделал систему прибыльной. Davey прямо говорит, что это не стратегия для торговли.
- Порог в сводном тесте подбирался walk-forward, его значения не показаны. Связь между абсолютным порогом Davey и сигмой Кауфмана в видео не проверена. Сам Кауфман, прежде чем сказать про сигму средней, дважды оговаривается и называет то эффективность, то константу сглаживания.
- Davey говорит, что фильтр убрал 58% сделок, чуть раньше говорит «около половины». По таблице на слайде из 1115 сделок осталось 416, это 62.7% отсеянных.
- Пример на нефти один и выбран для показа. По отчётам на слайде прибыль с фильтром выросла почти поровну на лонгах и на шортах (с $23 775 до $56 280 и с $59 920 до $91 030). Долю прибыльных подняли только шорты, у лонгов она немного снизилась: 39.31% без фильтра и 38.46% с фильтром.
- Длина средней в тесте не названа. MA(50) на схеме это иллюстрация, а не параметр теста.
- На контртрендовом входе фильтр ухудшил среднюю сделку. Ставить его поверх систем возврата к среднему без проверки нельзя.
- Вебинар служит разогревом перед платным мастер-классом. Ранжирование рынков по efficiency ratio, на которое ссылается Кауфман, в видео не показано.