Ідея коротко
Фільтр відповідає на питання: чи закінчилася корекція ринку і чи можна знову купувати пробої. Вільям О'Ніл, автор CANSLIM і засновник Investor's Business Daily, відповідає на нього днем підтвердження, follow-through day. Jack Corsellis розбирає правило наприкінці першої частини огляду книжки «How to Make Money in Stocks».
Ринок падає. Якогось дня індекс перестає оновлювати мінімум і починає спробу ралі: це день 1. З четвертого дня спроби чекаємо сильного зростання одного з головних індексів на обсязі, вищому, ніж напередодні. Такий день свідчить, що спроба ралі, найімовірніше, справжня. Найсильніші підтвердження приходять на 4-7 день. Сигнал не означає купувати все одразу: він дозволяє почати купувати якісні акції, які виходять із баз.
Чому це може працювати
Пояснення О'Ніла через інституційний попит. Відскок у перші дні після мінімуму тримається на закритті коротких позицій і дрібних купівлях. Сильне зростання на підвищеному обсязі через кілька днів показує, що увійшли великі гроші, здатні рухати індекс. Перші три дні пропускаються, щоб відсіяти відскок на день-два.
Аргумент О'Ніла асиметричний: кожен новий бичачий ринок починався з такого дня. Зворотне твердження хибне, і Джек це підкреслює: після підтвердження ринок може відкотитися, а частина підтверджень провалюється. Статистики у відео немає, лише приклади, вибрані заднім числом. Скільки підтверджень не привело до зростання, невідомо.
Відмінність від сусідніх фільтрів. index-ema-regime побудований на місячних і тижневих середніх і вмикає купівлі через тижні або місяць після розвороту. День підтвердження ловить розворот раніше, у перші дні спроби ралі (найсильніші на 4-7 день, у прикладах Джека до десятого, картка чекає до 25 днів), ціною хибних сигналів. Від breadth-regime він відрізняється даними: потрібен лише індекс і його обсяг, без статистики по всіх акціях.
Правила
Корекція і день 1 (Finetiq)
У відео корекцію і спробу ралі описано словами: ринок у низхідному тренді, потім день 1. На прикладах Джека день 1 це доджі біля мінімуму, бар розвороту після гепу вниз або свічка з довгою нижньою тінню. Пороги нижче наші.
// денні бари індексу: NASDAQ Composite або S&P 500
// спільнота (Джек): Dow з його 30 паперами важить менше
Correction = Close <= 0.92 * Highest(Close, 63) // Finetiq: 8% нижче 3-місячного максимуму
OR Close < EMA(Close, 21) на 10 закриттях поспіль // Finetiq: варіант без відсотка
NewLow = Low <= Lowest(Low, 20) // Finetiq: 20-денний мінімум
IF Correction AND NOT Attempt AND NewLow
CandidateLow = Low
IF CandidateLow задано AND NOT Attempt AND Close > Close[1] // Finetiq: перше закриття вгору після мінімуму
Attempt = TRUE; Day1Low = CandidateLow; DayCount = 1
// варіант: день нового мінімуму із закриттям у верхній половині діапазону вважати днем 1
IF Attempt
DayCount = DayCount + 1 на кожному наступному барі
IF Low < Day1Low // Finetiq: пробій мінімуму спроби
Attempt = FALSE; CandidateLow = Low // у відео цього правила немає, відлік заново
День підтвердження (автор, пороги Джека і Finetiq)
IF Attempt AND DayCount >= 4 // автор: починаючи з четвертого дня
Gain = Close / Close[1] - 1
FTD = Gain >= 1.5% // спільнота (Джек): не менше 1.5%, краще 2%
AND Volume > Volume[1] // автор: завжди вищий за вчорашній
AND Volume > Average(Volume, 30)[1] // Finetiq: жорстка умова; в автора «у більшості випадків»
// Finetiq: 30 днів, як на графіках Джека
FTD_Soft = Gain >= 1.5% AND Volume > Volume[1] // варіант без умови середньої, ближчий до слів автора
FTD_Strong = FTD AND Gain >= 2% AND DayCount <= 7 // автор: найсильніші на 4-7 день
IF Attempt AND DayCount > 25 AND NOT FTD // Finetiq: спроба без підтвердження застаріла
Attempt = FALSE
// у прикладах Джека підтвердження приходило і на десятий день
Стан ринку для стратегії (Finetiq)
// автор: підтвердження дозволяє почати купувати, а не купувати все одразу
IF FTD
MarketOK = TRUE; FTD_Day1Low = Day1Low; Attempt = FALSE
// коли дозвіл відкликається (Finetiq)
IF MarketOK AND Close < FTD_Day1Low // індекс пішов під мінімум спроби
MarketOK = FALSE
IF MarketOK AND Close < EMA(Close, 21) на 5 закриттях поспіль
MarketOK = FALSE
// після відкликання знову шукаємо корекцію і день 1
// на початку історії MarketOK = TRUE, якщо індекс вище EMA 21 і не в корекції
// спільнота (Джек): краще, якщо індекс повернувся вище EMA 21 (Mike Webster: під нею ринок мало дає)
MarketOK_Plus = MarketOK AND Close > EMA(Close, 21)
RiskMult = 0.5 у перші 10 днів після FTD, потім 1.0 // Finetiq: перші позиції менші
Підключення до карток бази (Finetiq)
// приклад 1: qullamaggie-breakout. Там режим за денними EMA 10 і 20 NASDAQ Composite
Allowed_A = RegimeOK // як у картці
Allowed_B = MarketOK // лише день підтвердження
Allowed_C = RegimeOK OR (MarketOK AND BarsSince(FTD) <= 10) // підтвердження вмикає купівлі раніше за середні
// вхід, стоп і супровід картки не змінюються
// приклад 2: index-ema-regime, варіант B (тижневі EMA 10 і 20)
EntryAllowed_FTD = (Uptrend AND NOT CashFlag) OR MarketOK // підтвердження знімає заборону до перетину середніх
Параметри
| Параметр | Значення | Звідки |
|---|---|---|
| Індекс | NASDAQ Composite або S&P 500, Dow важить менше | автор (один із головних індексів), спільнота (Джек: Dow важить менше) |
| Корекція | 8% нижче 3-місячного максимуму або 10 закриттів під EMA 21 | Finetiq |
| День 1 | перше закриття вгору після 20-денного мінімуму | Finetiq |
| Скасування спроби | пробій мінімуму дня 1 | Finetiq |
| Початок вікна підтвердження | 4-й день | автор |
| Найсильніше підтвердження | 4-7 день | автор |
| Межа очікування | 25 днів | Finetiq |
| Зростання в день підтвердження | не менше 1.5%, краще 2% | спільнота (Джек про правило О'Ніла) |
| Обсяг | вищий за вчорашній | автор |
| Обсяг вищий за середній | обов'язково в основній версії, варіант FTD_Soft без нього | Finetiq (автор: у більшості випадків) |
| Довжина середньої обсягу | 30 днів | спільнота (графіки Джека), вибір Finetiq |
| Індекс вище EMA 21 | бажано | спільнота (Джек зі слів Mike Webster) |
| Відкликання дозволу | під мінімумом дня 1 або 5 закриттів під EMA 21 | Finetiq |
| Розмір після сигналу | половина ризику перші 10 днів | Finetiq |
Що перевірити
- Що відбувається після підтверджень. Знайдіть усі дні підтвердження за 30-40 років на NASDAQ Composite і S&P 500 і порахуйте доходність індексу через 5, 20 і 60 днів. Порівняйте з випадковими днями всередині корекцій. Приклади Джека відібрані, для висновків їх мало.
- Частка провалів. Яка частина підтверджень скасувалася пробоєм мінімуму дня 1 у наступні 20 днів. Це кількість хибних дозволів, які отримає стратегія.
- Околиця порогів. Зростання 1%, 1.5%, 2%, 2.5%. Перший допустимий день 3, 4, 5. Корекція 6%, 8%, 10%. Джек каже, що поріг О'Ніла раніше був нижчим, тож на старій і новій історії найкращий поріг може різнитися.
- Обсяг. Умова «вищий за вчорашній» проти «вищий за вчорашній і вищий за середній» проти версії без обсягу. Якщо обсяг нічого не додає, фільтр переноситься на CFD.
- Підключення до стратегії. Пробійна стратегія з
qullamaggie-breakoutз режимом за середніми, з днем підтвердження і з обома. Дивіться, скільки угод фільтр додав у перші тижні після мінімуму і чим вони закінчилися. - Який індекс. NASDAQ Composite проти S&P 500 і проти сигналу на будь-якому з двох. В О'Ніла мова про один із головних індексів, і вибір змінює кількість сигналів.
Особливості платформ
TradingView (Pine Script)
- Якщо стратегія працює на внутрішньоденних барах паперу, індекс читайте через
request.securityз денним таймфреймом, зсувом[1]іlookahead = barmerge.lookahead_on. На денних барах беріть закритий бар індексу. - Перевірте, чи є в символу індексу обсяг і звідки він. Якщо його немає, обсяг беруть в ETF (QQQ, SPY) або у ф'ючерса, і це вже наближення.
- Стан спроби зберігайте в змінних
var. Лічильник днів має рахувати торгові дні індексу, а не бари графіка паперу з іншим розкладом. - Стратегія торгує лише символ графіка. Фільтр для кошика акцій перевіряється по одному паперу.
MultiCharts і TradeStation (EasyLanguage)
- Індекс підключається другим потоком (
Close of Data2,Volume of Data2). Лічильник днів ведіть лише на нових барах Data2. - Обсяг індексного символу залежить від постачальника даних. Звірте його з обсягом біржі за кілька дат: якщо це обсяг одного майданчика або його немає, умова обсягу втрачає сенс.
- На внутрішньоденних барах TradeStation повний обсяг історично лежить у
Ticks. Рахуйте фільтр на денних барах індексу. - Зростання рахуйте від учорашнього закриття індексу, а не від відкриття. На гепах різниця велика.
MetaTrader 5 (MQL5)
- У CFD на індекси лише тиковий обсяг (
iTickVolume). Умова «обсяг вищий за вчорашній» за ним описує активність котирувань у брокера, а не обсяг торгів. Реальний обсяг (iRealVolume) є лише в біржових інструментів. - NASDAQ Composite у CFD-брокерів майже не трапляється. NAS100 це NASDAQ-100, US500 близький до S&P 500. Дати сигналів на них відрізнятимуться від прикладів.
- Денний бар CFD закривається за серверним часом брокера, а не о 16:00 ET. Зростання за день у CFD і в кеш-індексу рахується від різних закриттів.
- Значення індексу беріть із закритого бару (зсув 1), інакше на історії сигнал побачить незакритий день.
Де ідея може зламатися
- У відео немає тесту, лише вдалі підтвердження з 1978 по 2022 рік. Провальних Джек не показує.
- Корекцію, день 1 і скасування спроби автор не формалізував. Від цих правил залежить, які дні стануть сигналом, і наша версія може давати інші дати, ніж у IBD.
- Поріг зростання змінювався: за словами Джека, в О'Ніла він був нижчим, а в оновленій версії близько 2%. Поріг, підібраний на історії, міг не існувати в момент сигналу.
- Сигнал рідкісний: корекції трапляються кілька разів за десятиліття, тож навіть за 30-40 років історії з перевірки 1 підтверджень на одному індексі набереться порядку десятків, а не сотень. Для висновків цього мало.
- Обсяг індексу за десятиліття змінився через електронну торгівлю й нові майданчики. Порівняння із вчорашнім днем це переживає, порівняння із середньою гірше.
- Правило описано всередині огляду CANSLIM і розраховано на купівлю лідерів із баз, а не на торгівлю самим індексом.