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

MA RSI ATR RR SL TP SMA
Дата создания: 2025-02-21 11:58:43 Последнее изменение: 2025-02-21 11:58:43
Копировать: 1 Количество просмотров: 390
2
Подписаться
319
Подписчики

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

Обзор стратегии

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

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

Основная логика стратегии основана на следующих аспектах:

  1. Появление сигнала: использование пересечения 9 и 21 простых движущихся средних для захвата изменения тренда. При прохождении долгосрочной средней линии на короткосрочной средней линии появляется многосигнал, при прохождении долгосрочной средней линии - пустой сигнал.
  2. Условное фильтрование: с помощью RSI-индикатора фильтруется перекуп и перепродажа, чтобы избежать входа в экстремальные рыночные условия. При этом используется индикатор ATR, чтобы гарантировать, что рыночная волатильность соответствует условиям сделки.
  3. Управление рисками: использование стоп-лосса на основе процентной стоимости аккаунта, определение стоп-позиции путем установления соотношения риска и прибыли для достижения разумной прибыли при хеджировании риска.

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

  1. Системная адаптивность: с помощью включения/отключения фильтров RSI и ATR, стратегия может быть гибко адаптирована к различным рыночным условиям.
  2. Управление рисками: использование процентов стоп-лосса и динамического управления позициями, эффективное управление рисковыми выходами для каждой сделки.
  3. Высокая надежность сигналов: с помощью многочисленных механизмов фильтрации снижается влияние ложных сигналов и повышается вероятность успешной сделки.
  4. Параметры могут быть оптимизированы в соответствии с конкретными рыночными характеристиками.

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

  1. Риск колебания рынка: в случае колебания рынка в поперечном диапазоне, пересечение равновесных линий может привести к частым ложным сигналам.
  2. Риск отставания: движущаяся средняя имеет определенную отсталость и может пропустить лучший момент входа.
  3. Риск оптимизации параметров: чрезмерная оптимизация параметров может привести к перенастройке стратегии и повлиять на производительность диска.
  4. Зависимость от рыночной среды: стратегия лучше работает на рынке с заметной тенденцией, а может оказаться менее эффективной в других рыночных условиях.

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

  1. Динамическая параметровая настройка: можно автоматически настраивать средний цикл и RSI-температуры в зависимости от рыночных колебаний.
  2. Добавление фильтра силы тренда: введение таких показателей, как DMI или ADX, для оценки силы тренда.
  3. Оптимизация методов остановки убытков: можно рассмотреть использование отслеживаемой остановки или динамической остановки на основе ATR.
  4. Усовершенствование управления позициями: внедрение динамической системы управления позициями, основанной на волатильности.

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

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

Исходный код стратегии
/*backtest
start: 2025-01-21 00:00:00
end: 2025-02-20 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/

//@version=5
strategy("Simplified MA Crossover Strategy with Disable Options", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// Inputs
shortLength = input.int(9, title="Short MA Length", minval=1)
longLength = input.int(21, title="Long MA Length", minval=1)

// RSI Filter
enableRSI = input.bool(true, title="Enable RSI Filter")
rsiLength = input.int(14, title="RSI Length", minval=1)
rsiOverbought = input.int(70, title="RSI Overbought Level", minval=50, maxval=100)
rsiOversold = input.int(30, title="RSI Oversold Level", minval=0, maxval=50)

// ATR Filter
enableATR = input.bool(true, title="Enable ATR Filter")
atrLength = input.int(14, title="ATR Length", minval=1)
minATR = input.float(0.005, title="Minimum ATR Threshold", minval=0)

// Risk Management
stopLossPerc = input.float(0.5, title="Stop Loss (%)", minval=0.1) / 100
riskRewardRatio = input.float(2, title="Risk-Reward Ratio", minval=1)
riskPercentage = input.float(2, title="Risk Percentage", minval=0.1) / 100

// Indicators
shortMA = ta.sma(close, shortLength)
longMA = ta.sma(close, longLength)
rsi = ta.rsi(close, rsiLength)
atr = ta.atr(atrLength)

// Conditions
longCondition = ta.crossover(shortMA, longMA)
shortCondition = ta.crossunder(shortMA, longMA)

// Apply RSI Filter (if enabled)
if (enableRSI)
    longCondition := longCondition and rsi < rsiOverbought
    shortCondition := shortCondition and rsi > rsiOversold

// Apply ATR Filter (if enabled)
if (enableATR)
    longCondition := longCondition and atr > minATR
    shortCondition := shortCondition and atr > minATR

// Risk Management
positionSize = strategy.equity * riskPercentage / (stopLossPerc * close)
takeProfitLevel = strategy.position_avg_price * (1 + stopLossPerc * riskRewardRatio)
stopLossLevel = strategy.position_avg_price * (1 - stopLossPerc)

// Execute Trades
if (longCondition)
    strategy.entry("Long", strategy.long, qty=positionSize)
    strategy.exit("Take Profit/Stop Loss", "Long", limit=takeProfitLevel, stop=stopLossLevel)

if (shortCondition)
    strategy.entry("Short", strategy.short, qty=positionSize)
    strategy.exit("Take Profit/Stop Loss", "Short", limit=strategy.position_avg_price * (1 - stopLossPerc * riskRewardRatio), stop=strategy.position_avg_price * (1 + stopLossPerc))

// Plotting
plot(shortMA, color=color.blue, title="Short MA")
plot(longMA, color=color.red, title="Long MA")
hline(rsiOverbought, "Overbought", color=color.red)
hline(rsiOversold, "Oversold", color=color.green)
plot(atr, color=color.orange, title="ATR")
plotshape(series=longCondition, title="Long Entry", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=shortCondition, title="Short Entry", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")