Stratégie de suivi de la différence de prix entre les canaux RSI

Auteur:ChaoZhang est là., Date: 2023-12-18 17:48:24 Je vous en prie.
Les étiquettes:

img

Résumé

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.

La logique de la stratégie

  1. 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.

  2. Lorsque le RSI entre dans le canal 55-45, il indique une zone de choc.

  3. 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é.

  4. 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é.

  5. 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.

Les avantages de la stratégie

  1. 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.

  2. 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.

  3. 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.

Risques liés à la stratégie

  1. Des réglages incorrects des paramètres RSI peuvent provoquer des réponses trop sensibles ou lentes.

  2. L'importance des écarts de prix médian n'est pas toujours fiable et le prix médian lui-même peut également fluctuer.

  3. 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:

  • Optimiser les paramètres de l'indicateur RSI pour répondre correctement aux changements de prix
  • Combiner plus d'indicateurs pour juger de la fiabilité des écarts de prix médian
  • Resserrer les paramètres de stop-loss de manière appropriée pour éviter les pertes énormes

Directions pour l'optimisation de la stratégie

  1. Combiner plus d'indicateurs pour juger de la direction de rupture du prix médian

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.

  1. Introduction de modèles d'apprentissage automatique pour aider au jugement

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.

  1. Utiliser le stop-loss adaptatif

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.

Résumé

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

Plus de