Ідея коротко
Проста система за нахилом ковзної середньої перевертає позицію при кожному зламі лінії. На боковику середня погойдується біля одного рівня, і позиція змінюється майже на кожному барі. На схемі 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, на яке посилається Кауфман, у відео не показано.