Ідея коротко
Andrea Unger, чотириразовий переможець World Cup Trading Championship, будує стратегії під кожен ф'ючерс окремо. Відправна точка в нього майже завжди одна. Купівля на пробої максимуму попередньої сесії, вихід наприкінці дня, обов'язковий стоп. Якщо такий скелет на ринку дає зростаючу, але ще непридатну для торгівлі криву, Unger шукає умови, за яких пробій працює краще.
Один із фільтрів він називає майже універсальним: денний ADX з періодом 5. Коли ADX нижче 35, пробій спрацьовує помітно краще, ніж при високому ADX. Високий ADX, за його поясненням, означає, що ринок уже багато пробіг і видихся.
Варіант B від Toby Crabel не додає правил входу. Він дає рідкісні цифри: частка продовження після виносу вчорашнього максимуму впала з 56% до 52 або 51%. Це привід виміряти розпад базового пробою за роками до того, як додавати до нього фільтри.
Чому це може працювати
Unger порівнює ринок із бігуном, який наздоганяє автобус. Після сильного спрямованого руху ринку важко одразу бігти далі, і пробій чергового максимуму частіше згасає. Коли ADX низький, ринок відпочив, і вихід за вчорашній максимум частіше стає рухом на весь день. Горизонт, для якого це справджується, він називає сам: усередині дня або три-чотири дні.
Індикатори Unger не використовує як сетап, лише як фільтр умов. Метод він описує прямо. Один і той самий вхід проганяється окремо за наявності умови і за її відсутності. Якщо результат змінюється статистично, умову перевіряють на здоровий глузд: чи є в неї пояснення, чи це збіг.
Crabel пояснює, чому такі пробої слабшають. Ринки торгуються цілодобово, і замість відкриття та вчорашніх екстремумів з'явилося 10-20 точок відліку. Закриття попереднього дня стало важливішим, ніж раніше. Навколо одно- і дводенних максимумів і мінімумів стоїть багато заявок, пов'язаних з опціонами, ринки там зупиняються, і повернення до середнього стало більше. Зсув імовірності на кілька відсотків, за його словами, сильно змінює підсумок торгівлі.
Цифр щодо фільтра ADX Unger не називає. Це його оцінка з досвіду на своїх ринках.
Правила
Фільтр (автор)
// денний ряд: Unger бере 1440-хвилинні бари, щоб закриттям була остання угода дня, а не settlement
DailyADX = ADX(5) за вчорашнім закритим денним баром // автор: період 5
// Finetiq: згладжування Вайлдера, як у стандартному ADX
TradeAllowed = DailyADX < 35 // автор: «нижче 40 або 35»
Вхід (автор)
// 15-хвилинний графік, ліквідні ф'ючерси CME і EUREX
PrevHigh = максимум попередньої сесії
PrevLow = мінімум попередньої сесії
IF TradeAllowed AND TradesToday = 0
BUY STOP at PrevHigh + 1 тік // автор: пробій максимуму попередньої сесії; Finetiq: відступ 1 тік
// Finetiq: дзеркальний шорт на пробої PrevLow. Unger описує лонг, шорт перевіряйте окремо
// Finetiq: одна угода на день
Вихід (автор, розміри Finetiq)
StopLoss = EntryPrice - 0.5 * DailyATR(20) // автор: стоп обов'язковий завжди; Finetiq: розмір
EXIT at SessionClose - 15 хв // автор: вихід наприкінці дня; Finetiq: час
// інші виходи скелета в автора: через два дні або за тейк-профітом, розміри не названо
Як Unger перевіряє фільтр (автор)
Run A: той самий вхід і вихід, лише дні з DailyADX < 35
Run B: той самий вхід і вихід, лише дні з DailyADX >= 35
// порівняти середню угоду, профіт-фактор і форму кривої
// умова береться в систему, якщо різниця помітна і в неї є пояснення
// відсів за витратами: тест на 1 контракт без комісій,
// але середня угода має із запасом покривати комісію і прослизання
Варіант B. Перевірка розпаду за Toby Crabel
// подія: ціна протягом дня перевищила максимум попередньої сесії
Event = High > PrevHigh
// продовження: Crabel визначення не назвав, далі Finetiq
Continued = Close > PrevHigh // день закрився вище пробитого рівня
// варіант: Close > PrevHigh + 0.25 * DailyATR(20)
ContinuationRate[рік] = кількість днів (Event AND Continued) / кількість днів Event
// Crabel: раніше близько 56%, зараз 52%, 51% або менше
// рахувати за роками, окремо для днів з DailyADX < 35 і >= 35
// дзеркально для виносу вчорашнього мінімуму
Параметри
| Параметр | Значення | Звідки |
|---|---|---|
| Ринки | ліквідні ф'ючерси CME і EUREX | автор |
| Таймфрейм входу | 15 хвилин | автор (основний ТФ Unger) |
| Рівень входу | максимум попередньої сесії | автор |
| Відступ | 1 тік | Finetiq |
| Фільтр | денний ADX(5) < 35 | автор |
| Другий поріг | 40 | автор |
| Денний бар | 1440-хвилинний, закриття без settlement | автор |
| Стоп | обов'язковий, 0.5 × денний ATR(20) | автор (наявність), Finetiq (розмір) |
| Вихід | кінець дня | автор |
| Альтернативні виходи | через 2 дні, тейк-профіт | автор, розміри не названо |
| Шорт | дзеркально на мінімумі | Finetiq |
| Угод на день | 1 | Finetiq |
| Продовження у варіанті B | закриття вище пробитого максимуму | Finetiq |
Що перевірити
- Фільтр за методом автора. Два прогони одного входу й виходу: ADX(5) нижче 35 і не нижче 35. Unger каже, що різниця величезна. Якщо на вашому ринку її немає, фільтр не потрібен.
- Околиця фільтра. Період ADX 4, 5, 7 і 10, поріг 25, 30, 35 і 40. Стійкий фільтр дає схожий результат у сусідніх значеннях. Unger сам називає два пороги, 35 і 40.
- Розпад за роками. Порахуйте частку продовження з варіанту B за кожен рік і окремо для днів із фільтром і без. Перевірте цифри Crabel на своїх ринках і те, чи утримує ADX частку вище 52%.
- Який денний бар. ADX за денними барами з settlement проти 1440-хвилинних барів. Unger перейшов на 1440 хвилин саме через settlement.
- Яка сесія. Максимум основної сесії проти максимуму цілодобової. У ф'ючерсів це різні рівні, і Crabel каже, що цілодобова торгівля змінила самі точки відліку.
- Середня угода проти витрат. Головний відсів автора. Якщо середня угода на один контракт близька до $80 на mini NASDAQ або нижча, Unger таку систему не торгує. Додайте комісію і 1-2 тіки прослизання на стоп-ордер входу і на вихід.
- Гепи і лонг проти шорту. Окремо подивіться дні, коли ринок відкрився вище вчорашнього максимуму і стоп-ордер виконався одразу. На індексах порівняйте лонг із дзеркальним шортом: автор описує лише лонг.
Особливості платформ
TradingView (Pine Script)
- Денний ADX на 15-хвилинному графіку без зазирання вперед:
request.security(syminfo.tickerid, "D", adx[1], lookahead = barmerge.lookahead_on), деadxзta.dmi(5, 5). Без[1]бектест побачить сьогоднішній незакритий ADX. ta.dmiрахує ADX за Вайлдером, як стандартний індикатор в EasyLanguage.- Учорашній максимум теж беріть через
request.securityзі зсувом[1]. Денний бар ф'ючерса CME починається о 18:00 ET, тому такий максимум включає нічну торгівлю. Максимум лише основної сесії рахуйте самі за вікном часу. - Стоп-ордер:
strategy.entry("L", strategy.long, stop = prevHigh + syminfo.mintick). Якщо день відкрився вище рівня, ордер виконається за першою доступною ціною, а не за рівнем.
MultiCharts і TradeStation (EasyLanguage)
- Kevin Davey (The Algorithmic Advantage, #036) описує ту саму пастку, що й Unger. У денного бару ф'ючерса в TradeStation закриття це settlement, у 1440-хвилинного бару остання угода. ADX і сигнали на двох видах бару різняться. Бектест і торгівлю ведіть на одному виді.
- Денний ряд підключіть другим потоком (
Data2) і берітьADX(5) of Data2на закритому денному барі. Buy next bar at PrevHigh + MinMove / PriceScale stopживе один бар. Надсилайте його на кожному 15-хвилинному барі, поки за день не було входу.- Вихід наприкінці дня:
If Time >= 1545 then Sell next bar at marketпри закритті сесії о 16:00 (бар підписано часом закриття).SetExitOnCloseу реальній торгівлі не спрацьовує.
MetaTrader 5 (MQL5)
- У MT5 два ADX:
iADXз іншим згладжуванням іiADXWilder. Щоб збігтися з Pine і EasyLanguage, берітьiADXWilder(_Symbol, PERIOD_D1, 5), значення із закритого бару (зсув 1). - Денний бар будується за часом сервера брокера. У брокерів із сервером не в GMT+2/+3 бувають короткі недільні бари. При періоді 5 один такий бар це п'ята частина вікна ADX.
- Учорашній максимум
iHigh(_Symbol, PERIOD_D1, 1)у CFD це максимум доби за сервером, а не максимум основної сесії біржі. Поріг ADX 35 автор підібрав на ф'ючерсах, на денних барах CFD його треба перевіряти заново. - Відкладений
BuyStopчерезCTradeставте з експірацією до кінця дня, щоб невиконаний ордер не залишився на завтра.
Де ідея може зламатися
- Цифр щодо фільтра ADX немає. «Набагато краще» це оцінка Unger за його ринками і його версіями стратегії, які він додатково допрацьовує під кожен ринок.
- Unger сам каже, що скелет «пробій учорашнього максимуму, вихід наприкінці дня» зазвичай непридатний для торгівлі: середня угода не покриває витрат. Фільтр скорочує кількість угод, а витрати залишаються головним ризиком.
- Цифри Crabel наведено без ринку, періоду й визначення продовження. Якщо зсув із 56% до 51% реальний, базовий пробій близький до підкидання монети, і весь едж має давати фільтр.
- Crabel пов'язує зупинки біля одно- і дводенних екстремумів з опціонними заявками і зростанням повернення до середнього. Це аргумент радше проти пробою вчорашнього максимуму, ніж за нього.
- Розміру стопа й тейка автор не назвав. Стоп змінює результат сильніше за поріг ADX, і його легко підігнати.
- Максимум «попередньої сесії» у цілодобових ф'ючерсів, кеш-індексів і CFD це три різні рівні. Результат тесту залежить від вибору сильніше, ніж здається.