Ідея коротко
Brent Penfold дванадцять років торгував за хвилями Еліотта і двічі втрачав торговий рахунок. Перелом стався після розмови з брокером Jeff Morgan. Той спокійно сказав, що ф'ючерс на австралійський індекс SPI щойно зробив свій медіанний рух, три закриття поспіль вище, тому він чекає відкату і шукає місце для продажу. Наступного дня ринок упав. Після цього Penfold почав шукати статистику замість думок і став механічним трейдером.
Пізніше він порахував довжину серій закриттів в один бік на своїх 30 ринках. За його даними, одне стандартне відхилення довжини серії близько 2.4 дня, два близько 5 днів, і цифра майже не змінюється між ринками, секторами й десятиліттями. Звідси проста гіпотеза: серія з трьох закриттів вище вже довша за типову, і наступний день частіше йде проти неї.
Від автора в картці сетап (три закриття вище, чекати відкату) і статистика серій. Вхід, стоп, вихід і дзеркальна сторона наші.
Чому це може працювати
Penfold пояснює так. Якщо зняти з ринків назви і дивитися лише на ряд цін, вони однакові: усі трейдери по суті торгують волатильність, а в неї стійкий ритм. Він згадує Джорджа Тейлора, торговця зерном 1930–40-х років. Тейлор ділив ринок на триденний цикл: день купівлі, день продажу, день шорту. Іноді цикл розтягувався до четвертого чи п'ятого дня. Penfold вважає, що його 2.4 дня описують те саме явище.
Застереження Finetiq. Статистика серій сама по собі розвороту не доводить. Нехай дні зростання і падіння рівноймовірні й не залежать один від одного. Тоді половина серій завдовжки 1 день, чверть завдовжки 2, ще чверть 3 і більше. У такій моделі 75% серій не довші за два дні і близько 97% не довші за п'ять. Це близько до чисел автора, якщо читати їх як частку серій. Однакові цифри на різних ринках можуть означати лише, що денні зміни схожі на підкидання монети.
Едж є, лише якщо після трьох закриттів вище закриття нижче наступного дня трапляється помітно частіше, ніж звичайно. Це перевіряється за вечір без жодної торгової системи, див. «Що перевірити».
Правила
Серії закриттів
// денні бари
IF Close > Close[1] THEN UpStreak = UpStreak[1] + 1; DnStreak = 0
ELSE IF Close < Close[1] THEN DnStreak = DnStreak[1] + 1; UpStreak = 0
ELSE UpStreak = 0; DnStreak = 0
// Finetiq: закриття, що дорівнює попередньому, обриває обидві серії
Вхід
Setup = UpStreak == 3 // автор: три закриття поспіль вище, чекаємо відкату
// Finetiq: рівно 3, а не «3 і більше», щоб на одну серію був один сигнал
// Варіант A: вхід одразу
IF Setup AND MarketPosition == 0
SELL SHORT AT NEXT BAR OPEN // Finetiq
// Варіант B: вхід, лише якщо відкат почався
IF Setup AND MarketPosition == 0
SELL SHORT STOP at Low - 1 tick // Finetiq: пробій мінімуму третього бару
// ордер живе один наступний бар, потім CANCEL
Стоп і вихід (Finetiq)
StopLoss = Highest(High, 3) + 0.5 * ATR(14) // над максимумом серії
EXIT STOP at StopLoss
IF UpStreak >= 5 THEN EXIT AT NEXT BAR OPEN // серія дійшла до двох відхилень автора
IF Close < Close[1] THEN EXIT AT NEXT BAR OPEN // відкат стався: перше закриття нижче
IF BarsSinceEntry >= 3 THEN EXIT AT NEXT BAR OPEN // за триденним циклом з розповіді автора
Дзеркальна сторона (Finetiq)
// автор говорить лише про продаж після зростання. Купівля після падіння це наша симетрія
IF DnStreak == 3 AND MarketPosition == 0
BUY AT NEXT BAR OPEN
// стоп під мінімумом серії, виходи дзеркально
Перерахунок статистики серій (Finetiq)
// коли серія обірвалася, записуємо її довжину
IF UpStreak[1] > 0 AND UpStreak == 0 THEN Add(UpLengths, UpStreak[1])
IF DnStreak[1] > 0 AND DnStreak == 0 THEN Add(DnLengths, DnStreak[1])
MeanLen = Average(UpLengths)
StdLen = StdDev(UpLengths)
Share2 = частка серій завдовжки 1–2 дні
Share5 = частка серій завдовжки 1–5 днів
// питання, від якого залежить уся ідея
P_all = частка днів, де Close < Close[1]
P_after3 = частка днів, де Close < Close[1], серед днів з UpStreak[1] == 3
// контроль: ті самі денні зміни у випадковому порядку, 100 перестановок
// для кожної перестановки перерахувати StdLen, Share2, Share5 і P_after3
Параметри
| Параметр | Значення | Звідки |
|---|---|---|
| Таймфрейм | денні бари | автор |
| Довжина серії для сигналу | 3 закриття поспіль вище | автор |
| Напрямок | продаж після зростання | автор |
| Купівля після трьох закриттів нижче | дзеркально | Finetiq |
| Рівне закриття | обриває серію | Finetiq |
| Вхід | відкриття наступного бару або стоп під мінімумом третього бару | Finetiq |
| Стоп | максимум трьох барів + 0.5 × ATR(14) | Finetiq |
| Вихід за довжиною серії | 5 закриттів поспіль вище | Finetiq (число автора: два відхилення) |
| Вихід за відкатом | перше закриття нижче попереднього | Finetiq |
| Вихід за часом | 3 бари | Finetiq |
Що перевірити
- Перерахувати статистику автора на своїх даних. За блоком вище зберіть довжини всіх серій, середнє, стандартне відхилення, частки серій до 2 і до 5 днів. Потім перемішайте порядок денних змін (самі зміни не чіпайте) і порахуйте те саме 100 разів. Якщо реальні цифри лежать усередині діапазону перемішаних, серії на вашому ринку поводяться як випадкові, і 2.4 дня нічого не кажуть про розворот.
- Умовна ймовірність без торгівлі. Порівняйте
P_after3зP_allі з тим самим значенням на перемішаних рядах. Повторіть для серій завдовжки 2, 4 і 5. Якщо після трьох закриттів вище падіння не частіше, ніж звичайно, правила входу й виходу еджу не створять. - Околиця довжини серії. Проженіть вхід після 2, 3, 4 і 5 закриттів. Автор виділяє 3. Якщо результат є лише на 3, це схоже на випадковість вибірки.
- Вхід одразу чи за пробоєм мінімуму. Варіант A проти варіанта B. Другий пропускає угоди, де відкат так і не почався, але входить нижче і платить пропущеними рухами.
- Сторони й режим окремо. Рахуйте продажі після зростання і купівлі після падіння окремо, і окремо вище та нижче SMA(200). В індексів акцій тривалий висхідний дрейф, шорт проти нього може програвати навіть за реального короткострокового відкату.
- Витрати. За випадкових днів серія з трьох і більше закриттів вище трапляється приблизно 15 разів на рік на ринок, стільки ж униз. Угода триває 1–3 дні. Додайте спред, комісію і своп CFD і подивіться, чи залишається середня угода додатною.
- Однорідність ринків. Автор стверджує, що ринки однакові. Проженіть одні й ті самі правила без підлаштування на індексах, ставках, валютах і сировині. Дивіться на медіану за секторами, а не на найкращий ринок.
Особливості платформ
TradingView (Pine Script)
- Серія рахується лічильником:
var int up = 0іup := close > close[1] ? up + 1 : 0. На інструментах із великим кроком ціни рівні закриття трапляються часто, перевірте, що обнулення збігається з вашим визначенням. - Варіант A збігається з виконанням за замовчуванням: сигнал на закритті, вхід на відкритті наступного бару (
process_orders_on_close = false). Ціна входу включає нічний геп. - Стоп-ордер варіанта B через
strategy.entry(..., stop = low)висить, доки його не скасують. За правилом він живе один бар, тому на наступному барі потрібенstrategy.cancel. - Угод багато, і вони короткі. Задайте
commission_valueіslippageуstrategy(), інакше тест покаже результат без витрат.
MultiCharts і TradeStation (EasyLanguage)
- У ф'ючерсів у TradeStation закриття денного бару це settlement, а в 1440-хвилинного бару остання угода. Серії закриттів на двох видах бару виходять різними, і сигнали розходяться. Тестуйте й торгуйте на одному виді бару.
Sell Short next bar at Low stopживе рівно один бар. Це збігається з варіантом B без окремого скасування.- Стоп ставте ціною:
Buy to Cover next bar at StopLoss stop.SetStopLossзадається в грошах і може дати інший рівень. - Вихід за часом:
If BarsSinceEntry >= 3 then Buy to Cover next bar at market.
MetaTrader 5 (MQL5)
- Денний бар будується за часом сервера брокера. У серверів не в GMT+2/+3 бувають короткі недільні бари. Вони додають зайві закриття і зсувають підрахунок серій. Порівняйте денні закриття брокера з біржовими.
- Ціна CFD на індекс відрізняється від закриття ф'ючерса. Серії на CFD можуть не збігтися із серіями в даних автора.
- Сигнал рахуйте за закритим баром (індекс 1) і один раз на новому денному барі.
- За перенесення позиції через ніч по CFD нараховується своп. При утриманні 1–3 дні він помітно ріже невелику середню угоду.
Де ідея може зламатися
- Тесту цих правил в автора немає. Є один епізод з SPI і статистика довжини серій. Торгові правила повністю наша формалізація.
- Збіг 2.4 дня на всіх ринках може бути властивістю випадкового ряду, а не розвороту. Перевірка 1 це покаже.
- Автор говорить про медіанний рух, стандартне відхилення і 68% серій як про одне й те саме. Як він рахував, в інтерв'ю не сказано. Ваші цифри можуть не збігтися з його навіть на тих самих ринках.
- Шорт після зростання на індексах акцій іде проти багаторічного дрейфу. Загальний результат для двох сторін може приховати, що працює лише одна.
- Середня угода коротка й невелика. Прослизання на відкритті, спред і своп CFD з'їдають її швидше, ніж у трендових систем.
- Дані автора: 30 ф'ючерсних ринків з 1980 року. На короткій історії CFD частки серій і умовні ймовірності нестабільні.