Расширенная стратегия двойной скользящей средней и система фильтрации волатильности ATR

EMA ATR MA
Дата создания: 2024-11-29 16:14:30 Последнее изменение: 2024-11-29 16:14:30
Копировать: 0 Количество просмотров: 559
1
Подписаться
1617
Подписчики

Расширенная стратегия двойной скользящей средней и система фильтрации волатильности ATR

Обзор

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

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

Центральная логика стратегии состоит из двух основных частей: определение тренда и фильтрация волатильности. В отношении определения тренда стратегия использует 50-циклическую ЭМА в качестве быстрой линии, 200-циклическую ЭМА в качестве медленной линии, при прохождении медленной линии на быстрой линии генерируется многосигналный сигнал, при прохождении низкой линии генерируется пустой сигнал. В отношении фильтрации волатильности стратегия рассчитывает ATR 14-циклического значения и переводит его в проценты от цены.

Стратегические преимущества

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

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

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

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

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

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

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

Исходный код стратегии
/*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)