Stratégie de percée à double RSI

Auteur:ChaoZhang est là., Date: 2023-12-27 14h33 et 15h
Les étiquettes:

img

Résumé

La stratégie de rupture du double RSI est une stratégie de trading algorithmique qui identifie les points d'inversion des prix à l'aide de l'indicateur RSI.

La logique de la stratégie

Cette stratégie repose principalement sur l'indicateur RSI pour juger de l'état du marché. L'indicateur RSI est calculé sur la base des changements des prix de clôture sur une certaine période, reflétant la dynamique d'achat et de vente du stock. Lorsque l'indicateur RSI dépasse le seuil supérieur prédéfini (défaut 75), il indique que le stock est entré dans la zone de surachat. Lorsque l'indicateur RSI tombe en dessous du seuil inférieur prédéfini (défaut 25), il indique que le stock est entré dans la zone de survente.

Les règles de jugement sont les suivantes:

  1. Lorsque l'indice de résistance dépasse le seuil supérieur, passez au short;
  2. Lorsque le RSI dépasse le seuil inférieur, passez long;
  3. Fermer une position en atteignant un stop loss ou un take profit.

Sa logique de négociation est simple et claire, avec des paramètres de référence raisonnables, un grand espace de configuration et convient à la capture de tendances plus importantes sur le marché.

Analyse des avantages

Les avantages de cette stratégie sont les suivants:

  1. Une logique simple, facile à comprendre et à mettre en œuvre;
  2. paramètres de référence raisonnables pouvant être personnalisés;
  3. logique de négociation inverse configurable pouvant répondre de manière flexible aux conditions du marché;
  4. Peut identifier efficacement les points d'inversion des prix et capturer les principales tendances.

En général, avec des paramètres de référence raisonnables, une mise en œuvre simple et la possibilité de déterminer efficacement les renversements de prix par le biais de l'indice RSI, cette stratégie convient à la capture de tendances à moyen et long terme et est facile à saisir et à utiliser comme stratégie quantitative.

Analyse des risques

Bien que cette stratégie soit relativement simple et fiable, nous ne pouvons ignorer les risques potentiels auxquels elle est confrontée:

  1. La probabilité relativement élevée que les indicateurs RSI déclenchent de faux signaux. L'indicateur RSI ne peut pas prédire parfaitement les renversements de prix, ce qui peut entraîner des erreurs de jugement.
  2. Possibilité d'un stop loss continu dans un marché en tendance.
  3. L'indicateur RSI n'est pas en mesure de déterminer efficacement les tendances de la fourchette, ce qui conduit à des pertes plus importantes dans cet environnement.

Pour maîtriser les risques, nous devons faire attention aux points suivants:

  1. Ajustez les paramètres de manière appropriée pour éviter des taux d'erreurs d'appréciation excessifs.
  2. Confirmer les signaux de négociation avec d'autres indicateurs pour améliorer la précision.
  3. Augmenter le ratio de prise de profit et réduire la taille du stop loss unique.
  4. Évitez de négocier sur des marchés variés.

Directions d'optimisation

Compte tenu des principaux risques auxquels cette stratégie est confrontée, à savoir les erreurs d'appréciation et les pertes sur différents marchés, nous pouvons optimiser les aspects suivants:

  1. Les indicateurs tels que le KDJ et le MACD peuvent jouer un rôle de filtrage pour éviter les erreurs.
  2. Augmenter le seuil pour les montants d'un seul stop loss.
  3. Ajoutez une logique limitant les entrées à une ou N fois par période donnée pour contrôler l'ouverture trop fréquente des positions.
  4. Assurez-vous que la stratégie ne fonctionne que sur les marchés tendance, en évitant les marchés variables, ce qui peut optimiser considérablement le rapport risque/rendement de la stratégie.

Conclusion

En résumé, la stratégie de rupture du double RSI est une stratégie quantitative simple et pratique. Elle identifie les renversements de prix via le RSI pour atteindre un simple suivi de tendance. Bien qu'il existe certains risques d'erreur de jugement, des optimisations telles que l'ajustement des paramètres, le filtrage du signal peuvent aider à atténuer cela et lui permettre de jouer un rôle important dans la capture des tendances à moyen et long terme. Sa logique est simple, ce qui la rend adaptée pour les débutants.


/*backtest
start: 2023-12-19 00:00:00
end: 2023-12-26 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("RSI Algo", overlay=true)

// Calculate start/end date and time condition
DST = 1 //day light saving for usa
//--- Europe
London = iff(DST==0,"0000-0900","0100-1000")
//--- America
NewYork = iff(DST==0,"0400-1500","0500-1600")
//--- Pacific
Sydney = iff(DST==0,"1300-2200","1400-2300")
//--- Asia
Tokyo = iff(DST==0,"1500-2400","1600-0100")

//-- Time In Range
timeinrange(res, sess) => time(res, sess) != 0

london = timeinrange(timeframe.period, London)
newyork = timeinrange(timeframe.period, NewYork)

time_cond = true


myPeriod = input(defval=14, type=input.integer, title="Period")
myThresholdUp = input(defval=75, type=input.float, title="Upper Threshold")
myThresholdDn = input(defval=25, type=input.float, title="Lower Threshold")
myAlgoFlipToggle = input(defval=false, type=input.bool, title="Imverse Algorthim")
myLineToggle = input(defval=true, type=input.bool, title="Show Lines")
myLabelToggle = input(defval=true, type=input.bool, title="Show Labels")
myRSI=rsi(close, myPeriod)
buy = myAlgoFlipToggle ? falling(myRSI,1) and cross(myRSI, myThresholdDn) : rising(myRSI, 1) and cross(myRSI,myThresholdUp) //and time_cond
sell = myAlgoFlipToggle ? rising(myRSI, 1) and cross(myRSI,myThresholdUp) : falling(myRSI,1) and cross(myRSI, myThresholdDn) //and time_cond
myPosition = 0
myPosition := buy==1 ? 0 : sell==1 or myPosition[1]==1 ? 1 : 0
trendColor = buy ? color.red : sell ? color.green : na
plot(myLineToggle ? buy and myPosition[1]==1 ? low - 0.004: sell and myPosition[1]==0 ? high + 0.004 : na : na, color=trendColor, style=plot.style_line, linewidth=4, editable=false)
plotshape(myLabelToggle ? buy and myPosition[1]==1 ? low - 0.005 : na : na, style=shape.labelup, location=location.absolute, text="Buy", transp=0, textcolor = color.white, color=color.black, editable=false)
plotshape(myLabelToggle ? sell and myPosition[1]==0 ? high + 0.005 : na : na, style=shape.labeldown, location=location.absolute, text="Sell", transp=0, textcolor = color.white, color=color.black, editable=false)

strategy.initial_capital = 50000
    //Calculate the size of the next trade
balance = strategy.netprofit + strategy.initial_capital //current balance
floating = strategy.openprofit          //floating profit/loss
risk = input(2,type=input.float,title="Risk %")/100           //risk % per trade
isTwoDigit = input(false,"Is this a 2 digit pair? (JPY, XAU, XPD...")


stop = input(250, title="stop loss pips")
tp = input(2500, title="take profit pips")
if(isTwoDigit)
    stop := stop/100
    
temp01 = balance * risk     //Risk in USD
temp02 = temp01/stop        //Risk in lots
temp03 = temp02*100000      //Convert to contracts
size = 1
    
strategy.entry("long",1,size,when=buy and myPosition[1]==1 )
strategy.entry("short",0,size,when=sell and myPosition[1]==0)

strategy.exit("exit_long","long",loss=stop, profit=tp)      //Long exit (stop loss)
strategy.exit("exit_short","short",loss=stop, profit=tp)      //Short exit (stop loss)

//strategy.close_all(when= not time_cond)


Plus de