Стратегия отслеживания ценовой разницы канала RSI

Автор:Чао Чжан, Дата: 2023-12-18 17:48:24
Тэги:

img

Обзор

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

Логика стратегии

  1. Использование скользящей средней Hull для сглаживания показателя RSI и получения сглаженных показателей RSI, включая RSI для цены закрытия, самой высокой цены, самой низкой цены и средней цены.

  2. Установите диапазон RSI на 55-45.

  3. Когда цена закрытия RSI опускается от верхней границы канала, и цена закрытия ниже средней цены, это указывает на то, что цена находится под давлением; однако, в это время средняя цена RSI все еще выше верхней границы канала, что указывает на то, что средняя цена все еще имеет покупательную способность, которая отвечает логике отслеживания прорывов средней цены.

  4. При закрытии цена RSI отскакивает от нижней границы канала, и цена закрытия выше, чем средняя цена. Это указывает на то, что цена имеет поддержку; но в это время средняя цена RSI падает ниже нижней границы канала, что указывает на то, что средняя цена имеет большее давление, что соответствует логике отслеживания среднего ценового прорыва. Поэтому генерируется сигнал продажи.

  5. Наиболее высокие и низкие показатели RSI используются для быстрого выявления недействительных торговых сигналов и быстрого прекращения потерь.

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

  1. Использование прорывов средней цены для отслеживания сильного направления средней цены соответствует идее отслеживания тренда.

  2. Когда RSI колеблется в пределах порогового канала, это указывает на вход в зону шока.

  3. Наиболее высокие показатели RSI и наименьшие показатели RSI используются для быстрого выявления недействительных торговых сигналов и быстрого прекращения потерь, которые могут эффективно контролировать потери.

Риски стратегии

  1. Неправильное настройка параметров RSI может вызвать слишком чувствительные или медленные реакции.

  2. Значение среднего ценового прорыва не всегда является надежным, и сама средняя цена также может колебаться.

  3. Высокая волатильность на крипторынках, слишком свободные параметры стоп-лосса могут привести к увеличению потерь.

Решения:

  • Оптимизировать параметры RSI для правильного реагирования на изменения цен
  • Объединить больше показателей для оценки надежности медианных ценовых прорывов
  • Усилить настройки стоп-лосса, чтобы избежать больших потерь

Руководство по оптимизации стратегии

  1. Объедините больше индикаторов для оценки направления прорыва средней цены

Внедрить такие индикаторы, как полосы Боллинджера, чтобы судить о том, близка ли средняя цена к верхней или нижней полосам, тем самым повышая точность оценки направления прорыва средней цены.

  1. Внедрение моделей машинного обучения для оказания помощи в суждении

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

  1. Использование адаптивной стоп-потери

Динамически корректировать позиции стоп-лосса в зависимости от волатильности рынка.

Резюме

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


/*backtest
start: 2023-11-17 00:00:00
end: 2023-12-17 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Hull MA of RSI Strategy",overlay=false)
//+++++++++++++++++++++++++++++++
//++++++++++++ Setup ++++++++++++
//+++++++++++++++++++++++++++++++
// RSI 
rsi1_tt="=== RSI ==="
rsi1_len=input(13,title="Period",inline="set",group=rsi1_tt)
//Mid
mid_tt="=== Mid Channel ==="
upper=input(55.0,title="Upper",inline="set",group=mid_tt)
lower=input(45.0,title="Lower",inline="set",group=mid_tt)
//Over
over_tt="=== Over ==="
ovb=input(70.0,title="Overbought",inline="set",group=over_tt)
ovs=input(30.0,title="Oversold",inline="set",group=over_tt)
//++++++++++++++++++++++++++++++++++++++++
//++++++++++++ Hull MA of RSI ++++++++++++
//++++++++++++++++++++++++++++++++++++++++
hma_tt="=== Hull MA ==="
hma_len=input(3,title="Period",inline="set",group=hma_tt)
rsi_c=hma(rsi(close,rsi1_len),hma_len)
rsi_h=hma(rsi(high,rsi1_len),hma_len)
rsi_l=hma(rsi(low,rsi1_len),hma_len)
rsi_hl2=hma(rsi(hl2,rsi1_len),hma_len)
//++++++++++++++++++++++++++++++++
//++++++++++++ Signal ++++++++++++
//++++++++++++++++++++++++++++++++
var order_status="None"
BuySignal=
       crossunder(rsi_c,ovb)
       and
       close<hl2
       and
       rsi_hl2>ovb
       and
       order_status=="None"
CloseBuy=
       order_status[1]=="Long"
       and
       (crossover(rsi_c,ovb)
       or
       crossunder(rsi_l,upper))
SellSignal=
       crossover(rsi_c,ovs)
       and
       close>hl2
       and
       rsi_hl2<ovs
       and
       order_status=="None"
CloseSell=
       order_status[1]=="Short"
       and
       (crossunder(rsi_c,ovs)
       or
       crossover(rsi_h,lower))
ExitSignal=
       CloseBuy
       or
       CloseSell
if BuySignal
    order_status:="Long"
if SellSignal
    order_status:="Short"
if ExitSignal
    order_status:="None"

//+++++++++++++++++++++++++++++++++++
//++++++++++++ Plot Line ++++++++++++
//+++++++++++++++++++++++++++++++++++
rsi_c_col=
       rsi_c>upper?color.new(color.blue,0):
       rsi_c<lower?color.new(color.blue,0):
       color.new(color.orange,0)
rsi_h_col=
       rsi_h>upper?color.new(color.green,0):
       rsi_h<lower?color.new(color.green,0):
       color.new(color.orange,0)
rsi_l_col=
       rsi_l>upper?color.new(color.yellow,0):
       rsi_l<lower?color.new(color.yellow,0):
       color.new(color.orange,0)
rsi_hl2_col=
       rsi_hl2>upper?color.new(color.olive,0):
       rsi_hl2<lower?color.new(color.olive,0):
       color.new(color.orange,0)
plot(rsi_c,title="RSI Close",color=rsi_c_col,linewidth=2)
plot(rsi_h,title="RSI High",color=rsi_h_col,linewidth=1)
plot(rsi_l,title="RSI Low",color=rsi_l_col,linewidth=1)
plot(rsi_hl2,title="RSI HL2",color=rsi_hl2_col,linewidth=1)
upper_line=hline(upper,title="Upper",color=color.new(color.black,100))
lower_line=hline(lower,title="Lower",color=color.new(color.black,100))
fill(upper_line,lower_line,title="Mid Channel",color=color.silver)
ovb_line=hline(ovb,title="Overbought",color=color.new(color.silver,0),linestyle=hline.style_solid,linewidth=2)
ovs_line=hline(ovs,title="Oversold",color=color.new(color.silver,0),linestyle=hline.style_solid,linewidth=2)

//++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++ Plot Analyzing Signals ++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++
//Color
buy_col=
       BuySignal?color.new(color.blue,70):na
sell_col=
       SellSignal?color.new(color.red,70):na
close_buy_col=
       CloseBuy and order_status[1]=="Long"?color.new(color.yellow,70):na
close_sell_col=
       CloseSell and order_status[1]=="Short"?color.new(color.yellow,70):na
//Background
bgcolor(close_buy_col, title='Close Buy', offset=0)
bgcolor(close_sell_col, title='Close Sell', offset=0)
bgcolor(sell_col, title='Sell', offset=0)
bgcolor(buy_col, title='Buy', offset=0)
//++++++++++++++++++++++++++++++++++
//++++++++++++ Backtest ++++++++++++
//++++++++++++++++++++++++++++++++++
strategy.entry("Long",strategy.long,when=BuySignal)
strategy.close("Long",when=CloseBuy)
strategy.entry("Short",strategy.short,when=SellSignal)
strategy.close("Short",when=CloseSell)
//EOF

Больше