Содержание статьи

Доказательства и область применения

Компания Fidelity обсуждает повторное тестирование и консолидацию с меньшим объемом, а SMB рассматривает конкретную позицию. Это образовательные примеры, а не тестирование предложенного здесь алгоритма.

Данные и рынкиНужны OHLCV с явным календарём сессий. Для объёмов акций, фьючерсов и криптовалют отдельно проверяйте качество потока данных и модель исполнения.
Таймфреймы исследованияПятиминутные бары — это пример внутридневного анализа. Для дневного анализа необходимы собственные предположения относительно периода удержания, гэпа и финансирования.
Цена пробивает 50 при высоком объеме торгов, возвращается к 50.05 при снижении активности, а затем подтверждает продолжение тренда.Открыть иллюстрацию в полном размере
Синтетические цены и объемы событий для последовательности прорыв-повторный тест; это не бэктест и не полная серия OHLC.

Практическая последовательность действий

Порядок действий: Пробой и ретест с объёмом: импульс, тихий откат и продолжение
Все шаги подробно описаны ниже. На каждом этапе нужно записывать причину отклонения при нехватке данных или невыполнении условий.
  1. Зафиксируйте пробой известного уровняЗафиксируйте Q, ATR и RVOL пробоя.
  2. Дождитесь первого повторного тестирования.Примите ретест в заданной полосе в течение восьми баров; иначе срок кандидата истекает.
  3. Измерение уменьшения объемаСравните средний RVOL, нормированный для того же времени суток.
  4. Подтвердите продолжениеТребуется закрытие в более поздний срок выше максимума повторного тестирования плюс буфер.
  5. Выполните и сравните.Используйте фактические исполнения и учитывайте пропущенные сильные движения.

Ожидание повторного тестирования меняет набор возможностей.

Компания Fidelity обсуждает повторное тестирование прорыва при сниженной активности во время консолидации ([1]). В обзоре SMB особое внимание уделяется месту входа после прорыва ([2]). Исследовательский вопрос заключается в том, улучшает ли ожидание соотношение риска и доходности в достаточной степени, чтобы компенсировать движения, которые так и не возвращаются.

После пробоя ретест может не состояться. Выбор только графиков с возвратом и отскоком исключает сильные движения без входа и неудачные пробои с падением сквозь уровень. Создавайте кандидата в момент пробоя; затем автомат состояний классифицирует ретест, истечение срока или неудачу.

У объёма три возможные роли: необычная активность при первоначальном пробое, участие во время отката и возобновление активности при продолжении движения. Нельзя заранее считать сочетание всех трёх лучшим. Низкий объём может сопровождать недостаточный спрос и лёгкое снижение цены; тихий ретест остаётся гипотезой, а не доказательством поддержки.

Зафиксируйте опорный уровень и первый допустимый ретест

Для предлагаемой бычьей версии на пятиминутных барах Q — наибольший максимум 20 баров перед t, без самого t. Задайте A=ATR14[t−1], b=max(2 ticks,0.10A) и eps=max(2 ticks,0.15A). Пробой требует C[t]>Q+b, C[t−1]≤Q, положения закрытия (C−L)/(H−L)≥0.70 и RVOL[t]≥1.5. При нулевом диапазоне этот коэффициент не определён. Зафиксируйте Q, A и оба буфера.

От t+1 до t+8 зафиксируйте первый бар r, минимум которого лежит в интервале [Q−eps,Q+eps], а закрытие не ниже Q. Более раннее закрытие ниже Q−eps отменяет кандидата. Средний RVOL от t+1 до r должен быть не больше 0.7 от RVOL пробоя. Если условие не выполнено, отклоните кандидата этой версии с фильтром; не выбирайте более красивый поздний ретест.

В следующие три бара после r первое закрытие выше H[r]+b создаёт сигнал. Стоп расположите на b ниже наименьшего минимума от t+1 до сигнального бара включительно; входите по следующей доступной для исполнения котировке. Все длины и пороги — предлагаемые исследовательские параметры. Для короткой позиции геометрия зеркальная, но влияние объёма нужно проверять отдельно.

Тонкий случай — это бар, минимум которого полностью проходит под полосой повторного тестирования, но закрывается выше Q. Указанное правило определения минимума в полосе не принимает его за r. Версия, основанная на пересечении, могла бы это сделать, но это другой детектор, и ему следует присвоить новый идентификатор версии.

Отклоняйте пробойный бар при H≤L. Неопределённый коэффициент положения закрытия не отменяет фильтр, в том числе у бара с нулевым диапазоном, открывшегося гэпом за опорным уровнем.

after_breakout_close(t):
  if H[t]<=L[t] or not complete_prior_features: reject(); return
  candidate = freeze(Q,A,b,eps,break_rvol,session_id,
                     cutoff=session_end-5_minutes,known_at=received_close_time(t))
  if received_close_time(t)>=candidate.cutoff: expire(); return
  r = None
  for u in t+1..t+8:
    if session_id(u)!=candidate.session_id or received_close_time(u)>=candidate.cutoff:
      expire(); return
    if C[u]<Q-eps: cancel(); return
    if first_valid_retest(u):
      r=u; break
  if r is None: expire_no_retest(); return
  if missing_rvol(t+1,r) or mean_rvol(t+1,r)>0.7*break_rvol:
    reject_volume(); return
  for u in r+1..r+3:
    if session_id(u)!=candidate.session_id or received_close_time(u)>=candidate.cutoff:
      expire(); return
    if C[u]<Q-eps: cancel(); return
    if C[u]>H[r]+b:
      stop=min(L[t+1:u+1])-b
      consume_candidate_then_order_on_next_quote_if_before_cutoff()
      return
  expire_no_confirmation()
# A session-close timer also expires waiting candidates when no new bar arrives.

Сравните данные за одно и то же время суток.

Предлагаемый RVOL_bar делит текущий объём на медианный объём того же временного интервала за предыдущие 20 сессий. TradingView использует среднее в индикаторе Relative Volume at Time [3]; медиана здесь — намеренный исследовательский вариант. Нельзя переносить результаты одной оценки на другую без нового теста.

Пробой за один бар и откат за шесть баров нельзя сравнивать по сырому суммарному объёму. Средний RVOL, нормированный для того же времени суток, учитывает длительность и внутридневную активность. Сокращённые сессии, остановки торгов и отсутствие базы сравнения должны давать insufficient_data, а не удобное подставленное значение.

Порог роста объёма на сигнальном баре, например RVOL≥1.2, можно добавить отдельным экспериментом. Дополнительный вклад относительной силы или трендового фильтра EMA также нужно измерять отдельно. Итоговый дневной объём и акции, оказавшиеся лидерами к концу дня, не могут выбирать утренний вход.

Синтетические примеры допустимого ретеста и неудачных сценариев

Пусть Q=50, A=1 и tick=0.01, тогда b=0.10 и eps=0.15. У пробойного бара с H50.80, L49.90 и C50.70 положение закрытия равно 0.80/0.90, примерно 0.889, а относительный объём — RVOL2. Значения RVOL отката 1.0,0.8 и 0.6 дают среднее 0.8, ниже допустимых 1.4. Бар ретеста имеет минимум 50.05, максимум 50.35 и закрытие 50.15.

Следующее закрытие 50.50 превышает 50.45. При покупке по 50.55 и известном минимуме отката 50.05 стоп равен 49.95, риск — 0.60, а цель 2R — 51.75. Вариант с подтверждением не может приписать себе вход по 50.00 лишь потому, что до подтверждения цена касалась Q. Заранее выставленный лимитный ордер на Q имел бы иной набор доступной информации и путь исполнения.

Закрытие 49.80 до подтверждения отменяет кандидата, поскольку оно ниже 49.85, даже при малом объёме. После допустимого входа по 50.55 исполнение стопа по 49.90 приносит убыток 0.65. Если вместо этого цена сразу растёт к 52 без ретеста в течение восьми баров, зафиксируйте отсутствие ретеста. Этот рост не является прибылью стратегии, у которой не было позиции.

Выберите защиту, прежде чем увидеть последствия.

Стоп ниже всего отката отличается от стопа ниже одного бара r. В базовом варианте используется известный минимум от t+1 до сигнального бара включительно. Не расширяйте защиту до более старой базы после входа лишь для удержания убыточной сделки.

Если решение об ордере принято только после подтверждения, котировку со слишком большим гэпом можно отклонить по заранее заданному правилу риска или прибыли. Для уже выставленного ожидающего входного ордера нужно сохранить все исполнения до отмены. Нельзя объединять эти варианты в одну чрезмерно благоприятную симуляцию.

Предлагаемый внутридневной вариант выходит при первом из условий: достижение 2R, срабатывание защитного стопа, истечение 20 баров после входа или наступление времени выхода перед закрытием сессии. Рассчитывайте цель от фактической цены исполнения. Варианту с трейлингом по свингам нужны детектор без будущих данных и отдельная статистика.

Несколько коррелированных акций могут пробить уровни после одной рыночной новости. Ограничивайте риск портфеля вместо полного независимого бюджета на каждый инструмент. Записывайте отношение спреда к расстоянию до стопа: небольшая денежная издержка может поглотить большую часть R при близком стопе ретеста.

Базовый вариант прекращает входы за пять минут до планового закрытия сессии, в том числе сокращённой. Каждый кандидат сохраняет session_id и, при использовании VWAP, anchor_id. Достижение предельного времени, смена сессии или сброс якоря завершает ожидающее событие. Котировка после сигнала также должна прийти до этого времени. Таймер сессии отменяет ожидание, даже если новых баров нет; счётчики не продолжаются следующим утром. Это исследовательское правило, заданное в статье.

Добавьте контрольный вариант входа сразу после пробоя

Начните с той же группы прорывных сигналов и сравните покупки после прорыва, ожидание повторного тестирования без фильтров объема и ожидание с этими фильтрами. Сохраняйте сопоставимые бюджеты рисков и торговые календари. Сообщите как ожидаемую доходность на исполнение ордера, так и доходность за выделенный день.

Измеряйте вероятность ретеста, время ожидания, отказы по фильтру объёма, отсутствие исполнения, MAE/MFE и чистые доходности. Большая доля выигрышей может сочетаться с меньшей общей прибылью из-за пропуска сильных движений. Подбирайте контрольные случаи по времени, тренду и волатильности, чтобы проверить, не выбирает ли объём просто благоприятный режим.

Используйте хронологическую валидацию и группируйте перекрывающихся кандидатов. Проверяйте соседние длины окна ретеста и пороги RVOL, а не единственный острый оптимум. Повторные прогоны по растущим префиксам данных должны доказать, что Q не сдвигается к новому максимуму пробоя, а выбранный первый ретест не меняется из-за позднейших данных.

Сохраните неотфильтрованную таблицу кандидатов, включая все причины отклонения. Эта таблица позволит последующему исследователю воспроизвести альтернативные издержки каждого условия без повторного проведения отбора в другой выборке. Она также покажет, были ли кажущиеся лучшие результаты получены в основном за счет меньшего количества сделок или за счет действительно различных последующих путей.

Частые ошибки

Выбраны только те графики, которые отскочили.

Отсутствующие и неудачные ретесты — обязательные части исходной выборки.

Низкий объем торгов всегда означает бычий тренд.

Спокойная деятельность сама по себе не является доказательством наличия покупательской поддержки.

Покупка по Q задним числом после отскока

Без заранее выставленного лимитного ордера это исполнение, приписанное задним числом.

Список проверки перед использованием метода

Отмечайте пункты после проверки на своих данных. Прогресс сохраняется в этом браузере и не подтверждает прибыльность стратегии.

0/7 пунктов

Частые вопросы

Нужно ли догонять движение, если ретеста нет?

Эта версия пропускает движение. Прямой вход после пробоя — отдельный вариант для сравнения, а не импровизированное исключение.

При повторном тестировании обязательно должна быть одна точная цена?

Нет. Допуск фиксируется в тиках и ATR до события. Его ширина является параметром, подлежащим проверке.

Источники исследования

Каждый источник подтверждает указанное рядом определение или доказательство. Псевдокод, искусственные примеры и предлагаемые параметры требуют отдельной проверки.

  1. Entry and Exit Strategy: What you need to considerFidelity / OCC. Изучено обсуждение ретеста, неудачного пробоя и объёма в стенограмме; это не бэктест. Проверено: .
  2. How to improve your trading entriesSMB Capital. Прочитана исходная стенограмма разбора ADT от 10 августа 2020 года; аудированной P&L стратегии нет. Проверено: .
  3. Relative Volume at TimeTradingView. Изучено определение RVOL для того же времени суток; медиана за 20 сессий — отдельное предложение этой статьи. Проверено: .

Связанные методы

Примечание о рисках

Материал предназначен для обучения и планирования исследований, а не является финансовой рекомендацией. Backtest моделирует прошлые данные, не гарантирует будущую доходность и не совершает реальные сделки. Методы библиотеки не обязательно реализованы в приложении. См. методологию и учебный центр.

Проверьте правила, прежде чем рисковать реальным капиталом

Проверьте возможности приложения, данные и каждую смоделированную сделку; сложные детекторы могут потребовать отдельной реализации.

Скачать Backtest в App Store