La stratégie de suivi de la différence de prix des canaux RSI génère des signaux de trading en suivant les fluctuations des indicateurs RSI dans les canaux de seuil combinés avec les écarts de prix.
Utiliser la moyenne mobile de Hull pour lisser le RSI et générer des indicateurs de RSI lissés, y compris le RSI pour le prix de clôture, le prix le plus élevé, le prix le plus bas et le prix médian.
Lorsque le RSI entre dans le canal 55-45, il indique une zone de choc.
Lorsque le prix de clôture RSI retombe de la limite supérieure du canal, et que le prix de clôture est inférieur au prix médian, cela indique que le prix est sous pression; cependant, à ce moment-là, le prix médian RSI est toujours au-dessus de la limite supérieure du canal, ce qui indique que le prix médian a encore un pouvoir d'achat qui répond à la logique de suivi des écarts de prix médian. Par conséquent, un signal d'achat est généré.
Lors de la clôture du prix, le RSI rebondit de la limite inférieure du canal et le prix de clôture est supérieur au prix médian. Il indique que le prix a un support; mais à ce moment-là, le prix médian RSI tombe en dessous de la limite inférieure du canal, indiquant que le prix médian a une pression plus grande, ce qui répond à la logique de suivi des écarts de prix médian. Par conséquent, un signal de vente est généré.
L'indicateur RSI de prix le plus élevé et l'indicateur RSI de prix le plus bas sont utilisés pour identifier rapidement les signaux de trading invalides et réaliser des stop-loss rapides.
L'utilisation de l'écart de prix médian pour suivre la direction forte du prix médian répond à l'idée de suivi de tendance.
Lorsque le RSI fluctue à l'intérieur du canal de seuil, il indique l'entrée dans une zone de choc. À ce moment-là, l'utilisation du prix médian pour suivre la direction forte du prix médian évite d'être piégé dans des chocs de gamme.
L'indicateur RSI de prix le plus élevé et l'indicateur RSI de prix le plus bas sont utilisés pour identifier rapidement les signaux de négociation invalides et réaliser des pertes d'arrêt rapides, ce qui peut contrôler efficacement les pertes.
Des réglages incorrects des paramètres RSI peuvent provoquer des réponses trop sensibles ou lentes.
L'importance des écarts de prix médian n'est pas toujours fiable et le prix médian lui-même peut également fluctuer.
La volatilité élevée sur les marchés des crypto-monnaies, les paramètres de stop loss trop lâches peuvent entraîner des pertes accrues.
Les solutions:
Introduire des indicateurs tels que les bandes de Bollinger pour juger si le prix médian est proche des bandes supérieures ou inférieures, améliorant ainsi la précision du jugement de la direction de rupture du prix médian.
Utilisez LSTM et d'autres modèles d'apprentissage en profondeur pour prédire les tendances futures du prix médian et aider à déterminer si le prix médian peut réussir à se diriger dans une certaine direction.
Ajustez dynamiquement les positions stop loss en fonction de la volatilité du marché. Par exemple, serrez les positions stop loss de manière appropriée lorsque la volatilité augmente; assouplissez les positions stop loss de manière appropriée lorsque la volatilité diminue.
La stratégie de suivi de la différence de prix des canaux RSI génère des signaux de trading en suivant les fluctuations du RSI au sein des canaux combinés à des ruptures de prix, dans le but de capturer des explosions d'achat / vente rapides sur les marchés de crypto. La stratégie combine efficacement les méthodes de suivi de tendance et d'identification de gamme et peut toujours obtenir de bons signaux de trading lorsque les différences de prix sont étroites. Pendant ce temps, le mécanisme de stop-loss rapide rend également les risques de la stratégie contrôlables. La prochaine étape consiste à améliorer davantage la fiabilité et la rentabilité de la stratégie en combinant plus de jugements d'indicateurs et de prédictions d'apprentissage automatique.
/*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