Ідея коротко
Класичний MACD рахується в пунктах ціни. Коли S&P 500 коштував 100, MACD рухався в межах одиниць. Коли індекс коштує 5000, ті самі рухи дають десятки. Тому значення MACD не можна порівняти ні з минулим роком, ні з іншим ринком, і в нього немає спільних рівнів перекупленості.
MACD-V ділить ту саму різницю двох EMA на ATR. Індикатор стає безрозмірним: він показує, скільки «волатильностей» між швидкою і повільною середньою. Значення 100 на золоті й на біткоїні означає одне й те саме. На цьому будуються спільні пороги: ±50 межа боковика, ±150 перегрів.
Чому це може працювати
Сама нормалізація еджу не дає. Це точніший вимірювальний прилад. Користь у тому, що правила поверх нього можна один раз підібрати й перевірити на десятках ринків і десятиліттях без підгонки порогів під кожен інструмент. Класичний MACD так перевірити не можна: пороги в пунктах на одному ринку нічого не означають на іншому.
Друга думка автора: у бичачому режимі глибокі від'ємні значення трапляються рідко. Якщо ціна вище EMA 200, а MACD-V опустився нижче −50, це відкат усередині тренду, а не початок ведмежого ринку. Такі точки автор називає можливістю для купівлі.
Правила
Індикатор (автор)
FastEMA = EMA(Close, 12)
SlowEMA = EMA(Close, 26)
ATR26 = ATR(26) // Вайлдер, як у відео
MACDV = (FastEMA - SlowEMA) / ATR26 * 100
Signal = EMA(MACDV, 9) // Finetiq: довжина 9 за аналогією з MACD, для MACD-V у відео не названа
MACDVH = MACDV - Signal // гістограма, крайні значення ±40 за автором
Зони імпульсу (автор)
| MACD-V | Стан |
|---|---|
| вище +150 | перегрів угору: імпульс більший за 1.5 ATR |
| від +50 до +150 | сильний імпульс угору |
| від −50 до +50 | слабкий імпульс, боковик. Перетини сигнальної лінії тут частіше хибні |
| від −150 до −50 | сильний імпульс униз |
| нижче −150 | перегрів униз |
Варіант A. Купівля відкату в бичачому режимі
Режим і зона відкату від автора. Точок входу й виходу автор не дав, їх задали ми.
BullRegime = Close > EMA(Close, 200)
// вхід: імпульс повернувся із зони відкату
IF BullRegime AND MACDV crosses above -50 // Finetiq: момент виходу із зони −50…−150
BUY AT NEXT BAR OPEN
// захисний стоп
InitialStop = EntryPrice - 2 * ATR26 // Finetiq: стартове значення
// вихід, що настане раніше
IF MACDV crosses above +50 THEN EXIT AT NEXT BAR OPEN // Finetiq: імпульс відновився
IF Close < EMA(Close, 200) THEN EXIT AT NEXT BAR OPEN // Finetiq: режим зламався
IF BarsSinceEntry >= 20 THEN EXIT AT NEXT BAR OPEN // Finetiq: вихід за часом
Варіант B. Тестова система автора на DAX
// денні бари ф'ючерса DAX, лише купівлі
IF MACDV crosses above 70 // автор: «MACD-V вище 70»; Finetiq: беремо момент перетину
BUY AT NEXT BAR OPEN
SELL LIMIT EntryPrice * 1.0285 // автор: ціль +2.85%
IF BarsSinceEntry >= 15 AND OpenProfit > 0 // автор: через 15 днів, якщо угода в плюсі
EXIT AT NEXT BAR OPEN
IF BarsSinceEntry >= 77 // автор: максимальне утримання
EXIT AT NEXT BAR OPEN
// стоп-лоса в описі автора немає
Параметри
| Параметр | Значення | Звідки |
|---|---|---|
| Швидка EMA | 12 | автор |
| Повільна EMA | 26 | автор |
| ATR | 26, згладжування Вайлдера | автор |
| Сигнальна лінія | 9 | Finetiq |
| Межа боковика | ±50 | автор |
| Перегрів | ±150 | автор |
| Крайні значення гістограми | ±40 | автор |
| Фільтр режиму | денна EMA 200 | автор |
| Варіант A: стоп | 2 × ATR26 | Finetiq |
| Варіант A: вихід за часом | 20 барів | Finetiq |
| Варіант B: вхід | MACD-V вище 70 | автор |
| Варіант B: ціль | +2.85% | автор |
| Варіант B: вихід за часом | 15 днів у плюсі, максимум 77 днів | автор |
Що перевірити
- Чи дає нормалізація щось понад класику. Проженіть варіант A на MACD-V і на PPO (
(EMA12 − EMA26) / EMA26 × 100) з порогами, перерахованими за тією самою часткою значень. Якщо різниці немає, справа в правилах, а не в діленні на ATR. - Твердження про ±150. Порахуйте частку денних значень у діапазоні ±150 на своїх ринках. Автор говорить про 95% на S&P 500, бундах і газі. Якщо на ваших інструментах частка сильно інша, спільні пороги до них не підходять.
- Один набір параметрів на багато ринків. Це головна обіцянка індикатора. Візьміть 20–30 ф'ючерсів або CFD і проженіть варіант A без підлаштування. Дивіться на медіану результатів по ринках, а не на найкращий.
- Околиця порогів. Зсуньте −50 на −30 і −70, EMA 200 на 150 і 250. Якщо невеликий зсув різко змінює результат, поріг підігнаний.
- Фільтр перетинів. Порівняйте угоди за перетином сигнальної лінії всередині зони ±50 і поза нею. Автор стверджує, що всередині хибних сигналів більше.
- Варіант B без стопа. Подивіться на найгіршу просадку всередині угоди (MAE) і на угоди, які трималися всі 77 днів. За такого виходу відсоток влучань у ціль мало говорить про ризик.
Особливості платформ
TradingView (Pine Script)
ta.atr(26)уже рахується за Вайлдером (черезta.rma), тож значення збігатимуться з формулою автора.- MACD-V в один рядок:
(ta.ema(close, 12) - ta.ema(close, 26)) / ta.atr(26) * 100. - Стратегія за замовчуванням виконує ордер на відкритті наступного бару (
process_orders_on_close = false). Це збігається з правилами вище. - Вихід за часом:
bar_index - strategy.opentrades.entry_bar_index(0) >= 15. Ціль:strategy.exit("TP", limit = strategy.position_avg_price * 1.0285).
MultiCharts і TradeStation (EasyLanguage)
- Вбудована функція
AvgTrueRange(26)це просте середнє TrueRange, а не згладжування Вайлдера. Значення MACD-V вийдуть іншими, особливо після сплесків волатильності. Рахуйте ATR самі:ATRw = ATRw[1] + (TrueRange - ATRw[1]) / 26. - EMA:
XAverage(Close, 12). - Вхід за правилами:
Buy next bar at market. Ціль краще ставити ціною, а не грошима:Sell next bar at EntryPrice * 1.0285 limit.SetProfitTargetзадається у валюті й легко дає інший рівень. - Вихід за часом:
If BarsSinceEntry >= 15 and OpenPositionProfit > 0 then Sell next bar at market.
MetaTrader 5 (MQL5)
- Вбудований
iATRтеж просте середнє TR, як і в EasyLanguage. Щоб збігтися з автором, рахуйте варіант Вайлдера самі. - Основна лінія
iMACD(буфер 0) це рівноEMA12 − EMA26, її можна ділити на свій ATR. - Сигнал беріть із закритого бару (індекс 1) і перевіряйте появу нового денного бару, інакше радник входитиме на кожному тіку.
- Денний бар у CFD-брокера закривається за серверним часом (зазвичай GMT+2/+3), а не за часом біржі. У брокерів з іншим сервером бувають короткі недільні бари, вони спотворюють EMA і ATR. Порівняйте денний графік брокера з TradingView перед тестом.
Де ідея може зламатися
- Усі статистики за рівнями й режимами взяті з відео і не перевірені нами. Ринки в прикладах автора: S&P 500, бунди, газ, DAX.
- Варіант A повністю наша формалізація. Пороги входу, стоп і вихід за часом це стартові значення для перевірки, а не рекомендація.
- У варіанті B немає стоп-лоса. Високий відсоток влучань у ціль при виході «через 15 днів, якщо в плюсі» може приховувати рідкісні глибокі збитки.
- Цифри результатів DAX-системи в транскрипті частково нерозбірливі. Ми навели лише ті, що прозвучали однозначно.
- EMA 200 на денних барах потребує історії: у перші 200–250 барів індикатор ще не усталився, їх треба виключити з тесту.