AIO.

Блог

How To Use

Как использовать стратегию AIO Top/Bottom: автоматизированная торговля разворотами и настройка вебхуков

От сигнала к исполнению: чем версия стратегии отличается

Индикатор AIO Top/Bottom Confidence показывает, когда вероятен разворот. Стратегия AIO Top/Bottom использует тот же 9-факторный движок оценки и добавляет полный слой исполнения: автоматизированные шорт- и лонг-входы, размещение стоп-лосса и тейк-профита на основе ATR, опциональный трейлинг-стоп, управление безубытком и систему оповещений с поддержкой вебхуков, которая может направлять ордера напрямую на биржу, например Binance.

Для большинства дискреционных трейдеров, которые читают сигнальный индикатор и вручную кликают входы, разрыв между сигналом и открытой позицией порождает колебания, проскальзывание и непоследовательность. Версия Strategy устраняет этот разрыв. Когда оценка уверенности пересекает порог и срабатывает фильтр по структуре, стратегия входит немедленно на закрытии бара — без ручного шага.

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

Сигнальный движок: 9 факторов, одна оценка

Логика сигналов идентична индикатору AIO Top/Bottom Confidence — взвешенная система оценки по девяти независимым условиям. Понимание этих весов важно, поскольку они определяют, какие конфигурации дают наиболее надёжные сигналы.

Обязательный фильтр: BOS или MSS

Ни один вход не срабатывает без наличия слома структуры. Это не подлежит обсуждению. Стратегия проверяет наличие двух форм слома структуры в пределах последних bosLen баров (по умолчанию 8):

  • BOS — Break of Structure (20 баллов): Цена закрывается за пределами недавнего максимума или минимума. Просто, но без подтверждения импульсом.
  • MSS — Market Structure Shift (25 баллов): BOS плюс требование импульса — свеча, пробивающая уровень, должна иметь размер тела больше ATR(14) × 0.75 и закрываться в направлении пробоя. MSS оценивается на 5 баллов выше, поскольку сломы структуры, подтверждённые импульсом, дают заметно лучшее продолжение движения.

Когда вы видите сигнал на графике, первое, что стоит проверить в таблице — сработал ли BOS или MSS. Сигнал на основе MSS с уверенностью 65% — это существенно иная сделка, чем сигнал на основе BOS с теми же 65% — первый подтверждён импульсным смещением, второй же имеет лишь пассивное закрытие цены.

Остальные восемь факторов и их веса

ФакторВесЧто проверяется
Истощение15Диапазон свечи > ATR × 1.5, закрытие против направления движения
Ретест10Цена вернулась к уровню свинга в пределах retestBars баров (±0.5%)
Ловушка10Тень пробивает уровень свинга, закрытие разворачивается — тень/диапазон > 30%
Согласование с HTF15Закрытие на 4H относительно EMA(50) на 4H подтверждает направление разворота
Дуговой паттерн10Последние 5 максимумов/минимумов свинга формируют параболическую кривую замедления
Всплеск объёма10Объём > SMA(20) × 1.5 в точке разворота
Контекст тренда10EMA(20) относительно EMA(50) подтверждает наличие предыдущего тренда
Форма свечи5Пин-бар, доджи или поглощающая свеча на уровне разворота

Максимально возможное количество баллов до ограничения в 100: MSS (25) + Истощение (15) + HTF (15) + BOS (20, но MSS уже включает это) + Ретест (10) + Ловушка (10) + Дуга (10) + Объём (10) + Тренд (10) + Свеча (5) = 110 «сырых» баллов, ограничено до 100. На практике редко срабатывают все девять факторов одновременно — оценка 70–80% обычно означает, что сошлись пять-шесть факторов, что представляет собой действительно сильную настройку.

Фильтр зоны и период охлаждения

Два дополнительных фильтра предотвращают спам сигналов. Во-первых, фильтр зоны: стратегия вычисляет середину между наивысшим максимумом и наинизшим минимумом за последние zoneLookback баров (по умолчанию 100). Сигналы TOP срабатывают только когда цена выше этой середины; сигналы BOT — только когда цена ниже. Это устраняет абсурдную ситуацию, когда сигнал «TOP» срабатывает, а цена уже находится вблизи нижней границы своего диапазона.

Во-вторых, период охлаждения сигналов (cooldownBars = 10): между двумя сигналами одного направления должно пройти минимум 10 баров. На часовом графике это примерно половина торговой сессии. Уменьшите до 5–7 баров на более низких таймфреймах; увеличьте до 15–20 для дневных графиков или в периоды низкой волатильности, когда боковая консолидация может порождать повторяющиеся слабые сигналы из одной и той же структурной зоны.

Управление сделкой: SL, TP и трейлинг-стоп

После срабатывания сигнала на закрытии бара стратегия открывает вход и сразу настраивает правила выхода. Все расстояния основаны на ATR(14), а значит, автоматически масштабируются вместе с текущей волатильностью инструмента.

Стоп-лосс и тейк-профит

  • Стоп-лосс: ATR(14) × slAtrMult (по умолчанию 1.5). Для SHORT SL размещается выше закрытия входа; для LONG — ниже. При настройках по умолчанию на часовом графике BTC с ATR около $1,800 SL располагается примерно в $2,700 от входа — достаточно широко, чтобы поглотить обычный шум после сигнала, но достаточно узко, чтобы определить чёткий уровень инвалидации.
  • Тейк-профит: ATR(14) × tpAtrMult (по умолчанию 3.0). Это даёт теоретическое соотношение риск/прибыль 2:1 (3.0 TP / 1.5 SL) до учёта трейлинг-стопа. На практике трейлинг захватывает больше, когда тренды продолжаются за пределы цели TP.

Один важный нюанс: это не фиксированные ценовые уровни. Они пересчитываются заново на каждом баре входа с использованием текущего значения ATR(14). Сигнал во время высоковолатильной экспансии получает более широкие SL и TP, чем та же конфигурация сигнала в спокойный период флэта. Это сделано намеренно — нормализованный по волатильности размер означает, что вас не выбивает непропорционально сильно на входах с высокой волатильностью.

Трейлинг-стоп: самый важный параметр

Трейлинг-стоп — это то, где сосредоточена основная сложность реальной торговли. Им управляют два параметра:

  • Дистанция трейлинга (trailAtrMult = 0.10): Трейлинг-стоп двигается вместе с ценой на расстоянии ATR(14) × 0.10. При BTC $70K и ATR ~$1,800 это примерно $180 — около 3× типичной задержки вебхука TradingView→Binance и проскальзывания рыночного ордера (~$60 при этой цене). Значение по умолчанию 0.10 было настроено специально так, чтобы трейлинг был заметно шире реального трения исполнения, при этом улавливая большую часть разворотного движения. Не устанавливайте это значение ниже 0.075 для реальной торговли; ниже этого порога сама задержка вебхука может привести к выходам по ценам хуже целевого уровня трейлинга.
  • Активация трейлинга (trailActivateR = 0.4): Трейлинг-стоп не начинает работать, пока цена не сдвинулась в вашу пользу как минимум на 0.4 × исходный риск. При стоп-лоссе 1.5× ATR это означает, что трейлинг активируется после движения цены на 0.6× ATR (40% от риска в 1.5× ATR) в прибыльном направлении. Значение было повышено с 0.2 до 0.4, поскольку прежнее значение по умолчанию приводило к слишком раннему включению трейлинга — эмулятор брокера TradingView пошагово проходит внутри каждого бара, и мгновенно активный трейлинг с момента входа даёт симуляции исполнения, которые не отражают реальное поведение живых ордеров. Значение по умолчанию 0.4 даёт результаты бэктеста, существенно более репрезентативные для реальной торговли. Никогда не устанавливайте это значение в нольtrail_price=na в Pine вызывает известную ошибку эмулятора, которая обваливает винрейт на реальных счетах.

Стоп в безубыток (опционально)

Стоп в безубыток (useBEStop, по умолчанию отключён) переносит стоп-лосс на цену входа, как только цена сдвинулась в вашу пользу на beTriggerR × исходный риск (по умолчанию 1.0×). Включение этой функции снижает просадку на выигрышных сделках, которые разворачиваются до активации трейлинга. Компромисс в том, что часть сделок будет закрыта в безубыток, хотя в итоге они могли бы достичь тейк-профита. Использовать её или нет, зависит от вашего рынка: в криптовалюте в дни высокой волатильности стоп в безубыток часто закрывает сделки преждевременно, поскольку цена откатывается перед продолжением движения. На более упорядоченных инструментах, таких как индексные фьючерсы, он, как правило, улучшает кривую капитала.

Хотите увидеть это на живом графике? AIO Indicator автоматизирует это — без ручного рисования.
Попробовать бесплатно 5 дней

Настройка вебхук-оповещений для исполнения на реальной бирже

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

Почему важны отдельные сообщения для входа и выхода

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

Выход — это другое дело. Когда трейлинг-стоп срабатывает в середине бара, вам нужно выйти немедленно — лимитный ордер по цене трейлинга рискует не исполниться, если цена проскочит через уровень. Ордера на выход используют рыночные ордера с reduceOnly: true, что гарантирует закрытие позиции по лучшей доступной цене bid/ask и исключает случайное открытие обратной позиции, если ордер выйдет за пределы.

Настройка сообщений оповещений

Формат сообщения по умолчанию для входа (совместимый с большинством вебхук-ботов, включая 3Commas, Cornix и пользовательские вебхук-серверы для Binance) выглядит так:

{
  "symbol": "{{ticker}}",
  "side": "{{strategy.order.action}}",
  "positionSide": "BOTH",
  "investmentType": "coin_qty",
  "qty": "{{strategy.order.contracts}}",
  "order_type": "Limit",
  "price": "{{strategy.order.price}}",
  "reduceOnly": false,
  "positionMode": "one_way_mode",
  "signalId": "abc",
  "uid": "xyz"
}

Замените "abc" и "xyz" на ваши реальные учётные данные бота перед переходом на реальную торговлю. Плейсхолдеры {{ticker}}, {{strategy.order.action}}, {{strategy.order.contracts}} и {{strategy.order.price}} автоматически подставляются TradingView при срабатывании оповещения.

Сообщение для выхода использует "price": "market" и "reduceOnly": true:

{
  "symbol": "{{ticker}}",
  "side": "{{strategy.order.action}}",
  "positionSide": "BOTH",
  "investmentType": "coin_qty",
  "qty": "{{strategy.order.contracts}}",
  "price": "market",
  "reduceOnly": true,
  "positionMode": "one_way_mode",
  "signalId": "abc",
  "uid": "xyz"
}

Создание оповещений в TradingView

  1. Добавьте стратегию на график и настройте все параметры для выбранного вами рынка и таймфрейма.
  2. Нажмите кнопку «Alerts» (значок колокольчика) в TradingView и создайте новое оповещение по стратегии.
  3. Установите условие «Order fills only» — оно срабатывает при каждом исполнении ордера, а не при каждом баре.
  4. Установите частоту «Once Per Bar Close» для сигналов входа (они срабатывают только на подтверждённых барах). Для сигналов выхода стратегия внутренне использует barstate.isrealtime, поэтому оповещение сработает внутри бара при срабатывании трейлинга.
  5. Вставьте URL вашего вебхука в поле «Webhook URL».
  6. В поле «Message» вставьте JSON из поля ввода Entry Alert Message. Создайте второе оповещение специально для выходов, используя JSON сообщения для выхода.

Практическое замечание: оповещения по умолчанию срабатывают только один раз за бар для одного и того же условия. Стратегия внутренне использует alert.freq_once_per_bar как механизм дедупликации на стороне сервера, поэтому даже если условие трейлинга остаётся истинным на протяжении нескольких тиков внутри бара, за бар срабатывает только одно оповещение о выходе. Это предотвращает случайные двойные выходы на стороне биржи.

Модель исполнения: почему она изменилась по сравнению с предыдущей версией

Предыдущая версия работала с process_orders_on_close=true и calc_on_every_tick=false. Это заставляло все исполнения — входы, выходы, трейлинги — симулироваться на закрытии бара. Более чистые кривые капитала, но фундаментальное несоответствие тому, как реальные ордера действительно исполняются.

Текущая версия использует process_orders_on_close=false и calc_on_every_tick=true. Это позволяет эмулятору брокера симулировать реакции трейлинг-стопа внутри бара: если внутрибарный минимум свечи касается уровня трейлинга на LONG-позиции, выход симулируется в середине бара, а не при ожидании закрытия. Компромисс в том, что пошаговое прохождение внутри бара может иногда давать чрезмерно оптимистичные исполнения на очень широких свечах — но это всё равно ближе к реальному поведению, чем чистая симуляция на закрытии бара, особенно для компонента трейлинг-стопа, который по своей природе является внутрибарным в реальной торговле.

Практическое следствие для бэктестинга: текущая модель исполнения покажет несколько иное количество сделок и кривые капитала, чем предыдущая версия на том же диапазоне дат. Ни одна из них не является «более точной» в абсолютном смысле, но текущая модель лучше откалибрована для реальных условий, где ордера на выход могут исполняться и действительно исполняются в середине бара.

Чтение результатов бэктеста

Параметры бэктеста по умолчанию включают комиссию 0.05% за сторону и были откалиброваны на данных BTCUSDT.P за 1 час. При оценке результатов сосредоточьтесь на следующих метриках:

На что обращать внимание (и что игнорировать)

  • Винрейт сам по себе не имеет значения. Стратегия с винрейтом 85% и средним R:R 0.3 может быть хуже, чем стратегия с винрейтом 60% и R:R 2.5. Сосредоточьтесь на профит-факторе (валовая прибыль ÷ валовый убыток) и математическом ожидании на сделку.
  • Максимальная просадка в процентах от капитала важнее, чем абсолютная просадка в долларах. Просадка в 1.5% от счёта на 200 сделках приемлема; 15% — нет, независимо от того, что показывает чистая прибыль.
  • Коэффициент Шарпа выше 1.5 говорит о том, что стратегия генерирует доходность, превышающую её волатильность. Ниже 1.0 доходность не компенсирует профиль риска.
  • Раздельные винрейты для лонгов и шортов. Если винрейт по шортам заметно выше винрейта по лонгам, у стратегии есть направленное смещение. Это не обязательно плохо — некоторые рынки трендуют чище в одном направлении — но это означает, что результативность стратегии частично зависит от рыночного режима, а не только от качества сигнала.

Стресс-тестирование перед выходом на реальную торговлю

Бэктест на одном благоприятном периоде может выглядеть убедительно, скрывая при этом хрупкость. Прогоните стратегию как минимум на трёх различных рыночных режимах, прежде чем рисковать реальным капиталом:

  1. Сильный трендовый период (например, бычий рынок BTC 2020–2021)
  2. Возвратный к среднему боковой период (например, консолидация BTC в конце 2022)
  3. Период высоковолатильного шока (например, любое крупное макрособытие — неожиданные решения FOMC, крах биржи)

Если стратегия существенно ухудшается в одном режиме, но не в других, это подсказывает вам рыночные условия, при которых следует уменьшить размер позиции или приостановить торговлю. Стратегия, которая теряет деньги во время затяжных боковых рынков, сообщает вам нечто полезное: фильтр BOS требует структурного слома, но в диапазоне «сломы» регулярно откатываются обратно. Рассмотрите возможность повышения порога уверенности до 65%+ в известные периоды низкой волатильности.

Автоматический размер ордера: масштабирование с капиталом

Функция автоматического размера ордера (autoOrderSizeEnable) реализует простую пошаговую систему масштабирования позиции. Начиная с размера ордера по умолчанию (orderSizeDef = 0.1 BTC), стратегия добавляет один шаг (orderStep = 0.1 BTC) за каждые stepMoney долларов (по умолчанию $1,000) накопленной прибыли сверх начального капитала.

Например: если начальный капитал составляет $10,000, а стратегия сгенерировала $3,200 прибыли, то _orderSteps = floor(3200 / 1000) = 3, и размер ордера становится 0.1 + 3 × 0.1 = 0.4 BTC. Это консервативный подход к сложному наращиванию — он масштабируется постепенно на выигрышных сериях, а не резко, что ограничивает просадку в убыточный период после пика капитала.

Держите эту функцию отключённой во время начального тестирования. Включайте её только после того, как убедитесь, что стратегия работает как ожидается на вашей бирже, ваш вебхук надёжен, и вы наблюдали как минимум 20–30 реальных сделок. Масштабирование размера позиции на непроверенной реальной системе — это прямой путь превратить небольшие ошибки в крупные убытки.

Руководство по настройке параметров

Большинство параметров можно оставить на значениях по умолчанию для BTCUSDT 1H, поскольку это основная настроенная конфигурация. Параметры, наиболее существенно влияющие на реальную торговлю:

Параметры высокого влияния

  • Период просмотра BOS (bosLen = 8): Более короткий период просмотра = более чувствительные сломы структуры = больше сигналов, но больше ложных срабатываний. Увеличьте до 12–15 для графиков более высокого таймфрейма (4H, дневной), где структура должна определяться на более длинном окне.
  • Период охлаждения сигналов (cooldownBars = 10): На 15-минутных графиках 10 баров — это всего 2.5 часа — рассмотрите возможность увеличения до 20–30. На дневных графиках уменьшите до 5.
  • Дистанция трейлинга (trailAtrMult = 0.10): Не уменьшайте ниже 0.075 для реальной торговли. Увеличьте до 0.15–0.20, если хотите удерживать позиции дольше через более глубокие откаты, принимая то, что будете отдавать больше в каждой выигрышной сделке.
  • Активация трейлинга (trailActivateR = 0.4): Значение по умолчанию 0.4 отражает «реалистичное для реальной торговли» поведение. Повышение до 0.6–0.8 задерживает активацию трейлинга, давая выигрышным сделкам больше пространства для развития, ценой более частых полных выходов по стоп-лоссу на сделках, которые ненадолго уходят в прибыль перед разворотом.
  • Таймфрейм HTF (htfTF = “240”): Для сделок на дневном графике переключитесь на “W” (неделя). Для 15-минутного скальпинга используйте “60” (1H). Принцип в том, что HTF должен быть как минимум в 4× больше торгового таймфрейма.

Параметры низкого влияния (только тонкая настройка)

  • Допуск ретеста (retestPct = 0.5%): корректировка на ±0.1–0.2% вряд ли существенно изменит поведение стратегии
  • Коэффициент доджи (dojiRatio = 0.1): форма свечи даёт всего 5 баллов — не стоит углублённой оптимизации
  • Минимальная оценка дуги (arcMinScore = 0.015): оставьте как есть, если у вас нет особых причин быть строже или мягче в отношении подтверждения параболической дуги

Информационная таблица: диагностика в реальном времени

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

Используйте таблицу как монитор предсигнальной готовности: если таблица показывает 4 активных фактора с оценкой 48% на стороне BOT, вы знаете, что стратегия близка к срабатыванию. Подготовьте размер позиции и проверьте контекст графика — если на следующем баре сработает всплеск объёма, оценка может преодолеть средний порог в 50% и сгенерировать сигнал. Этот подход позволяет вам предвидеть сигналы, а не реагировать на них, что ценно, когда вы хотите вручную проверить структурный контекст, прежде чем автоматизированная система возьмёт управление на себя.

Ключевые выводы

  • BOS/MSS — обязательный фильтр. Каждый сигнал начинается со слома структуры. Сигнал, вызванный MSS (25 баллов), сильнее сигнала только на BOS (20 баллов), поскольку импульс смещения подтверждён.
  • Дистанция трейлинг-стопа (0.10× ATR) была настроена для реальной торговли, а не для визуальной эстетики. Она примерно в 3× шире типичного трения исполнения биржевого вебхука. Уменьшение ниже 0.075× ATR грозит частыми выходами по трейлингу, вызванными задержкой маршрутизации ордеров, а не значимым ценовым движением.
  • Активация трейлинга при риске 0.4× предотвращает артефакты эмулятора. Предыдущее значение по умолчанию 0.2 приводило к тому, что эмулятор брокера TradingView симулировал поведение трейлинга, которое не происходит в реальной торговле. Значение по умолчанию 0.4 даёт существенно более репрезентативные результаты бэктеста.
  • Используйте лимитные ордера на вход, рыночные ордера на выход. Вход срабатывает на подтверждённом закрытии бара (цена зафиксирована), поэтому лимитный ордер по цене закрытия имеет почти гарантированное исполнение. Выход срабатывает внутри бара при достижении трейлинга, поэтому рыночный ордер с reduceOnly: true обеспечивает немедленное исполнение без риска открытия обратной позиции.
  • Отдельные сообщения оповещений для входа и выхода позволяют использовать разные типы и размеры ордеров. Это устраняет неэффективность по комиссиям при использовании рыночных ордеров для входов, когда доступны лимитные ордера.
  • Тестируйте на трёх рыночных режимах (тренд, диапазон, шок) перед реальным развёртыванием. Результатов на одном периоде недостаточно для валидации мультиусловной стратегии.
  • Автоматический размер ордера — это функция после валидации — включайте её только после подтверждения того, что реальное исполнение работает от начала до конца с вашей конкретной биржей и вебхук-инфраструктурой.