Идея коротко
Andrea Unger, четырёхкратный победитель World Cup Trading Championship, строит отдельную стратегию под каждый фьючерс. Индикаторы в сетапах он почти не использует, только как фильтры условий. Полосы Боллинджера он выделяет: для него это не индикатор, а измерение места на графике, точка, где стоит действовать.
Сетап описан одной фразой. На 30-минутном графике цена оказывается за полосой. Когда она возвращается внутрь конверта, можно открывать сделку против движения, обязательно со стопом. Закрытие под нижней полосой и возврат дают покупку, закрытие над верхней и возврат дают продажу. По словам Unger, для разворотных входов полосы часто работают лучше статичных уровней: pivot points или прошлых экстремумов.
Сам Unger называет это хорошим сетапом для изучения, а не готовой системой. Длину полос, ширину в стандартных отклонениях, стоп и выход он не назвал. Ниже они заданы нами как стартовые значения и помечены.
В базе уже есть две карточки с полосами Боллинджера. W-дно (#035) торгуется на дневках и требует двух минимумов и подтверждения разворота. Сквиз (#018) использует ширину полос как фильтр режима перед пробоем. Здесь один выход за полосу, немедленный вход на возврате, внутри дня и в обе стороны.
Почему это может работать
Unger объясняет выбор направления природой рынка. Одни рынки годятся для пробоев. Другие почти всегда лучше торговать против движения: покупать провалы и продавать максимумы. Какой рынок какой, он проверяет простыми скриптами на истории и не пытается торговать тренд там, где рынок никуда не ходит. Сам он вырос на E-mini S&P 500, называет его рынком с возвратом к среднему и признаётся, что пробойные входы на нём ему неприятны, даже когда зарабатывают. Там он предпочитает покупать лимитными ордерами против движения.
Полосы подстраиваются под текущую волатильность. Статичный уровень одинаков в тихий и в бурный день. Выход за полосу означает, что движение необычно велико для последних баров, а возврат внутрь показывает, что давление иссякло хотя бы на один бар.
Таймфрейм 30 минут у автора принципиален. Он считает, что младшие графики забиты шумом: на 5-минутном баре один тик заметно меняет диапазон, и индикаторы на таком графике он строить не стал бы. Сравнения полос с pivot points в цифрах в интервью нет, это опыт автора.
Правила
Полосы и сетап
// 30-минутные бары фьючерса // автор: 30 минут, не мельче
Mid = SMA(Close, 20) // Finetiq: классическая длина
Dev = StdDev(Close, 20) // генеральное отклонение, как в стандартных полосах
Upper = Mid + 2 * Dev // Finetiq: 2 стандартных отклонения
Lower = Mid - 2 * Dev
SetupLong = Close[1] < Lower[1] // автор: цена вне конверта
SetupShort = Close[1] > Upper[1] // Finetiq: «вне» считаем по закрытию
Вход
// автор: цена вернулась внутрь конверта, сделка против движения
IF SetupLong AND Close > Lower THEN BUY AT NEXT BAR OPEN
IF SetupShort AND Close < Upper THEN SELL SHORT AT NEXT BAR OPEN
// условие срабатывает на первом закрытии внутри, сколько бы баров цена ни провела снаружи
// вариант для проверки: лимитный вход после возврата
// (автор на E-mini предпочитает лимитные ордера против движения)
IF SetupLong AND Close > Lower
BUY LIMIT at Lower // Finetiq: ждём отката к полосе, ордер живёт 1 бар
Стоп (Finetiq)
// автор: стоп обязателен, размер не назван
ExtremeLow = Lowest(Low, N) за бары вне полосы и бар возврата
ExtremeHigh = Highest(High, N) за те же бары
Long: StopLoss = ExtremeLow - 0.25 * ATR(14) // Finetiq: за экстремум выхода из полосы
Short: StopLoss = ExtremeHigh + 0.25 * ATR(14)
// слишком далёкий стоп: сигнал пропускаем
IF |Close - StopLoss| > 2 * ATR(14) THEN CANCEL // Finetiq
Выход (Finetiq)
// что наступит раньше
Long: SELL LIMIT at Mid // Finetiq: цель средняя линия, пересчёт на каждом баре
Short: BUY LIMIT at Mid
EXIT STOP at StopLoss
EXIT at SessionClose - 30 мин // Finetiq: по образцу скелетов автора с выходом в конце дня
// вариант: держать до конца второй сессии (в скелетах автор упоминает и выход через два дня)
// ограничители
не больше 1 позиции одновременно // Finetiq
новых входов нет в последний час сессии // Finetiq
Выбор рынка (автор, формализация Finetiq)
// автор: контртренд торгуется только там, где рынок исторически склонен к возврату
// Finetiq: на обучающем периоде прогнать этот вход и зеркальный пробойный
// (покупка на первом закрытии над Upper, продажа на первом под Lower)
IF средняя сделка контртренда > издержки на круг AND контртренд лучше пробоя
рынок допускается к торговле
Параметры
| Параметр | Значение | Откуда |
|---|---|---|
| Таймфрейм | 30 минут, не мельче | автор |
| Сетап | закрытие за полосой | автор (по закрытию: Finetiq) |
| Триггер | первое закрытие внутри полосы | автор |
| Направление | против движения, в обе стороны | автор |
| Длина полос | 20 баров | Finetiq |
| Ширина полос | 2 стандартных отклонения | Finetiq |
| Вход | по рынку на открытии следующего бара | Finetiq |
| Вариант входа | лимит на уровне полосы, 1 бар | Finetiq (идея лимитных входов: автор) |
| Стоп | экстремум выхода из полосы ± 0.25 ATR(14) | Finetiq (наличие стопа: автор) |
| Отсев далёких стопов | больше 2 ATR(14) | Finetiq |
| Цель | средняя линия | Finetiq |
| Выход по времени | за 30 минут до конца сессии | Finetiq |
| Вариант удержания | до конца второй сессии | Finetiq (по скелетам автора) |
| Рынок | E-mini S&P 500 и рынки с возвратом к среднему | автор |
Что проверить
- Окрестность полос. Длина 15, 20, 30 и ширина 1.5, 2, 2.5 стандартных отклонения. Если результат держится только около одной пары значений, это подгонка, а не свойство рынка.
- Таймфрейм. Тот же вход на 15, 30 и 60 минутах. Unger утверждает, что мельче 30 минут шум забивает сигнал. Проверьте, падает ли средняя сделка на 15 минутах сильнее, чем растёт их число.
- Полосы против статичных уровней. Та же логика «закрытие за уровнем, затем закрытие обратно» на вчерашних максимуме и минимуме и на pivot points. Это прямая проверка главного утверждения автора.
- Выход. Средняя линия против противоположной полосы, против выхода в конце сессии без цели и против удержания до конца второй сессии. Выход у автора не назван, и именно он может решить итог.
- Рынки. E-mini S&P против нефти, золота и облигаций, для каждого контртренд против зеркального пробоя. По методу автора контртренд должен работать не везде.
- Фильтр по дневному ADX. Unger использует дневной ADX(5) ниже 35 как фильтр пробоев (карточка
prev-high-breakout-adx). Проверьте обратное для этого сетапа: лучше ли возврат внутрь полос в дни с ADX(5) выше 35 или ниже. - Издержки. Посчитайте среднюю сделку в тиках и сравните с комиссией и проскальзыванием в 1 тик на входе и стопе. Критерий автора: если средняя сделка их не покрывает, система неторгуема, даже при растущей кривой.
Особенности платформ
TradingView (Pine Script)
ta.bb(close, 20, 2)возвращает среднюю, верхнюю и нижнюю полосы. Отклонение внутри генеральное, как вiBandsMQL5 иStdDevEasyLanguage, так что уровни совпадут.- У фьючерсов CME график по умолчанию включает ночную торговлю. Полосы на первых барах основной сессии тогда посчитаны по ночным барам. Решите, какую сессию берёте, и ограничьте входы окном
time(timeframe.period, "0930-1500", "America/New_York"). - Цель на средней линии меняется каждый бар: вызывайте
strategy.exit("X", "L", limit = basis, stop = stopLevel)на каждом баре, ордер обновится. - Если на одном 30-минутном баре задеты и цель, и стоп, тестер не знает порядка. Нужен
use_bar_magnifier = true(платные планы) или проверка на младшем таймфрейме.
MultiCharts и TradeStation (EasyLanguage)
- Полосы проще собрать самим, чтобы не зависеть от реализации:
Average(Close, 20) - 2 * StdDev(Close, 20).StdDevгенеральное,StdDevSвыборочное дало бы полосы чуть шире. Timeэто время закрытия бара. Последний час сессии, закрывающейся в 16:00 ET, начинается с бараTime = 1530. Выход за 30 минут до конца:If Time >= 1530 then Sell next bar at market.Sell next bar at Mid limitи стоп ценой живут один бар. Отправляйте их заново на каждом баре, пока позиция открыта.- Шаблон сессии символа решает, попадут ли ночные бары в расчёт полос. Для сравнения с другими платформами зафиксируйте его явно.
MetaTrader 5 (MQL5)
iBandsсчитает генеральное отклонение по закрытиям, как Pine и EasyLanguage.- CFD на S&P 500 торгуется почти круглосуточно и котируется с базисом к фьючерсу. Полосы и сигналы на CFD будут другими, особенно в ночные часы с широким спредом. Ограничьте входы часами основной сессии, переведёнными во время сервера с учётом летнего времени.
- 30-минутные бары подписаны временем открытия по серверу брокера. Конец сессии 16:00 ET на сервере GMT+2/+3 обычно 23:00, но в недели рассинхрона летнего времени сдвигается на час.
- Сигнал берите с закрытого бара (индекс 1) и проверяйте появление нового бара, иначе вход повторится на каждом тике.
Где идея может сломаться
- В интервью сетап занимает меньше минуты: без теста, без цифр, без параметров. Автор сам предлагает его как отправную точку для исследования.
- Почти всё, кроме входа и таймфрейма, наша формализация. Стоп, цель и выход по времени это стартовые значения, а не правила Unger.
- Метод автора строится под конкретный рынок. Перенос одного набора параметров на все фьючерсы противоречит его подходу, и провал на трендовых рынках ожидаем.
- В сильном тренде цена идёт вдоль полосы. Закрытия то снаружи, то внутри дают серию входов против движения, и каждый может закончиться стопом.
- Внутридневной возврат к среднему даёт маленькую среднюю сделку. Проскальзывание и комиссия на 30-минутных барах легко съедают весь результат.
- Высокая волатильность после новостей расширяет полосы задним числом. Возврат внутрь после выхода данных может быть просто расширением полос, а не разворотом цены.