Идея коротко
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, но проявится в плохой для биткоина год.