Stratégie RSI en couches diagonales sur plusieurs délais

Auteur:ChaoZhang est là., Date: le 28 septembre 2023 à 16h12h25
Les étiquettes:

Résumé

Cette stratégie est une stratégie RSI multi-temporelle non-repeinting qui ne dure que lorsque deux délais supérieurs sont survendus. Je l'ai écrite sur BTC/USD 1 minute, mais la logique devrait fonctionner sur d'autres actifs également. Elle est conçue pour être rentable lorsque l'actif est en tendance baissière.

Principe

La couche diagonale fait référence aux conditions d'entrée et de sortie réparties sur différentes périodes. Normalement, les indicateurs peuvent devenir non rentables car dans les tendances à la baisse, les zones de surachat de la période en cours ne sont pas atteintes.

Ainsi, cette stratégie est en couches diagonales. Je peux créer un script séparé qui bascule entre diagonale-haut et diagonale-bas bas basé sur la tendance globale, car dans les périodes de tendance haussière prolongée, cet indicateur peut ne pas clignoter aussi fréquemment. Cela peut être visualisé sur un graphique de séries chronologiques x timeframe sous la forme d'une forme X. Quelque chose à considérer...

Les avantages

  • Utilise des indicateurs RSI sur plusieurs délais, améliorant la fiabilité du signal
  • La couche diagonale offre plus d'opportunités dans les tendances à la baisse
  • Les indicateurs non-repeint donnent des signaux fiables
  • Les paramètres RSI configurables et les niveaux de surachat/survente s'adaptent aux différents marchés
  • Considère les coûts de négociation, vise des bénéfices stables par rapport aux transactions à haute fréquence

Risques et solutions

  • RSI sujet aux faux signaux, modification des paramètres ou ajout de filtres
  • La superposition diagonale augmente la difficulté d'entrée, réduit les délais de superposition
  • Exposé au risque directionnel, envisager l'équilibrage long/court
  • Utiliser un stop loss fixe pour contrôler les pertes par transaction

Directions d'optimisation

  • Ajoutez la détection de tendance, utilisez la couche diagonale dans les tendances à la baisse, la diagonale vers le haut dans les tendances à la hausse
  • Optimiser les paramètres RSI pour trouver la meilleure combinaison
  • Ajouter des filtres de volume, de MA, etc. pour améliorer la qualité du signal
  • Ajoutez une stratégie courte pour que la stratégie puisse profiter sur tous les marchés
  • Optimiser le stop loss pour réduire le tirage

Résumé

Dans l'ensemble, il s'agit d'une stratégie de trading de tendance à la baisse très efficace. L'utilisation d'IRS multi-temporels et de superposition diagonale offre des opportunités de capter les rebonds dans les tendances à la baisse. La non-repeinting améliore également la fiabilité du signal.


/*backtest
start: 2022-09-21 00:00:00
end: 2023-06-24 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © wbburgin

//@version=5
strategy("MTF Layered RSI - Bitcoin Bot [wbburgin]",overlay=false, pyramiding = 20, initial_capital=10000)

length = input.int(7,"RSI Length")
tf2 = input.timeframe("3",title="HT 1")
tf3 = input.timeframe("5",title="HT 2")
ob = input.int(80,"Overbought Level")
os = input.int(20,"Oversold Level")

rsi = ta.rsi(close,length)
rsi2 = request.security(syminfo.tickerid, tf2, rsi[1], barmerge.gaps_off, lookahead=barmerge.lookahead_on)
rsi3 = request.security(syminfo.tickerid, tf3, rsi[1], barmerge.gaps_off, lookahead=barmerge.lookahead_on)

plot(rsi,color=color.yellow,title="RSI Current TF")
plot(rsi2,color=color.new(color.yellow,50),title="RSI HT1")
plot(rsi3,color=color.new(color.yellow,75),title="RSI HT2")

lm=hline(os,title="Oversold")
hm=hline(ob,title="Overbought")

fill(hm,lm,color=color.new(color.blue,95))

htCross = (ta.crossover(rsi2,os) and rsi3>os and rsi>os) or (ta.crossover(rsi3,os) and rsi2>os and rsi>os)
buySig = (ta.crossover(rsi,os) and rsi2 < os and rsi3 < os) or htCross
sellSig = ta.crossunder(rsi,ob)

if buySig
    strategy.entry("Long",strategy.long)
if sellSig
    strategy.close("Long")

plotshape(buySig,title="Buysig",style=shape.triangleup,location=location.bottom,color=color.green,size=size.tiny)
plotshape(sellSig,title="Sellsig",style=shape.triangledown,location=location.top,color=color.red,size=size.tiny)

Plus de