Стратегия адаптивного отслеживания тренда ATR, отфильтрованная по двойным скользящим средним

EMA ATR HEIKIN ASHI Trailing Stop TAKE PROFIT
Дата создания: 2025-04-25 15:01:18 Последнее изменение: 2025-04-25 15:01:18
Копировать: 0 Количество просмотров: 403
2
Подписаться
319
Подписчики

Стратегия адаптивного отслеживания тренда ATR, отфильтрованная по двойным скользящим средним Стратегия адаптивного отслеживания тренда ATR, отфильтрованная по двойным скользящим средним

Обзор

Стратегия сочетает в себе систему двойной равнолинейной фильтрации и ATR адаптивного слежения за стоп-лотами, чтобы сгладить ценовые колебания и добиться высокой выигрышной тенденции с помощью графики Heikin Ashi. Основная часть стратегии заключается в использовании быстрых EMA и медленных EMA в качестве фильтров для направления тенденции, а также в использовании динамических стоп-лоров на основе ATR для защиты прибыли. Историческая проверка показала, что стратегия имеет более чем 90% выигрыш, подходящая для торговли в коротких трендовых линиях.

Стратегический принцип

  1. Сигнализационный слой

    • Использование преобразованной цены Heikin Ashi в качестве базового источника данных (свободный исходный ценовой показатель)
    • Вычислить канал ATR: определить ширину динамического канала с помощью длины ATR ((20) и кратного числа ((1.0))
    • Реализация адаптивного стоп-траекта: запуск обратного сигнала при прорыве цены через канал
  2. Тенденционные фильтры

    • Использование системы двойной EMA ((10 циклов быстрой линии/50 циклов медленной линии)
    • Дополнительная работа разрешена только в том случае, если скоростная линия выше, чем медленная, а пустота разрешена.
  3. Управление рисками

    • Динамический отслеживающий стоп: с помощью параметров trail_step и trail_offset контролируются стоп-потеря и движущиеся гранулы
    • фиксированная точка задержки: take_profit_points устанавливает абсолютную цель прибыли
  4. Логика исполнения

    • Открытие позиции, когда цена пробивает канал ATR и соответствует направлению EMA
    • Появление обратного сигнала или достижение стоп-стоп-позиции

Анализ преимуществ

  1. Дизайн с высокой вероятностью успехаТрехкратный фильтрующий механизм ((Heikin Ashi smoothing + ATR channel + EMA crossing) эффективно снижает ложные сигналы
  2. Приспособность к ветроуправлениюATR динамически корректирует свои стоп-позиции, автоматически расширяя пространство для ошибок при увеличении рыночных колебаний
  3. Продолжительность тенденцииEMA фильтрует только те сделки, которые соответствуют тенденциям.
  4. Совместимость с несколькими временными рамками: параметры поддаются корректировке для различных волатильных сортов
  5. Визуальная помощьВстроенная маркировка сигналов купли-продажи и равнолинейное отображение для удобства ручной проверки

Анализ рисков

  1. Риск изменения трендаВ случае резкого поворота, задержка ATR-каналов может привести к избыточным потерям
    • Оптимизация: увеличение максимальной убыли от снятия
  2. Параметры не совпадают.90%-ная вероятность победы может быть оптимизирована в конкретных исторических данных.
    • Оптимизация: проведение многоциклической проверки Walk-Forward
  3. Поперечное изношениеВ результате пересечения EMA последовательно появляются фальшивые сигналы в городе.
    • Оптимальный вариант: введение фильтра ADX или порога колебаний
  4. Влияние скольженияСледование за остановкой может быть выполнено по невыгодной цене при быстром движении
    • Оптимизация: установка минимального значения толерантности скольжения

Направление оптимизации

  1. Изменение динамических параметров

    • Автоматическая коррекция ATR-множителей в зависимости от рыночных колебаний (например, VIX)
    • Принцип реализации: расчет процентов от стандартного отклонения или исторического колебания
  2. Комплексная система фильтрации

    • Добавление подтверждения с перевесом: требует увеличения объема сделок при прорыве
    • Добавление фильтра времени: избежание публикации важных экономических данных
  3. Оптимизация машинного обучения

    • Динамическая коррекция циклического портфеля EMA с использованием усиленного обучения
    • Прогнозирование оптимального места остановки с помощью LSTM
  4. Многомерная проверка

    • Введение подтверждения тренда на уровне окружности
    • Добавление отклонения от RSI в качестве вспомогательного выезда

Подвести итог

Стратегия реализует высокую вероятность захвата трендов с помощью трёхмерной архитектуры Heikin Ashi-ATR-EMA, динамический механизм остановки убытков эффективно защищает прибыль. Ключевое преимущество заключается в органической интеграции определения направления тренда (EMA), адаптации волатильности (ATR) и фильтрации шума (Heikin Ashi). Дальнейшая оптимизация должна сосредоточиться на адаптации параметров и многофакторной верификации.

Исходный код стратегии
/*backtest
start: 2025-01-01 00:00:00
end: 2025-04-23 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"DOGE_USDT"}]
*/

//@version=5
strategy("UTBot + EMA Filter (HA + ATR Logic)", overlay = true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// === INPUTS ===
bandwidth = input.float(8., 'Bandwidth')
atr_mult = input.float(1.0, 'ATR Multiplier')
atr_len = input.int(20, 'ATR Length')
ema_fast_len = input.int(10, 'EMA Fast Length')
ema_slow_len = input.int(50, 'EMA Slow Length')
use_heikin = input.bool(true, title='Use Heikin Ashi Candle')
trail_step = input.float(10.0, title='Trailing Step (Points)', minval=0.1)
trail_offset = input.float(10.0, title='Trailing Offset (Points)', minval=0.1)
take_profit_points = input.float(100.0, title='Take Profit (Points)', minval=0.1)

// === SOURCE ===
sr = use_heikin ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close) : close

// === ATR Trailing Stop ===
atr = ta.atr(atr_len)
nLoss = atr_mult * atr

var float trail = na
iff_1 = sr > nz(trail[1]) ? sr - nLoss : sr + nLoss
iff_2 = sr < nz(trail[1]) and sr[1] < nz(trail[1]) ? math.min(nz(trail[1]), sr + nLoss) : iff_1
trail := sr > nz(trail[1]) and sr[1] > nz(trail[1]) ? math.max(nz(trail[1]), sr - nLoss) : iff_2

// === EMA FILTER ===
ema_fast = ta.ema(sr, ema_fast_len)
ema_slow = ta.ema(sr, ema_slow_len)

// === ENTRY & EXIT CONDITIONS ===
buy = sr[1] < trail[1] and sr > trail and ema_fast > ema_slow
sell = sr[1] > trail[1] and sr < trail and ema_fast < ema_slow

// === EXIT on opposite signal ===
exit_buy = sell
exit_sell = buy

// === STRATEGY EXECUTION ===
if buy
    strategy.entry("Buy", strategy.long)
if sell
    strategy.entry("Sell", strategy.short)

if exit_buy and strategy.position_size > 0
    strategy.close("Buy")
if exit_sell and strategy.position_size < 0
    strategy.close("Sell")

// === TRAILING STOP + TAKE PROFIT ===
// Long
if strategy.position_size > 0
    strategy.exit("Exit Long", from_entry="Buy", trail_points=trail_step, trail_offset=trail_offset, limit=sr + take_profit_points)

// Short
if strategy.position_size < 0
    strategy.exit("Exit Short", from_entry="Sell", trail_points=trail_step, trail_offset=trail_offset, limit=sr - take_profit_points)

// === PLOTS ===
plotshape(buy, title='Buy Signal', text='Buy', location=location.belowbar, color=color.green, style=shape.labelup, textcolor=color.white, size=size.tiny)
plotshape(sell, title='Sell Signal', text='Sell', location=location.abovebar, color=color.red, style=shape.labeldown, textcolor=color.white, size=size.tiny)

plot(ema_fast, color=color.teal, title='EMA Fast')
plot(ema_slow, color=color.purple, title='EMA Slow')

// === ALERTS ===
alertcondition(buy, title='UTBot Buy', message='UTBot Buy Signal')
alertcondition(sell, title='UTBot Sell', message='UTBot Sell Signal')