Количественная торговая стратегия, сочетающая динамический трендовый канал и индекс относительной силы

KC RSI EMA ATR
Дата создания: 2025-02-18 15:15:48 Последнее изменение: 2025-02-18 15:15:48
Копировать: 1 Количество просмотров: 345
1
Подписаться
1617
Подписчики

Количественная торговая стратегия, сочетающая динамический трендовый канал и индекс относительной силы

Обзор

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

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

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

  1. Конструкция Кентнерского канала: используя 20-циклическую ЭМА в качестве средней полосы, 10-циклический ATR умноженный на 1,5-кратное число определяет верхнюю и нижнюю полосы, образуя динамическую зону колебаний цены.
  2. Применение RSI: RSI рассчитывается на 14 циклов, устанавливая 70 и 30 как критические значения для перекупа и перепродажи.
  3. Создание торгового сигнала:
    • При условии, что цена пробивает нижнюю линию канала и RSI ниже 30
    • Условия пустоты: цена пробивает канал и RSI выше 70
  4. Логика равных позиций:
    • Многоочередные позиции: цены упали ниже EMA или RSI и выросли более чем на 50%
    • Пониженная позиция: цены преодолели EMA или RSI и упали ниже 50

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

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

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

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

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

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

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

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

Исходный код стратегии
/*backtest
start: 2024-02-19 00:00:00
end: 2025-02-16 08:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Keltner Channel + RSI Stratégiia", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=200)

// Parametre Keltner Channel
ema_length = input.int(20, title="EMA Perióda")
atr_length = input.int(10, title="ATR Perióda")
multiplier = input.float(1.5, title="ATR Multiplikátor")

// Výpočet Keltner Channel
ema = ta.ema(close, ema_length)
atr = ta.atr(atr_length)
upper_kc = ema + (multiplier * atr)
lower_kc = ema - (multiplier * atr)

// Parametre RSI
rsi_length = input.int(14, title="RSI Perióda")
rsi_overbought = input.int(70, title="RSI Prekúpenosť")
rsi_oversold = input.int(30, title="RSI Prepredanosť")

// Výpočet RSI
rsi = ta.rsi(close, rsi_length)

// Obchodné podmienky

// Nákupná podmienka: Cena prechádza nad dolnou Keltner Channel a RSI je pod prepredanosťou
long_condition = ta.crossover(close, lower_kc) and (rsi < rsi_oversold)

// Predajná podmienka: Cena prechádza pod hornou Keltner Channel a RSI je nad prekúpenosťou
short_condition = ta.crossunder(close, upper_kc) and (rsi > rsi_overbought)

// Uzatváranie pozícií
close_long_condition = ta.crossunder(close, ema) or (rsi > 50)
close_short_condition = ta.crossover(close, ema) or (rsi < 50)

// Vstupy do pozícií
if (long_condition)
    strategy.entry("Long", strategy.long)

if (short_condition)
    strategy.entry("Short", strategy.short)

// Uzatváranie pozícií
if (close_long_condition)
    strategy.close("Long")

if (close_short_condition)
    strategy.close("Short")

// Vizualizácia indikátorov

// Keltner Channel
plot_ema = plot(ema, title="EMA", color=color.blue, linewidth=2)
plot_upper = plot(upper_kc, title="Horná Keltner Channel", color=color.green, linewidth=1)
plot_lower = plot(lower_kc, title="Dolná Keltner Channel", color=color.red, linewidth=1)
fill(plot_upper, plot_lower, color=color.new(color.purple, 90), title="Keltner Channel Fill")  // Nastavenie transparentnosti priamo v farbe

// RSI
hline_overbought = hline(rsi_overbought, "RSI Overbought", color=color.red, linestyle=hline.style_dotted)
hline_oversold = hline(rsi_oversold, "RSI Oversold", color=color.green, linestyle=hline.style_dotted)
plot_rsi = plot(rsi, title="RSI", color=color.orange, linewidth=2, offset=0)

// Šípky pre signály
plotshape(series=long_condition, location=location.belowbar, color=color.green, style=shape.labelup, title="Nákupný Signál", text="BUY")
plotshape(series=short_condition, location=location.abovebar, color=color.red, style=shape.labeldown, title="Predajný Signál", text="SELL")