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

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

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

Данные и рынкиВ этом разделе сообщества обсуждаются фьючерсы на индексы ES и NQ. Для тестирования необходимы исторические данные о классификации сделок и календари контрактов. Приведенные ниже нормализованные цены являются учебными примерами, а не котировками индексов.
Таймфреймы исследованияВ примерах используются одноминутные или пятиминутные бары. Требуется наличие как минимум 20 завершенных баров после привязки сессии, поэтому самое раннее допустимое время зависит от интервала баров.
Более поздний минимум цены находится ниже, а CVD — выше. Сигнал появляется после двух подтверждающих баров и до достижения целевого уровня 100.Открыть иллюстрацию в полном размере
Синтетические цены событий, объемы торгов и аннотированный CVD. Диапазон и среднее значение представляют собой снимки, сделанные до события, а не будущие значения VWAP.

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

Порядок действий: VWAP Возврат к среднему значению и CVD: Тестирование восстановления полосы
Все шаги подробно описаны ниже. На каждом этапе нужно записывать причину отклонения при нехватке данных или невыполнении условий.
  1. Проверьте предыдущий режимТребуйте достаточно пологий VWAP и заданное число прошлых пересечений с переходом на другую сторону.
  2. Обнаружьте возврат внутрь полосыЗафиксируйте нижний диапазон и целевую точку, используя снимок, сделанный до события.
  3. Подтвердите расхождениеДождитесь баров справа и сравните CVD в моменты ценовых экстремумов.
  4. Проверьте оставшиеся возможностиОтклоняйте событие с уже достигнутой целью или недостаточным отношением прибыли к риску по исполнимой цене.
  5. Управляйте позициейПрименяйте фиксированный стоп, зафиксированное среднее и заранее заданный временной выход.

Что подтверждает заявление о прибыли

Rogue-seeker сообщает о чистой прибыли с начала года после уплаты налогов в размере $103,750 и коэффициенте прибыли 2.15, используя полосы VWAP, CVD и пользовательские блоки [1]. Представленный материал не содержит проверенной последовательности сделок, а некоторые пороговые значения остаются конфиденциальными. Рассматривайте это как источник идеи. Ни понятный график, ни убедительное объяснение не доказывают, что другая реализация принесет сопоставимую доходность.

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

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

Определите диапазон и предшествующий режим.

Используйте количество инструмента в исполненных сделках как вес: μ=Σqp/Σq и σ²=Σq(p−μ)²/Σq, накапливаемые от начала сессионной привязки. Реализуйте численно устойчивые обновления по мере поступления данных. Это выбранная статьёй оценка, не обязательно совпадающая с каждой платформой. TradingView предоставляет настройки привязки, источника и полос [2]; сравнивайте реализации до сравнения сигналов.

Предложенный фильтр бокового режима требует 20 предыдущих баров, |VWAP[t−1]−VWAP[t−6]|≤0.2A и минимум трёх смен стороны закрытия относительно VWAP за предыдущие 20 баров. A — ATR14[t−1]. Закрытие точно на VWAP наследует прошлую сторону и не создаёт пересечение. Все пороги — исследовательские настройки.

Событие на t требует L[t]<μ[t−1]−2σ[t−1], а C[t] — выше той же нижней полосы. Зафиксируйте target_ref=μ[t−1]. Минимум события затем должен подтвердиться как локальный минимум с двумя барами с каждой стороны. Относительно предыдущего подтверждённого ценового минимума в том же периоде сброса цена должна быть ниже минимум на b=max(2 ticks,0.1A), а CVD — выше. После подтверждения требуйте закрытие выше максимума предыдущего бара, ниже target_ref и в пределах пяти баров от события. Отменяйте событие, если промежуточный бар уже коснулся цели.

Допускайте не более одного активного события. Отклоняйте событие без двух нужных баров слева, с нарушенным до подтверждения минимумом, пропущенным участком CVD или несовпадающим сбросом. Проверяйте полный поток между предыдущим ценовым минимумом и минимумом события, не только конечные значения. Исчерпывайте событие при сигнале, даже если следующая котировка не проходит отношение прибыли к риску: более поздняя привлекательная котировка не возобновляет event_id.

at_event_close(t):
  if active_event or not complete_prior_band_ATR_regime_history: return
  if prior_range_regime and L[t]<lower[t-1] and C[t]>lower[t-1]:
    create_event(target=VWAP[t-1],event_low=L[t],A=ATR[t-1],
                 buffer=max(2*tick,0.10*ATR[t-1]),start=t,expiry=t+5,
                 session_id=session_id(t),anchor_id=anchor_id(t),
                 cutoff=session_end-5_minutes,state=AWAITING)
on_completed_bar(now):
  if event.state!=AWAITING: return
  if changed_session_or_anchor(event,now) or received_close_time(now)>=event.cutoff:
    event.state=EXPIRED; return
  if now>event.expiry or target_touched_after_event_through(now):
    event.state=CANCELED; return
  if event_low_no_longer_a_valid_pivot_candidate:
    event.state=CANCELED; return
  if not pivot_confirmed_left2_right2 or not previous_confirmed_pivot: return
  if not same_reset_and_complete_classified_CVD_segment_between_pivots:
    event.state=REJECTED; return
  if price_lower_low_by_frozen_buffer and cvd_higher_low
       and C[now]>H[now-1] and C[now]<event.target:
    stop=min_low_since_event-event.buffer
    event.state=CONSUMED
    check_expected_RR_then_order_on_next_quote_before_cutoff()
# A consumed event permits at most one submission; rejected quotes do not rearm it.
# Session-close and anchor-reset timers terminate pending events without another bar.

Сравнивайте CVD в моменты ценовых экстремумов

Индикатор CVD суммирует объем агрессивных покупок за вычетом объема агрессивных продаж. Sierra Chart описывает реализацию индикатора AskVolume−BidVolume и требования к его историческим данным [3]. Другие источники данных могут классифицировать сделки по-разному. Сохраняйте метод классификации, инструмент, контракт и соглашение о сбросе; идентичное название индикатора не означает идентичные измерения.

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

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

Успешный путь и два случая неудачи

Условные нормализованные данные: до события μ=100 и σ=1 дают нижнюю полосу 98. ATR равен 1, размер тика 0.01, b=0.1. Предыдущий ценовой минимум 98.5 имеет CVD −800. Новое событие достигает 97.5 и закрывается на 98.2, с CVD −650 в момент минимума цены. Следующие два бара не нарушают минимум. При подтверждении закрытие 98.5 выше предыдущего максимума 98.4, а по 100 ещё не торговали.

Доступная цена ask 98.55 и стоп 97.4 дают риск 1.15. Фиксированная цель 100 даёт потенциал 1.45, около 1.26R до издержек. Предложенное минимальное ожидаемое отношение 1.2 допускает сделку. Ask 98.8 даёт риск 1.4 и прибыль 1.2, поэтому возможность не проходит фильтр. Близкое среднее не обеспечивает автоматически цель в два R.

В убыточном сценарии новые продажи достигают 97.3, стоп исполняется по 97.35, убыток от фактического входа — 1.20. В отдельном случае без сделки цена касается 100 на t+1 и возвращается к 98.5 к подтверждению. Отменяйте событие: поздний вход не может получить прибыль от отскока, случившегося до возможности действовать.

Зафиксируйте цель и исполняйте после подтверждения

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

Покупка оплачивает доступный ask, выход получает исполнимый bid с учётом типа ордера и ликвидности. Переводите ценовое расстояние фьючерса в деньги контрактным множителем, округляйте к допустимым тикам. Издержки 0.1 пункта при стоп-расстоянии 0.5 пункта уже съедают 0.2R до других комиссий. Малые стопы делают исполнение по середине спреда особенно склонным завышать результаты.

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

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

Протестируйте каждый компонент и его задержку.

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

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

В перспективном тестировании на виртуальном счёте сохраняйте время события биржи и локальное время получения. Решение использует уже полученную информацию. Только фиксированная спецификация, выдержавшая затраты вне обучающей выборки и реалистичные исполнения, усиливает доказательность. Заявленный результат автора сообщества этих тестов не заменяет.

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

Метка диапазона от окончательного закрытия

Использование итогов полного дня для классификации более раннего режима того же дня даёт фильтру будущие данные.

Бесшумно движущаяся мишень

Динамическое целевое значение VWAP и замороженное среднее значение до события представляют собой разные стратегии и требуют получения отдельных результатов.

Заявлять о воспроизведении закрытых правил

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

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

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

0/7 пунктов

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

Доказывает ли выход за две сигмы перепроданность цены?

Нет. Это описывает расстояние при использовании конкретного оценщика. Развивающийся тренд может продолжать смещать распределение и увеличивать амплитуду отклонения.

Может ли OBV заменить CVD без классификации агрессивной стороны сделок?

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

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

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

  1. Here's how being a dev helped me make YTD $104k (NET profit)Rogue-seeker on r/Daytrading. Сообщение и обсуждение были проверены. Результаты предоставлены самими участниками, некоторые правила являются конфиденциальными, а прибыль не была независимо подтверждена. Проверено: .
  2. Volume Weighted Average PriceTradingView. Описывает VWAP и настройки полос. Формула взвешенной дисперсии в статье явно является собственной спецификацией. Проверено: .
  3. Cumulative Delta Bars – VolumeSierra Chart. Определяет объёмы Ask/Bid, требования исторических данных и сброс. Маркетинговые заявления платформы о точности не считаются независимым доказательством. Проверено: .

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

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

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

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

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

Скачать Backtest в App Store