Cette stratégie utilise principalement l'indice de force relative (RSI) pour déterminer les conditions de surachat et de survente sur le marché, combiné avec le prix au-dessus de la moyenne mobile simple de 200 jours (SMA) en tant que filtre de tendance, pour décider d'entrer ou non dans un commerce. La stratégie construit des conditions d'entrée à travers trois indicateurs RSI. Seulement lorsque le RSI à court terme est inférieur à 35 et montre une tendance à la baisse pendant trois périodes consécutives, tandis que le RSI de la troisième période est inférieur à 60 et le prix de clôture actuel est supérieur à la SMA de 200 jours, va-t-il long.
Cette stratégie construit des conditions d'entrée à travers un triple RSI, combiné avec le prix au-dessus de la moyenne mobile à long terme en tant que filtre de tendance, pour capturer les configurations d'inversion de survente. La logique de la stratégie est simple et claire, facile à mettre en œuvre et à optimiser. Cependant, la stratégie comporte également des risques et des lacunes tels que le décalage du signal, une faible fréquence de négociation et ne pouvant capturer que les mouvements unilatéraux du marché. Elle nécessite un débogage et une amélioration continus dans l'application réelle. En introduisant un stop loss et une prise de profit, une gestion de position, en combinant avec d'autres indicateurs et d'autres méthodes, la stabilité et la rentabilité de la stratégie peuvent être encore améliorées.
/*backtest start: 2023-05-15 00:00:00 end: 2024-05-14 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 //@author Honestcowboy // strategy("Triple RSI [Honestcowboy]" ) // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >> // ---------> User Inputs <----------- >> // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >> rsiLengthInput = input.int(5, minval=1, title="RSI Length", group="RSI Settings") rsiSourceInput = input.source(close, "Source", group="RSI Settings") // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >> // ---------> VARIABLE CALCULATIONS <----------- >> // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >> up = ta.rma(math.max(ta.change(rsiSourceInput), 0), rsiLengthInput) down = ta.rma(-math.min(ta.change(rsiSourceInput), 0), rsiLengthInput) rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down)) // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >> // ---------> CONDITIONALS <----------- >> // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >> rule1 = rsi<35 rule2 = rsi<rsi[1] and rsi[1]<rsi[2] and rsi[2]<rsi[3] rule3 = rsi[3]<60 rule4 = close>ta.sma(close, 200) longCondition = rule1 and rule2 and rule3 and rule4 closeCondition = rsi>50 // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >> // ---------> GRAPHICAL DISPLAY <----------- >> // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >> hline(30, title="Long Condition Line") hline(50, title="Exit Condition Line") plot(rsi) plotshape(longCondition ? rsi-3 : na, title="Long Condition", style=shape.triangleup, color=color.lime, location=location.absolute) plotshape(closeCondition and rsi[1]<50? rsi+3 : na, title="Exit Condition", style=shape.triangledown, color=#e60000, location=location.absolute) // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >> // ---------> AUTOMATION AND BACKTESTING <----------- >> // $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ >> if longCondition and strategy.position_size==0 strategy.entry("LONG", strategy.long) if closeCondition strategy.close("LONG")