← Усі ідеї
#055НовеТрендПозиційна

Трендовий лонг акцій: канал Кельтнера і ранг за ROC 200

Лонг акцій NASDAQ 100, коли індекс вище 200-денної середньої, а закриття папера вище 50-денного каналу Кельтнера на 2 ATR. Кандидатів ранжують за ROC за 200 днів, стоп 15%, трейлінг 25%.

The Algorithmic Advantage · Laurens Bensdorp · Дивитися відео

Ринки

Акції

Таймфрейм

D1

Дані

OHLC, Список інструментів

Правила

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

Складність

Середня

Статус

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

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

TradingView потрібні дані або обхідні шляхи
EasyLanguage є пастки
MetaTrader 5 є пастки

Ідея коротко

Laurens Bensdorp торгує 55 стратегій на акціях і ділить їх на чотири «ноги»: тренд і повернення до середнього, кожна в лонг і в шорт. У випуску він повністю показав одну трендову систему як приклад простоти. Фільтр ринку: індекс NASDAQ 100 закрився вище 200-денної середньої. Сетап папера: закриття вище верхньої межі 50-денного каналу Кельтнера шириною 2 ATR. За словами автора, це весь трендовий компонент.

Такий фільтр, за оцінкою автора, пропускає 20-30 кандидатів. Їх автор ранжує за доходністю за 200 днів (ROC 200) і бере найсильніших. Скільки позицій тримати, він не назвав. Початковий стоп 15% від входу, далі трейлінг-стоп 25%. Шортів немає.

Широкі процентні стопи роблять систему повільною. Трейлінг 25% піднімається вище початкового стопа, лише коли папір додав понад 13.3% від входу (0.85 / 0.75 = 1.133). До цього позицію захищає стоп 15%.

З карткою new-high-breakout-ma10-exit спільна логіка пробою вгору, але влаштування інше. Там рівень це максимум за 100 або 200 днів, а вихід за 10-денною середньою закриває угоду за дні. Тут рівень рахується від волатильності, процентний вихід тримає позицію місяцями, а важлива частина системи це вибір між паперами за ROC 200. Страховку довгого портфеля на обвалах той самий автор описує в index-crash-hedge.

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

Автор пояснює правила так. Закриття вище каналу Кельтнера на двох ATR означає, що папір вийшов угору зі звичайного діапазону коливань. Високий ROC за 200 днів відбирає папери, які довго зростали і при цьому волатильні. Трендова нога в нього полює на рідкісні великі рухи з позитивною асиметрією. Повернення до середнього, навпаки, накопичує дрібний прибуток та іноді отримує великий удар.

Шорт у тренді на окремих акціях автор не тримає через корпоративний ризик: при довгому утриманні новина будь-якого дня може дати геп проти позиції. Для короткої сторони він торгує ETF. Всесвіт для тренду він бере з індексів і прямо називає вбудовану помилку вцілілого: індекс сам додає сильні папери і прибирає слабкі.

Щодо ранжування в автора окрема думка. Він веде таблицю параметрів усіх стратегій і не бере ROC 200 у другу систему, навіть якщо той тестується краще: інакше нова система шукає те саме, що стара. Приклад принципово іншого рангу в нього: максимальний RSI за 14 днів.

Бектесту цієї системи у випуску немає. Пояснення вище це логіка автора, нами не перевірена.

Правила

Сигнал на одному папері (автор)

// денні бари, акція з індексу NASDAQ 100, лише лонг
RegimeOK = NDX_Close > SMA(NDX_Close, 200)   // автор: індекс вище 200-денної середньої
                                             // Finetiq: тип середньої не названо, беремо просту
KC_Mid   = EMA(Close, 50)                    // Finetiq: середину каналу не названо
KC_Upper = KC_Mid + 2 * ATR(50)              // автор: 50-денний канал + 2 ATR
                                             // Finetiq: ATR тієї самої довжини, за Вайлдером
Setup    = Close > KC_Upper                  // автор
ROC200   = Close / Close[200] - 1            // автор: ранг за доходністю за 200 днів

Відбір кандидатів і вхід (автор, кількість позицій Finetiq)

// після закриття, по всьому всесвіту одразу
Candidates = папери, де RegimeOK AND Setup AND позиції ще немає
Sort Candidates за ROC200 від більшого до меншого       // автор

MaxPositions = 10              // Finetiq: автор кількість позицій не назвав.
                               // Ведучий переказав правило як «топ-30»
FreeSlots = MaxPositions - кількість відкритих позицій
FOR перші FreeSlots паперів з Candidates
    BUY AT NEXT BAR OPEN       // Finetiq: виконання на відкритті наступного дня

// Finetiq: вимкнений фільтр ринку забороняє нові входи, відкриті позиції ведуть стопи

Розмір позиції (Finetiq)

// для цієї системи автор метод не назвав.
// У MR-системах він рахує розмір за волатильністю й обмежує частку капіталу в папері
PositionValue = Equity / MaxPositions     // Finetiq: рівні частки, 10% капіталу
// ризик на угоду при стопі 15% близько 1.5% капіталу, без урахування гепів

Вихід (автор)

InitialStop = EntryPrice * 0.85            // автор: стоп 15%
TrailStop   = HighestClose(з входу) * 0.75 // автор: трейлінг 25%
                                           // Finetiq: від максимального закриття, не від High
Stop = MAX(InitialStop, TrailStop)
SELL STOP at Stop                          // Finetiq: стоп-ордер усередині дня
// варіант для перевірки: IF Close < Stop THEN EXIT AT NEXT BAR OPEN

Варіант B. Вихід за каналом (автор, рівні Finetiq)

// автор не хоче, щоб у всіх його стратегій був трейлінг 25%.
// Приклади простих виходів «ціна пішла вниз»: 200-денні смуги Боллінджера,
// 100-денний канал Кельтнера, канал Дончіана
IF Close < SMA(Close, 200)            THEN EXIT AT NEXT BAR OPEN   // Finetiq: середня лінія смуг 200
IF Close < EMA(Close, 100) - 2 * ATR(100) THEN EXIT AT NEXT BAR OPEN   // Finetiq: нижня межа, ширина 2
// яку межу вважати сигналом, автор не уточнив

Варіант C. Ротаційний вихід (автор, частота Finetiq)

// ранг задає і вхід, і вихід
Rank = місце папера за ROC200 серед усіх паперів всесвіту
IF RegimeOK AND Rank <= 10 AND позиції немає  THEN BUY AT NEXT BAR OPEN   // автор: вхід у топ-10
IF Rank > 10                                  THEN EXIT AT NEXT BAR OPEN  // автор: випав з топ-10
// Finetiq: ранг перераховується щодня; фільтр ринку залишено від основної системи
// вихід не означає, що папір падає: знайшовся сильніший (автор)

Відбір паперів (окреме правило)

// всесвіт: склад NASDAQ 100 на дату кожного бару, включно з паперами, виключеними пізніше
// автор: підходить і S&P 500, і кошик акцій одного сектора, наприклад енергетики
// Finetiq: у папера, виключеного з індексу, нових входів немає, відкриту позицію ведуть стопи
// сигнал рахується на кожному папері окремо, ранжування по всьому всесвіту

Параметри

Параметр Значення Звідки
Всесвіт акції NASDAQ 100 (варіант: S&P 500) автор
Фільтр ринку індекс вище 200-денної середньої автор
Тип середньої фільтра проста Finetiq
Канал Кельтнера 50 днів, ширина 2 ATR автор
Середина каналу і ATR EMA 50, ATR 50 за Вайлдером Finetiq
Ранжування ROC за 200 днів, за спаданням автор
Кількість позицій 10 Finetiq
Розмір позиції рівні частки капіталу Finetiq
Початковий стоп 15% від входу автор
Трейлінг-стоп 25% автор
База трейлінгу максимальне закриття з входу Finetiq
B: види виходу смуги Боллінджера 200, канал Кельтнера 100, канал Дончіана автор
B: рівні виходу середня лінія, нижня межа на 2 ATR Finetiq
C: ротація вхід у топ-10 за ROC 200, вихід при випаданні автор
C: частота перерахунку щодня Finetiq

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

  1. Ранг проти випадкового вибору. Проженіть той самий сигнал із трьома способами вибору кандидатів: максимальний ROC 200, випадковий порядок, мінімальний ROC 200. Якщо випадковий вибір близький до ROC 200, результат дають фільтр і вихід, а не ранг. Додайте ранг за RSI(14), який автор наводить як принципово інший.
  2. Околиця параметрів. Канал 40, 50, 60 днів і ширина 1.5, 2, 2.5 ATR; ROC 150, 200, 250; стоп 10, 15, 20%; трейлінг 20, 25, 30%. Дивіться на форму результату по сітці, а не на найкращу точку.
  3. Кількість позицій. 5, 10 і 20 позицій на одних і тих самих сигналах. Автор кількість не назвав, а від неї залежать концентрація і частка пропущених кандидатів.
  4. Помилка вцілілого. Порівняйте тест на історичному складі NASDAQ 100 з тестом на сьогоднішньому списку. Різниця покаже, скільки результату дав сам список. Окремо перевірте правило для паперів, виключених з індексу при відкритій позиції.
  5. Виходи в обвал. Трейлінг 25%, вихід за каналом і ротаційний вихід на одному всесвіті. Порахуйте, скільки позицій закрилося за один тиждень у березні 2020 року і у 2022 році. Різні виходи автор тримає саме для того, щоб у падінні вони не спрацьовували одночасно.
  6. Періоди без зростання. Окремо 2000-2002, 2008 і 2022 роки. Автор вважає вибірку 1995-2024 зміщеною в бік зростання.
  7. Жива просадка. Помножте максимальну просадку тесту на два, як радить автор. Перевірте, чи витримаєте ви таку просадку за вибраної кількості позицій.

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

TradingView (Pine Script)

  • Стратегія торгує лише символ графіка. Ранжування за ROC 200 між паперами і ліміт позицій у бектесті Pine не відтворюються. Сигнал із фільтром індексу і стопами можна перевірити на одному папері, але це інша система: без рангу входів більше.
  • Фільтр індексу на денному графіку: request.security("NASDAQ:NDX", "D", close > ta.sma(close, 200)). Таймфрейм збігається з графіком, зазирання вперед тут немає.
  • Реалізації каналу Кельтнера відрізняються: середина буває SMA або EMA, ширина через ATR або середній діапазон. Порахуйте канал явною формулою. ta.atr уже згладжений за Вайлдером.
  • Трейлінг 25% рахуйте ціною і передавайте в strategy.exit через stop. Параметри trail_points і trail_offset задаються в тиках.
  • Перевірте коригування на дивіденди й спліти: від нього залежать ROC 200 і рівні процентних стопів.

MultiCharts і TradeStation (EasyLanguage)

  • Ранжування і ліміт позицій робляться в портфельному модулі: Portfolio Maestro у TradeStation, Portfolio Trader у MultiCharts. Потрібні історичні склади індексу з виключеними паперами, у стандартних даних їх зазвичай немає.
  • AvgTrueRange це просте середнє TrueRange. Для ATR за Вайлдером рахуйте самі: ATRw = ATRw[1] + (TrueRange - ATRw[1]) / 50. Готові індикатори каналу Кельтнера влаштовані по-різному, звірте формулу.
  • Стоп задавайте ціною: Sell next bar at MaxList(EntryPrice * 0.85, HiClose * 0.75) stop, де HiClose ваша змінна максимального закриття. Ордер живе один бар, надсилайте його на кожному барі. SetDollarTrailing рахує в грошах і дає інший рівень.
  • У версії на одному графіку індекс підключається другим потоком: Close of Data2. Для SMA 200 і ROC 200 завантажуйте історію із запасом, перші MaxBarsBack барів стратегія не торгує.

MetaTrader 5 (MQL5)

  • Радник може ранжувати папери з Market Watch, але всі акції індексу мають бути в брокера. Історії складу індексу в брокера немає, тест піде на сьогоднішньому списку.
  • CFD на Nasdaq-100 (USTEC, NAS100) зазвичай слідує за ф'ючерсом і торгується майже цілодобово, а денний бар закривається за часом сервера. Фільтр за ним наближений. Значення беріть із закритого бару: iClose(symbol, PERIOD_D1, 1).
  • Історія CFD на акції часто коротша за біржову. SMA 200 і ROC 200 рахуються за однією й тією самою історією: до першої угоди потрібно близько 200 барів і ще запас на розігрів EMA 50 і ATR 50 за Вайлдером.
  • Позиція тримається місяцями. За CFD щоночі нараховується своп, перевірте, що тестер його враховує.

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

  • Автор показав систему як приклад простоти. Результатів, періоду тесту і кількості угод у випуску немає.
  • Кількість позицій, розмір, формулу каналу і базу трейлінгу дописали ми. Від кількості позицій результат залежить сильно.
  • Помилка вцілілого. Автор сам називає її вбудованою в індекс. Історичні склади NASDAQ 100 зазвичай платні, а тест на сьогоднішньому списку завищує результат.
  • У різкому падінні стоп 15% і трейлінг 25% спрацьовують майже на всіх паперах одразу, а гепи роблять збиток більшим за розрахунковий. Автор сам каже, що при обвалі такі виходи спрацьовують разом.
  • Результат трендової ноги тримається на небагатьох великих рухах. На короткому тесті їх може не виявитися, а період 1995-2024 автор вважає вдалим для лонгу.
  • Автор попереджає, що ранг, найкращий на історії, не зобов'язаний залишитися найкращим. Підбір рангу під найкращий тест перетворює цю систему на підгонку.

Джерела

  • 025 - Laurens Bensdorp - Balancing 55 Supermodels

    The Algorithmic Advantage · Laurens Bensdorp · 2024-09-02

    • 05:10Чотири ноги: тренд і повернення до середнього, лонг і шорт
    • 11:31У MR-системах: розмір за волатильністю зі стелею частки капіталу
    • 18:20Тренд лише на акціях S&P 500 і NASDAQ 100, помилка вцілілого в індексі
    • 52:09Система на NASDAQ 100: фільтр індексу і канал Кельтнера
    • 52:5020-30 кандидатів, ранг за ROC 200, стоп 15%, трейлінг 25%
    • 53:48Лише лонг: у шорта акцій корпоративний ризик
    • 54:13Ранжування і матриця некорельованості
    • 56:31Вихід: трейлінг 25% або канал униз
    • 57:31Короткий тренд на 20-денному каналі
    • 58:241964-1982 і зміщена вибірка 1995-2024
    • 59:04Ротаційний вихід при випаданні з топ-10
    • 1:32:02Жива просадка вдвічі більша за тестову
    • 1:38:03Половина капіталу тренд, половина повернення до середнього

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

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

  • Автор торгує 55 стратегій на акціях. Капітал ділиться приблизно порівну між трендовими системами і системами повернення до середнього.
  • Останні приблизно три роки трендові системи автора торгують лише акції з S&P 500 і NASDAQ 100. За його словами, в ці індекси вбудована помилка вцілілого: сильні папери туди додають, слабкі виключають.
  • Після фільтра індексу і каналу Кельтнера, за оцінкою автора, залишається близько 20-30 кандидатів. Доходності, просадки й періоду тесту для цієї системи у випуску немає.
  • З 1964 по 1982 рік S&P 500, за словами автора, 18 років стояв на місці з просадкою 50%. Вибірку 1995-2024 він вважає зміщеною в бік зростання.
  • Навіть за ретельного тестування автор чекає в реальній торгівлі максимальну просадку вдвічі більшу за тестову.

Схожі ідеї

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