Ідея коротко
Brendan з Trivium System Trading торгує портфель із понад 30 внутрішньоденних breakout-стратегій на CFD: біткоїн, індекси США, DAX, Nikkei, золото, нафта і кілька валютних пар. Стратегії згенеровано в StrategyQuant X (SQX). Конкретних умов входу він не розкриває.
Розкрито каркас, спільний для всіх стратегій. Вхід стоп-ордером на пробої, обов'язковий стоп в ATR, цілі в більшості стратегій немає, усе закривається наприкінці дня. На індексах він починає лише з купівель.
Картка описує цей каркас як шаблон. Щоб було що тестувати, рівень пробою і фільтри в ній задано нами й позначено. Цінність ідеї у виході та в процесі перевірки. Конкретний сигнал тут замінна частина.
Чому це може працювати
Пояснення автора стосується форми розподілу угод. Протягом дня стратегії отримують серію дрібних стопів, а кілька угод ідуть у прибуток і доживають до закриття. Без цілі пробій сам вирішує, скільки пройти, і співвідношення прибутку до ризику зростає. За словами автора, генетичний пошук SQX на пробоях сам частіше обирає стратегії без цілі.
Закриття наприкінці дня додає угод: 100-400 на рік на стратегію. Велика вибірка, з його досвіду, робить перевірку надійнішою, особливо на out-of-sample даних.
ATR-стоп він пояснює зростанням цін. Стоп у 200 пунктів на біткоїні у 2017 році був розумним, зараз його виб'є одразу. Лонг на індексах пояснюється так само просто: індекси ростуть роками, лонгові стратегії швидко будуються і частіше проходять out-of-sample, а шорти на індексах він називає плаванням проти течії.
Сигнали автор збирає з бінарних умов без параметрів оптимізації. Приклад: учорашня денна свічка закрилася вище відкриття. Менше параметрів означає менше місця для підгонки. Усе це досвід автора, ми його не перевіряли.
Правила
Напрямок і фільтри (автор, комбінація Finetiq)
// ринок: CFD на індекс США, в автора стартовий ринок NASDAQ
// таймфрейм побудови: 30 хвилин (раніше автор будував на 60)
Direction = LONG ONLY // автор: на індексах та інших зростаючих ринках починати з лонга
// бінарні умови без оптимізованих параметрів (приклади автора)
F1 = Close[D1, 1] > Open[D1, 1] // учорашній день закрився вище відкриття
F2 = Close[D1, 1] > SMA(Close[D1], 200)[1] // денне закриття вище 200-періодної середньої
// Finetiq: тип середньої автор не назвав, беремо SMA
Filter = F1 AND F2 // Finetiq: які умови і в якій комбінації, автор не розкриває
Вхід (Finetiq)
// автор: усі стратегії входять стоп-ордером на пробій.
// Рівень пробою генерує SQX, автор його не розкриває. Далі стартовий варіант Finetiq
SessionOpen = 09:30 ET // кеш-сесія NASDAQ
N = 4 // перші 2 години на 30-хвилинних барах
Level = максимум High перших N барів сесії
IF Filter AND Time >= SessionOpen + 2 години AND Time < 15:00 ET AND TradesToday = 0
BUY STOP at Level + 1 тік
// приклад умови, яку знаходив SQX (автор): максимум заданого вікна сесії вище відкриття тритижневої давнини
Стоп, ціль і вихід (автор, розміри Finetiq)
StopLoss = EntryPrice - 1.5 * ATR(14) // автор: стоп на кожній угоді, лише в ATR
// Finetiq: множник, період і таймфрейм ATR
// цілі в більшості стратегій автора немає
// частина стратегій використовує трейлінг-стоп, параметри не названо
EXIT at SessionClose // автор: закриття наприкінці дня
// Finetiq: для CFD на індекс США закриваємо на останньому 30-хвилинному барі до 16:00 ET
Ризик і витрати (автор)
// ризик однаковий для всіх стратегій портфеля
// розмір ризику рахується від найгіршої просадки Монте-Карло всього портфеля
// у транскрипті звучить «.1% or 2%»: радше 0.1-0.2% на угоду, фраза нерозбірлива
// витрати при побудові на старій історії
SpreadHist = SpreadNow * PriceThen / PriceNow // автор: на старих даних спред зменшувати; Finetiq: формула
// фінальна перевірка на останніх двох роках: поточний спред + 5-10% і прослизання (автор)
Перевірки, через які автор пропускає кожну стратегію
1. дані: специфікації контракту як у свого брокера, тікові дані, пояс брокера
2. два кроки out-of-sample, поділ приблизно 50/50 або більше out-of-sample
3. мультиринковий тест: та сама логіка на інших індексах, DAX, Nikkei, біткоїні, золоті; дивитися медіану
4. Монте-Карло: перестановка угод, даних і параметрів
5. портфель: кореляція місячного P&L між стратегіями нижче 0.2-0.25
6. звірка бектесту й live в MT5: час угод, витрати, метрики, форма кривої
Параметри
| Параметр | Значення | Звідки |
|---|---|---|
| Таймфрейм | 30 хвилин, раніше 60 | автор |
| Напрямок на індексах | лише лонг | автор |
| Тип входу | стоп-ордер на пробій | автор |
| Рівень пробою | максимум перших 4 барів сесії | Finetiq |
| Фільтри | учора закриття вище відкриття, закриття вище 200-періодної середньої | автор (приклади), Finetiq (комбінація) |
| Стоп | обов'язковий, в ATR | автор |
| Множник і період ATR | 1.5 × ATR(14) | Finetiq |
| Ціль | немає в більшості стратегій | автор |
| Вихід | кінець дня | автор |
| Час виходу | останній 30-хвилинний бар до 16:00 ET | Finetiq |
| Угод на рік на стратегію | 100-400 | автор |
| Спред у фінальній перевірці | поточний + 5-10%, плюс прослизання | автор |
| Кореляція стратегій у портфелі | місячний P&L нижче 0.2-0.25 | автор |
| Ліміт просадки портфеля | 20% | автор |
Що перевірити
- Вихід наприкінці дня проти цілі. Головне твердження автора. Проженіть один вхід із виходом лише за стопом і закриттям, з ціллю 1, 2 і 3 ATR і з трейлінг-стопом. Порахуйте, яка частка прибутку припадає на угоди, що дожили до закриття.
- Околиця стопа. Множник ATR 1, 1.5, 2 і 3, період 10, 14 і 20. Якщо прибуток тримається в одній вузькій точці, стоп підігнаний.
- Тіки проти хвилинних OHLC. Автор побачив сильну деградацію частини стратегій при переході з 1-хвилинних даних на тікові, хоча угоди тривали годинами. Порівняйте обидва режими до запуску на реальному рахунку.
- Спред на старій історії. Поточний спред на даних 2012 року завищує витрати, пропорційно зменшений чесніший. Потім прогін останніх двох років із поточним спредом +10% і прослизанням.
- Мультиринковий тест. Логіку, знайдену на NASDAQ, без змін проженіть на S&P 500, Dow, DAX і Nikkei. Автор чекає хоча б прибутковості на корельованих індексах і дивиться медіану за ринками.
- Фільтри по одному. Додавайте бінарні умови по черзі до чистого пробою. Перевірте, чи росте середня угода, чи лише падає кількість угод.
- Лонг проти шорту. Перевірте на своїх даних твердження автора, що шорти на індексах будуються погано.
Особливості платформ
TradingView (Pine Script)
- Стоп-ордер пробою і ATR-стоп на 30-хвилинних барах часто опиняються в одній свічці. Порядку всередині бару тестер не знає:
use_bar_magnifier = true(платні плани) або молодший таймфрейм. Це та сама пастка, через яку в автора розійшлися хвилинний і тіковий тести. ta.atrзгладжує за Вайлдером, аiATRу MT5 це просте середнє TR. Стоп у Pine не збіжиться зі стопом радника на тих самих даних, якщо не вирівняти формулу.- Денні умови без зазирання вперед:
request.security(syminfo.tickerid, "D", close[1] > open[1], lookahead = barmerge.lookahead_on). - Кінець дня в CFD задайте самі через
time()з поясом біржі. Інакше позиція доживе до кінця доби символу, а це інший вихід.
MultiCharts і TradeStation (EasyLanguage)
Buy next bar at Level stopживе один бар. Надсилайте ордер на кожному барі, поки рівень актуальний і за день не було входу.Timeце час закриття бару. Останній 30-хвилинний бар сесії маєTime = 1600. Вихід за ринком перед закриттям на такому графіку можливий лише на відкритті цього бару:If Time >= 1530 then Sell next bar at market. Для пізнішого виходу потрібен хвилинний потік даних.SetExitOnCloseпрацює в бектесті, але не в реальній торгівлі, тому замінювати ним вихід за часом не можна.AvgTrueRangeце просте середнє TrueRange. Денні умови рахуйте за другим потоком із денними барами (Data2).
MetaTrader 5 (MQL5)
- Автор торгує саме в MT5, але радники з SQX збігалися з бектестом не завжди. Тестуйте в режимі «Every tick based on real ticks», а не за хвилинними OHLC.
- Відкриття і кінець сесії рахуються за часом сервера брокера. 09:30 і 16:00 ET переводьте в серверний час з урахуванням літнього часу.
TimeGMT()у тестері дорівнює серверному часу. iATRце просте середнє TR. Стоп задається в ціні:EntryPrice - 1.5 * atr.- Специфікації CFD (розмір контракту, крок ціни, вартість тіку) у брокерів різні. Автор називає невідповідність даних SQX і брокера першою причиною розбіжностей. Беріть
SYMBOL_TRADE_TICK_VALUEіSYMBOL_TRADE_TICK_SIZEу свого брокера.
Де ідея може зламатися
- Конкретних входів автор не розкриває. Трек стосується портфеля з 30+ різних стратегій, а не каркаса з рівнем пробою з цієї картки.
- Інтерв'ю вийшло на каналі StrategyQuant, автор продає курс із SQX. Трек на Myfxbook публічний, але доходність в інтерв'ю названо приблизно, за середнім за період.
- Едж, за словами автора, живе на рівні портфеля. В окремих стратегій застої сягають пари років, і одиночна стратегія на цьому каркасі може бути непридатною для торгівлі.
- Каркас «стоп-ордер на вході, вихід наприкінці дня» чутливий до моделі виконання. Автор бачив, як стратегії, добрі на хвилинних даних, розвалювалися на тіках, і пояснення так і не знайшов.
- Ризик на угоду в транскрипті нерозбірливий: 0.1-0.2% або до 2%. Різниця на порядок змінює просадку.
- Від чверті до третини прибутку дають 4-5 стратегій на біткоїні. Така концентрація може не проявитися в кореляції місячного P&L, але проявиться в поганий для біткоїна рік.