В процессе загрузки ресурсов... загрузка...

Усовершенствованная стратегия двойного EMA с системой фильтра волатильности ATR

Автор:Чао Чжан, Дата: 2024-11-29 16:14:30
Тэги:ЕМАATRМ.А.

img

Обзор

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

Принципы стратегии

Основная логика состоит из двух основных компонентов: определения тренда и фильтрации волатильности. Для определения тренда стратегия использует 50-периодную EMA в качестве быстрой линии и 200-периодную EMA в качестве медленной линии, генерируя длинные сигналы, когда быстрая линия пересекает выше медленной линии, и короткие сигналы, когда она пересекает ниже. Для фильтрации волатильности стратегия вычисляет 14-периодное значение ATR и конвертирует его в процент цены, разрешая позиции только тогда, когда процент ATR превышает предопределенный порог (по умолчанию 2%).

Преимущества стратегии

  1. Механизм фильтрации волатильности значительно улучшает стабильность стратегии путем торговли только в условиях высокой волатильности
  2. Использование расчетов ATR, основанных на процентах, позволяет адаптировать фильтр волатильности к инструментам на разных уровнях цен
  3. Сочетание средне- и долгосрочных скользящих сред эффективно отражает основные тенденции, сокращая при этом краткосрочный шум
  4. Простая и понятная логика стратегии с относительно небольшим количеством параметров, снижающая риск перенастройки
  5. Эффективное управление рисками путем надлежащего управления позициями (10% размеров позиций)

Стратегические риски

  1. Показатели EMA имеют врожденное отставание, что может привести к задержке вхождения и выхода на волатильных рынках
  2. Ложные прорывы могут происходить на различных рынках, даже при фильтрации ATR
  3. Фиксированные пороговые значения ATR могут не подходить для всех рыночных условий
  4. Цикличность рынка не учитывается, параметры могут нуждаться в корректировке на разных этапах рынка Для управления этими рисками рекомендуется использовать динамические стоп-лосты и постепенное формирование позиций.

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

  1. Ввести динамические пороги ATR, адаптируемые к рыночным условиям
  2. Добавить индикаторы подтверждения силы тренда, такие как DMI или ADX
  3. Внедрить механизмы формирования и закрытия позиций поэтапно для снижения рисков единого входа/выхода
  4. Добавление модулей сезонного анализа для использования различных параметров в различных циклах рынка
  5. Разработка адаптивных механизмов выбора скользящих средних периодов для улучшения адаптивности стратегии

Резюме

Эта стратегия сочетает в себе классические технические индикаторы с современными концепциями управления рисками. Используя кроссоверы EMA для улавливания тенденций при использовании фильтра ATR для контроля времени торговли, стратегия сохраняет простоту, достигая при этом сильной практичности.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA Crossover with ATR Filter", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// Inputs for Moving Averages
fastLength = input.int(50, title="Fast EMA Length")
slowLength = input.int(200, title="Slow EMA Length")

// Inputs for ATR Filter
atrLength = input.int(14, title="ATR Length")
atrMultiplier = input.float(1.5, title="ATR Multiplier")
atrThreshold = input.float(0.02, title="ATR Threshold (%)")

// Calculate EMAs
fastEMA = ta.ema(close, fastLength)
slowEMA = ta.ema(close, slowLength)

// Calculate ATR
atr = ta.atr(atrLength)

// Convert ATR to a percentage of price
atrPct = atr / close

// Define Long Condition (Cross and ATR filter)
longCondition = ta.crossover(fastEMA, slowEMA) and atrPct > atrThreshold / 100

// Define Short Condition
shortCondition = ta.crossunder(fastEMA, slowEMA) and atrPct > atrThreshold / 100

// Define Exit Conditions
exitConditionLong = ta.crossunder(fastEMA, slowEMA)
exitConditionShort = ta.crossover(fastEMA, slowEMA)

// Long Entry
if (longCondition)
    strategy.entry("Long", strategy.long)

// Short Entry
if (shortCondition)
    strategy.entry("Short", strategy.short)

// Long Exit
if (exitConditionLong)
    strategy.close("Long")

// Short Exit
if (exitConditionShort)
    strategy.close("Short")

// Plot EMAs for visual reference
plot(fastEMA, title="50 EMA", color=color.blue)
plot(slowEMA, title="200 EMA", color=color.red)

// Plot ATR for reference
plot(atrPct, title="ATR Percentage", color=color.orange, style=plot.style_line)
hline(atrThreshold / 100, "ATR Threshold", color=color.green)

Связанные

Больше