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.
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:
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é.
Les avantages de cette stratégie sont les suivants:
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.
Bien que cette stratégie soit relativement simple et fiable, nous ne pouvons ignorer les risques potentiels auxquels elle est confrontée:
Pour maîtriser les risques, nous devons faire attention aux points suivants:
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:
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)