Estratégia de acompanhamento da diferença de preços do canal RSI

Autora:ChaoZhang, Data: 2023-12-18 17:48:24
Tags:

img

Resumo

A estratégia de rastreamento de diferença de preço do canal RSI gera sinais de negociação rastreando flutuações de indicadores do RSI dentro dos canais de limiar combinados com quebras de preço.

Estratégia lógica

  1. Utilize a média móvel de Hull para suavizar o RSI e gerar indicadores RSI suavizados, incluindo o RSI para o preço de fechamento, o preço mais alto, o preço mais baixo e o preço mediano.

  2. Quando o RSI entra no canal 55-45, ele indica entrar em uma zona de choque.

  3. Quando o RSI do preço de fechamento cai para trás do limite superior do canal, e o preço de fechamento é menor que o preço mediano, isso indica que o preço está sob pressão; no entanto, neste momento, o RSI do preço mediano ainda está acima do limite superior do canal, indicando que o preço mediano ainda tem poder de compra que atende à lógica de rastreamento de rupturas de preço mediano.

  4. Quando o preço de fechamento RSI rebota de volta do limite inferior do canal, e o preço de fechamento é maior do que o preço médio. Isso indica que o preço tem suporte; mas neste momento, o preço médio RSI cai abaixo do limite inferior do canal, indicando que o preço médio tem maior pressão, o que atende à lógica de rastreamento de quebras de preço médio. Portanto, um sinal de venda é gerado.

  5. Os indicadores RSI de preço mais alto e RSI de preço mais baixo são utilizados para identificar prontamente sinais de negociação inválidos e realizar perdas rápidas de parada.

Vantagens da estratégia

  1. Usar breakouts de preço médio para rastrear a direção forte do preço médio cumpre a ideia de rastreamento de tendências.

  2. Quando o RSI flutua dentro do canal de limiar, ele indica a entrada em uma zona de choque.

  3. Os indicadores RSI de preço mais alto e RSI de preço mais baixo são utilizados para identificar rapidamente sinais de negociação inválidos e realizar perdas de parada rápida, o que pode controlar efetivamente as perdas.

Riscos da Estratégia

  1. A configuração inadequada dos parâmetros do RSI pode causar respostas demasiado sensíveis ou lentas.

  2. A importância das rupturas médias de preços nem sempre é fiável e o próprio preço mediano também pode flutuar.

  3. A alta volatilidade nos mercados de criptomoedas, as configurações de stop loss excessivamente flexíveis podem levar a perdas ampliadas.

Soluções:

  • Otimizar os parâmetros do RSI para fazer respostas adequadas às alterações de preços
  • Combinar mais indicadores para avaliar a fiabilidade das variações médias de preços
  • Apertar as configurações de stop loss adequadamente para evitar perdas enormes

Orientações para a otimização da estratégia

  1. Combinar mais indicadores para julgar a direção de ruptura do preço mediano

Introduzir indicadores como as bandas de Bollinger para julgar se o preço mediano está próximo das bandas superior ou inferior, melhorando assim a precisão de julgar a direção de ruptura do preço mediano.

  1. Introduzir modelos de aprendizagem de máquina para ajudar no julgamento

Usar LSTM e outros modelos de aprendizagem profunda para prever tendências futuras do preço médio e ajudar a determinar se o preço médio pode romper com sucesso em uma determinada direção.

  1. Utilização de perda de parada adaptativa

Ajustar dinamicamente as posições de stop loss com base na volatilidade do mercado. Por exemplo, apertar as posições de stop loss adequadamente quando a volatilidade aumenta; afrouxar as posições de stop loss adequadamente quando a volatilidade diminui.

Resumo

A estratégia de rastreamento da diferença de preço do canal RSI gera sinais de negociação rastreando as flutuações do RSI dentro dos canais combinadas com as quebras de preço, com o objetivo de capturar explosões rápidas de compra / venda nos mercados de criptomoedas. A estratégia combina efetivamente métodos de rastreamento de tendências e identificação de faixa e ainda pode obter bons sinais de negociação quando as diferenças de preço se estreitam. Enquanto isso, o mecanismo de stop loss rápido também torna os riscos da estratégia controláveis. O próximo passo é melhorar ainda mais a confiabilidade e a lucratividade da estratégia, combinando mais julgamentos de indicadores e previsões de aprendizado de máquina.


/*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

Mais.