La stratégie d'inversion de tendance RSI utilise les signaux d'inversion de l'indicateur RSI pour identifier les points de renversement de tendance potentiels et entrer dans des transactions longues ou courtes.
Cette stratégie est basée sur la combinaison de signaux d'inversion des RSI et de signaux d'inversion des prix, incluant principalement quatre situations:
Réversion haussière régulière: Lorsque le RSI forme un plus bas (ce qui signifie que la tendance du RSI s'inverse de haut en bas) et que le prix forme un plus bas (ce qui signifie que la tendance des prix s'inverse de bas en haut), un signal d'inversion haussière régulière est généré.
Réversion haussière cachée: Lorsque le RSI forme un bas inférieur (ce qui signifie que la tendance du RSI continue de monter vers le bas) mais que le prix forme un bas plus élevé (ce qui signifie que la tendance des prix s'inverse de bas en haut), un signal d'inversion haussière caché est généré.
Réversion baissière régulière: Lorsque l'indice RSI forme un niveau plus bas (ce qui signifie que la tendance de l'indice RSI s'inverse de bas en haut) et que le prix forme un niveau plus élevé (ce qui signifie que la tendance des prix s'inverse de haut en bas), un signal d'inversion baissière régulière est généré.
Réversion baissière cachée: Lorsque le RSI forme un sommet plus élevé (ce qui signifie que la tendance du RSI continue de baisser vers le haut) mais que le prix forme un sommet inférieur (ce qui signifie que la tendance des prix s'inverse de haut en bas), un signal d'inversion baissière caché est généré.
Cela combine à la fois les signaux d'inversion du RSI et les signaux d'inversion des prix pour générer des signaux de trading, évitant que les faux signaux ne reposent uniquement sur le RSI ou les inversions de prix, ce qui rend la stratégie plus robuste.
La stratégie RSI Trend Reversal présente les avantages suivants:
La combinaison du RSI et de l'inversion de prix filtre de nombreux faux signaux d'inversion et améliore la qualité du signal.
L'identification de tendances haussières et baissières cachées, qui précèdent souvent des tendances de prix puissantes, permet une entrée précoce.
Les paramètres RSI et les périodes de rétrospective personnalisables peuvent être ajustés pour différents marchés, offrant ainsi une certaine souplesse.
La visualisation des indicateurs et des signaux donne un jugement intuitif sur l'état du marché.
La logique de stratégie simple et claire facilite la compréhension et la mise en œuvre du trading d'algo.
La stratégie RSI Trend Reversal comporte également les risques suivants:
L'indicateur combiné RSI et l'inversion des prix peuvent encore présenter des erreurs d'appréciation occasionnelles.
Les tendances haussières et baissières cachées sont difficiles à identifier et les opportunités pourraient être manquées sans expérience.
Un mauvais réglage des périodes de rétrospective peut entraîner des points d'inversion manquants ou des jugements en retard.
Il convient de mettre en œuvre des stratégies de stop loss pour éviter que les pertes ne s'accroissent après des revers baissiers.
Les risques peuvent être gérés par l'optimisation des paramètres, un stop loss strict, la prise prudente de signaux d'inversion cachés, etc.
La stratégie d'inversion de tendance de l'indicateur RSI peut être optimisée dans les aspects suivants:
Ajuster les paramètres de l'indice de résistance et la sensibilité de l'essai pour trouver la période optimale de l'indice de résistance pour les différents marchés.
Optimiser les paramètres de la période de rétrospective pour équilibrer la détection précoce des retours et prévenir les faux signaux.
Ajouter une analyse de volume telle que la détection d'un dégagement de volume élevé provoquant des renversements de prix.
Combinez d'autres signaux d'indicateur comme le MACD, les bandes de Bollinger pour améliorer la précision du jugement.
Ajoutez des stratégies de stop loss pour limiter la taille des pertes.
Améliorer la logique de la stratégie basée sur les résultats des backtests pour améliorer les facteurs de profit.
La stratégie de renversement de tendance RSI identifie les points tournants potentiels de la tendance en combinant les renversements de tendance RSI et les renversements de prix. Elle utilise bien la capacité de jugement de la tendance RSI tout en filtrant les faux signaux avec des informations sur les prix. La stratégie a une logique simple et claire qui est facile à mettre en œuvre. Les paramètres et le stop loss peuvent être optimisés pour gérer les risques et améliorer encore la performance.
/*backtest start: 2023-10-15 00:00:00 end: 2023-10-19 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 //study(title="Divergence Indicator", format=format.price) strategy(title="RSI Divergence Indicator", overlay=false,pyramiding=1, default_qty_value=2, default_qty_type=strategy.fixed, initial_capital=10000, currency=currency.USD) len = input(title="RSI Period", minval=1, defval=5) src = input(title="RSI Source", defval=close) lbR = input(title="Pivot Lookback Right", defval=5) lbL = input(title="Pivot Lookback Left", defval=5) rangeUpper = input(title="Max of Lookback Range", defval=60) rangeLower = input(title="Min of Lookback Range", defval=5) plotBull = input(title="Plot Bullish", defval=true) plotHiddenBull = input(title="Plot Hidden Bullish", defval=true) plotBear = input(title="Plot Bearish", defval=true) plotHiddenBear = input(title="Plot Hidden Bearish", defval=false) bearColor = color.purple bullColor = color.green hiddenBullColor = color.new(color.green, 80) hiddenBearColor = color.new(color.red, 80) textColor = color.white noneColor = color.new(color.white, 100) osc = rsi(src, len) plot(osc, title="RSI", linewidth=2, color=#8D1699) hline(50, title="Middle Line", linestyle=hline.style_dotted) obLevel = hline(70, title="Overbought", linestyle=hline.style_dotted) osLevel = hline(30, title="Oversold", linestyle=hline.style_dotted) fill(obLevel, osLevel, title="Background", color=#9915FF, transp=90) plFound = na(pivotlow(osc, lbL, lbR)) ? false : true phFound = na(pivothigh(osc, lbL, lbR)) ? false : true _inRange(cond) => bars = barssince(cond == true) rangeLower <= bars and bars <= rangeUpper //------------------------------------------------------------------------------ // Regular Bullish // Osc: Higher Low oscHL = osc[lbR] > valuewhen(plFound, osc[lbR], 1) and _inRange(plFound[1]) // Price: Lower Low priceLL = low[lbR] < valuewhen(plFound, low[lbR], 1) bullCond = plotBull and priceLL and oscHL and plFound plot( plFound ? osc[lbR] : na, offset=-lbR, title="Regular Bullish", linewidth=2, color=(bullCond ? bullColor : noneColor), transp=0 ) plotshape( bullCond ? osc[lbR] : na, offset=-lbR, title="Regular Bullish Label", text=" Bull ", style=shape.labelup, location=location.absolute, color=bullColor, textcolor=textColor, transp=0 ) //------------------------------------------------------------------------------ // Hidden Bullish // Osc: Lower Low oscLL = osc[lbR] < valuewhen(plFound, osc[lbR], 1) and _inRange(plFound[1]) // Price: Higher Low priceHL = low[lbR] > valuewhen(plFound, low[lbR], 1) hiddenBullCond = plotHiddenBull and priceHL and oscLL and plFound plot( plFound ? osc[lbR] : na, offset=-lbR, title="Hidden Bullish", linewidth=2, color=(hiddenBullCond ? hiddenBullColor : noneColor), transp=0 ) plotshape( hiddenBullCond ? osc[lbR] : na, offset=-lbR, title="Hidden Bullish Label", text=" H Bull ", style=shape.labelup, location=location.absolute, color=bullColor, textcolor=textColor, transp=0 ) longCondition=bullCond or hiddenBullCond //? osc[lbR] : na //hiddenBullCond strategy.entry(id="RSIDivLE", long=true, when=longCondition) //------------------------------------------------------------------------------ // Regular Bearish // Osc: Lower High oscLH = osc[lbR] < valuewhen(phFound, osc[lbR], 1) and _inRange(phFound[1]) // Price: Higher High priceHH = high[lbR] > valuewhen(phFound, high[lbR], 1) bearCond = plotBear and priceHH and oscLH and phFound plot( phFound ? osc[lbR] : na, offset=-lbR, title="Regular Bearish", linewidth=2, color=(bearCond ? bearColor : noneColor), transp=0 ) plotshape( bearCond ? osc[lbR] : na, offset=-lbR, title="Regular Bearish Label", text=" Bear ", style=shape.labeldown, location=location.absolute, color=bearColor, textcolor=textColor, transp=0 ) //------------------------------------------------------------------------------ // Hidden Bearish // Osc: Higher High oscHH = osc[lbR] > valuewhen(phFound, osc[lbR], 1) and _inRange(phFound[1]) // Price: Lower High priceLH = high[lbR] < valuewhen(phFound, high[lbR], 1) hiddenBearCond = plotHiddenBear and priceLH and oscHH and phFound plot( phFound ? osc[lbR] : na, offset=-lbR, title="Hidden Bearish", linewidth=2, color=(hiddenBearCond ? hiddenBearColor : noneColor), transp=0 ) plotshape( hiddenBearCond ? osc[lbR] : na, offset=-lbR, title="Hidden Bearish Label", text=" H Bear ", style=shape.labeldown, location=location.absolute, color=bearColor, textcolor=textColor, transp=0 ) longCloseCondition=crossover(osc,75) or bearCond strategy.close(id="RSIDivLE", when=longCloseCondition)