← Усі ідеї
#005ПробійПозиційна

Пробій каналу: що спрацює першим, Donchian чи Keltner

Вхід на пробої 20-денного каналу, вихід на пробої 40-денного вниз. Каналів два, Donchian і Keltner, сигнал дає той, якого ціна торкнеться першим. Antonacci перевірив правило на 48 секторах США за 100 років, Basso торгує 9-денну версію.

The Algorithmic Advantage · Gary Antonacci · Дивитися відео

Ринки

Акції, Індекси, Ф'ючерси, Криптовалюти

Таймфрейм

D1

Дані

OHLC

Правила

Частково формалізовано

Складність

Середня

Статус

Не перевірено

Частину правил дописали ми, це позначено в тексті.

TradingView є пастки
EasyLanguage є пастки
MetaTrader 5 є пастки

Ідея коротко

У класичного пробою один рівень: максимум за N днів. Тут рівнів два. Donchian позначає максимум і мінімум за N днів, Keltner малює смугу навколо середньої на відстані кількох ATR. Вони по-різному реагують на волатильність, і в різні дні ближче до ціни опиняється то один, то інший. Правило просте: сигнал дає той канал, якого ціна торкнулася першим.

Gary Antonacci і Carlo Zarattini застосували це до 48 галузевих секторів США за сто років. Вхід у лонг на першому дотику до верхньої межі 20-денного каналу. Вихід на першому дотику до нижньої межі 40-денного каналу: довжину виходу подвоїли, щоб дати угоді місце і не плодити оборот. Шортів немає, розмір позиції нормовано на волатильність.

Tom Basso використовує той самий прийом із трьома індикаторами (Donchian, Bollinger, Keltner) і короткою довжиною 9 днів. Його версія завжди в ринку й перевертається в обидва боки.

Чому це може працювати

Обидва автори пояснюють канали як смугу шуму. Усередині неї ціна ходить без напрямку, і торгувати там немає сенсу: у боковику виходять лише пили. Вихід за смугу Antonacci вважає ознакою продовження руху, його гіпотеза звучить як «новий максимум чотирьох тижнів обіцяє продовження». Basso порівнює це з термостатом, якому потрібен запас у пару градусів, щоб не клацати щохвилини.

Ширина Keltner і Bollinger залежить від волатильності. У тихому ринку лінії сходяться, у нервовому автоматично розходяться. Basso вважає, що тому такі індикатори витримують зміну умов краще за фіксовані перетини середніх. Перший дотик бере ту міру шуму, яка зараз ближча до ціни. Basso прямо каже, що йому байдуже, який з індикаторів поставить ордер: усі три вимірюють той самий шум.

У розкладанні результату в Antonacci головний внесок у Sharpe дав таймінг, а не вибір секторів. Ведучий Rich Brennan пояснює це тим, що пробої пропускають основну масу дрібних рухів і працюють на хвостах розподілу. Ці пояснення не перевірені нами.

Правила

Канали

// денні бари
DonchianUpper(N) = максимум High за N останніх закритих барів
DonchianLower(N) = мінімум  Low  за N останніх закритих барів

KeltnerUpper(N) = EMA(Close, N) + K * ATR(N)
KeltnerLower(N) = EMA(Close, N) - K * ATR(N)
// Basso описує Keltner як EMA 21 плюс ATR приблизно за 21 день, помножений на коефіцієнт.
// Finetiq: в Antonacci довжина Keltner дорівнює довжині каналу (20 або 40), K = 2 як стартове значення

BollingerUpper(N) = SMA(Close, N) + B * StdDev(Close, N)
BollingerLower(N) = SMA(Close, N) - B * StdDev(Close, N)
// Finetiq: B = 2, ширину у відео не названо

Перший дотик

// першим спрацює рівень, найближчий до ціни
FirstUp(N)   = min(DonchianUpper(N), KeltnerUpper(N))
FirstDown(N) = max(DonchianLower(N), KeltnerLower(N))

// Finetiq: смуга Keltner або Bollinger може опинитися за ціною вже на закритті.
// Тоді дотик уже відбувся: вхід за ринком на наступному відкритті, без стоп-ордера

Основна система: Antonacci, лише лонг

IF position = FLAT
    IF Close > KeltnerUpper(20)
        BUY AT NEXT BAR OPEN                  // Finetiq: рівень пройдено на закритті
    ELSE
        BUY STOP at FirstUp(20)               // автор: перший дотик до 20-денного каналу

IF position = LONG
    IF Close < KeltnerLower(40)
        EXIT AT NEXT BAR OPEN                 // Finetiq
    ELSE
        SELL STOP at FirstDown(40)            // автор: перший дотик до 40-денного каналу вниз

// шортів немає: в акцій висхідний дрейф (автор)
// окремого стоп-лоса немає, його роль грає вихід за 40-денним каналом

Розмір позиції (автор, числа Finetiq)

Vol    = StdDev(денні доходності, 20) * sqrt(252)     // Finetiq: вікно у відео не названо
Weight = TargetVol / Vol / M                          // автор: нормування на волатильність
TargetVol = 10%                                       // автор, з пам'яті
M = кількість інструментів у кошику                   // Finetiq: M = 1 для одного ETF
Weight = min(Weight, 1 / M)                           // Finetiq: без плеча
// перебалансування щодня (автор)
// кошик: тримаємо всі сектори із сигналом, без ранжування (автор)

Варіант B. Basso: 9 днів, три канали, завжди в ринку

// індексні ф'ючерси, завжди лонг або шорт, розвороти в обидва боки (автор)
// у Basso та сама 9-денна зв'язка на мікроф'ючерсах біткоїна й ефіру, напрямок там не уточнено
N = 9                                                          // автор, для всіх трьох індикаторів

UpperLevel = min(DonchianUpper(9), BollingerUpper(9), KeltnerUpper(9))
LowerLevel = max(DonchianLower(9), BollingerLower(9), KeltnerLower(9))
// автор: ордер ставить лінія, найближча до ціни, який індикатор це буде, неважливо

IF position = SHORT OR position = FLAT
    BUY STOP at UpperLevel
IF position = LONG OR position = FLAT
    SELL SHORT STOP at LowerLevel
// Finetiq: те саме правило про рівень, пройдений уже на закритті

// розмір: загальний принцип Basso
Units = Equity * 0.5% / (|EntryPrice - LowerLevel| * PointValue)   // для лонга
// автор: у прибутковій позиції ризик може зрости до 1%, далі позиція урізається

Варіант C. Basso: триденний Donchian

// близько 26–27 ф'ючерсів, завжди в ринку (автор)
BUY STOP at DonchianUpper(3)
SELL SHORT STOP at DonchianLower(3)
// нижня лінія і є трейлінг-стоп лонга, окремий трейлінг не потрібен (автор)
// внутрішні дні не пробивають канал і ігноруються самі собою (автор)

Параметри

Параметр Значення Звідки
Канал входу (A) 20 днів, Donchian і Keltner автор
Канал виходу (A) 40 днів, Donchian і Keltner автор
Правило спрацювання перший дотик до будь-якого каналу автор
Напрямок (A) лише лонг автор
Множник Keltner K 2 Finetiq
Середина й ширина Keltner EMA і ATR тієї самої довжини Finetiq (у Basso EMA 21 і ATR близько 21)
Розмір (A) нормування на волатильність, ціль близько 10% автор
Перебалансування (A) щодня автор
Вікно волатильності 20 днів Finetiq
Рівень пройдено на закритті вхід за ринком на наступному відкритті Finetiq
Довжина (B) 9 днів, три індикатори автор
Ширина Bollinger B 2 стандартні відхилення Finetiq
Напрямок (B, C) завжди в ринку, розвороти автор
Довжина (C) 3 дні, лише Donchian автор
Ризик на позицію (B, C) 0.5% капіталу, до 1% у прибутковій позиції автор (загальний принцип Basso)

Що перевірити

  1. Перший дотик проти одного каналу. Три прогони варіанта A: лише Donchian 20/40, лише Keltner 20/40, перший дотик. Якщо комбінація не краща за найкращий із двох, другий канал лише додає угоди.
  2. Множник Keltner. K = 1.5, 2, 2.5, 3. За малого K смуга Keltner майже завжди ближча до ціни й фактично заміняє Donchian. Запишіть, яка лінія дала сигнал у кожній угоді, і подивіться на частки.
  3. Асиметрія 20/40. Порівняйте 20/40 із 20/20 і 20/10. Автор подвоїв довжину виходу заради меншого обороту. Перевірте, скільки це коштує у відданому прибутку й просадці.
  4. Щоденне перебалансування. Нормування щодня проти перебалансування лише за відхилення ваги більше ніж на 20%. Автор визнає, що щоденна версія помітно збільшує кількість угод.
  5. Околиця 9 днів у Basso. 7, 9, 12, 15 днів на індексному ф'ючерсі з повними витратами. Система завжди в ринку й перевертається часто, витрати тут вирішують.
  6. Сектор проти індексу. Варіант A на одному секторному ETF проти того самого правила на S&P 500. Якщо на широкому індексі результат близький, основну роботу робить таймінг, як і каже автор.
  7. Вхід за ринком після закриття за смугою. Порахуйте частку таких входів і середнє прослизання від рівня. На гепах ціна входу помітно гірша, ніж в ідеальному тесті за рівнем.

Особливості платформ

TradingView (Pine Script)

  • ta.kc рахує середину й ширину за своєю реалізацією, а реалізації Keltner різняться. Щоб збігтися з правилами, зберіть смугу самі: ta.ema(close, 20) + k * ta.atr(20). ta.atr згладжує за Вайлдером.
  • Стоп-ордер на купівлю нижче поточної ціни виконується на відкритті наступного бару. Якщо смуга Keltner уже під ціною, strategy.entry(..., stop = firstUp) перетворюється на вхід за ринком. Розділяйте цей випадок явно, інакше вхід виглядатиме як пробій рівня.
  • ta.stdev за замовчуванням генеральне стандартне відхилення, як StdDev в EasyLanguage і iBands у MQL5. Смуги Bollinger на трьох платформах збіжаться за однакової довжини.
  • Стратегія торгує один символ. Кошик із 48 секторів зі спільним нормуванням у Pine не протестувати. Варіант A перевіряється на одному ETF, кошик збирається поза TradingView.

MultiCharts і TradeStation (EasyLanguage)

  • Keltner зберіть самі: XAverage(Close, 20) + K * ATRw, де ATRw пораховано за Вайлдером вручну. AvgTrueRange це просте середнє TrueRange, смуги з ним будуть іншими. Оберіть одну версію ATR і тримайте її на всіх платформах.
  • Buy next bar at FirstUp stop живе один бар. Надсилайте його на кожному барі. Якщо рівень нижче відкриття наступного бару, ордер виконається за відкриттям.
  • Для ф'ючерсів (варіанти B і C) закриття денного бару в TradeStation це settlement, у 1440-хвилинного бару остання угода (Kevin Davey, The Algorithmic Advantage #036). Триденний канал на двох видах бару дає різні рівні майже щодня.
  • Кошик секторів з нормуванням за волатильністю тестується в портфельному модулі: Portfolio Trader у MultiCharts, Portfolio Maestro у TradeStation.

MetaTrader 5 (MQL5)

  • Вбудованого Keltner немає. Середню беріть через iMA(..., MODE_EMA, ...), ATR рахуйте самі: iATR це просте середнє TR.
  • Секторні ETF є не в кожного брокера. У CFD на ETF нараховується своп, а позиція варіанта A тримається тижнями й місяцями.
  • Щоденне нормування впирається в крок лота SYMBOL_VOLUME_STEP. На невеликому рахунку вага змінюється сходинками, і частина перебалансувань не відбувається.
  • Для варіантів B і C на неттинговому рахунку розворот робиться однією угодою подвійного обсягу, на хеджинговому стару позицію треба закрити явно.

Де ідея може зламатися

  • Множник Keltner і ширину Bollinger у відео не названо. Від них залежить, який канал спрацьовує першим, тобто суть правила. Antonacci визнає, що деталей статті не пам'ятає, точні налаштування треба брати із самої статті.
  • Столітні дані це галузеві індекси, а не цінні папери, якими можна торгувати. Історія секторних ETF коротка, автор перевіряв їх окремо.
  • Автор сам показує нерівність: у столітній таблиці є чудові й слабкі періоди, режими тривають по 15–20 років. Тест на 5–10 роках може повністю потрапити в слабкий режим.
  • Хедж шортом покращував Sharpe і просадку, але знижував підсумкову доходність, тому модель залишили лише довгою. Просадки лонг-версії у ведмежому ринку ніхто не страхує.
  • У Basso немає цифр результату. Версії B і C описано як його поточні стратегії, без статистики й без ширини смуг.
  • Щоденне нормування за волатильністю збільшує оборот. На малому рахунку й CFD витрати можуть з'їсти різницю з простим утриманням.

Джерела

  • 026 - Gary Antonacci II - New Models & Research Updates

    The Algorithmic Advantage · Gary Antonacci · 2024-09-13

    • 03:44Дані: галузеві індекси з сайту Кена Френча
    • 05:33Дві моделі: канали Donchian і Keltner
    • 06:29Вхід на 20 днях, вихід на 40 днях
    • 06:45Спрацьовує канал, якого торкнулися першим
    • 07:30Усі сектори із сигналом, розмір за волатильністю
    • 09:33Новий максимум чотирьох тижнів як гіпотеза продовження
    • 10:53Нормування волатильності, щоденне перебалансування
    • 12:59Витрати й секторні ETF
    • 17:08Лише лонг, хедж не додав доходності
    • 20:33Таймінг як головний внесок у Sharpe
  • 023 - Tom Basso - The Calm Within the Chaos

    The Algorithmic Advantage · Tom Basso · 2024-08-09

    • 26:14Ризик 0.5% на позицію, до 1% у прибутковій
    • 35:58Криптоф'ючерси: 9-денний набір, перший дотик
    • 55:52Keltner: EMA 21 і ATR, помножений на коефіцієнт
    • 56:47Смуга шуму: боковик не торгується
    • 1:23:55Таймінг індексів: 9 днів, завжди в ринку
    • 1:25:073-денний Donchian на 26–27 ф'ючерсах
    • 1:26:30Нижня лінія Donchian і є трейлінг-стоп
    • 1:27:02Ордер ставить лінія, найближча до ціни

Заявлено автором

Ці цифри й твердження належать автору. Ми їх не перевіряли.

  • Стаття Gary Antonacci і Carlo Zarattini «A Century of Profitable Industry Trends»: 48 галузевих секторів США, річні результати з 1924 по 2024 рік. За словами автора, з урахуванням транзакційних витрат результат помітно кращий за buy and hold S&P 500 і підтверджується на секторних ETF SPDR.
  • У розкладанні результату на внесок ринку, галузей і таймінгу (розділ 4.3 статті) головним джерелом максимального Sharpe виявилася модель таймінгу, тобто самі правила каналів.
  • Розмір позицій нормовано на волатильність із щоденним перебалансуванням. Цільовий рівень автор називає з пам'яті: можливо, 10%.
  • Tom Basso торгує 9-денну версію на індексних ф'ючерсах і мікроф'ючерсах CME на біткоїн та ефір, 3-денний Donchian на 26–27 ф'ючерсах. За його словами, перед записом випуску (серпень 2024) 3-денна версія добре взяла падіння акцій, зростання облігацій і какао.

Схожі ідеї

Оновлено: 2026-09-10