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.
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.
Quando o RSI entra no canal 55-45, ele indica entrar em uma zona de choque.
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.
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.
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.
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.
Quando o RSI flutua dentro do canal de limiar, ele indica a entrada em uma zona de choque.
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.
A configuração inadequada dos parâmetros do RSI pode causar respostas demasiado sensíveis ou lentas.
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.
A alta volatilidade nos mercados de criptomoedas, as configurações de stop loss excessivamente flexíveis podem levar a perdas ampliadas.
Soluções:
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.
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.
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.
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