La stratégie d'inversion de tendance Renko ATR est une approche de trading unique qui utilise les graphiques Renko en conjonction avec l'indicateur Average True Range (ATR) pour identifier les points d'inversion de tendance sur les marchés financiers.
La stratégie calcule d'abord la valeur de l'ATR sur une période définie et utilise cet ATR comme taille de brique pour le graphique Renko. De nouvelles briques Renko sont tirées lorsque les mouvements de prix dépassent un ATR. De cette façon, le graphique Renko peut s'adapter automatiquement à la volatilité du marché, avec des tailles de briques plus grandes pour une volatilité plus élevée et des tailles de briques plus petites pour des périodes de volatilité plus faibles.
Un signal d'achat est généré lorsque le prix d'ouverture du graphique Renko dépasse le prix de clôture. Inversement, un signal de vente est généré lorsque le prix d'ouverture dépasse le prix de clôture. Ces signaux marquent des points de renversement de tendance potentiels.
La stratégie définit dynamiquement les niveaux de stop-loss et de take-profit pour chaque transaction en pourcentage du prix d'ouverture de Renko, en fonction des paramètres d'entrée définis par l'utilisateur.
En calculant manuellement les prix d'ouverture et de fermeture, la repeinture est éliminée, ce qui rend les signaux plus précis et plus opportuns.
La taille de la brique basée sur l'ATR permet à la stratégie de s'adapter automatiquement aux différentes conditions de volatilité du marché.
Le mécanisme dynamique de fixation des niveaux de stop loss et de take profit permet un meilleur contrôle des risques basé sur la volatilité du marché.
Le graphique Renko filtre le bruit du marché et fournit une vue claire pour repérer les renversements de tendance.
Les utilisateurs doivent optimiser des paramètres tels que la période ATR, le pourcentage de stop loss et le pourcentage de profit pour différents environnements de marché.
Les événements d'actualité majeurs ou les communiqués de politique peuvent entraîner un glissement rapide au-delà de l'arrêt des pertes ou des niveaux de profit, entraînant des pertes importantes.
Dans certains cas, la tendance à l'inversion signalée peut ne pas se concrétiser, entraînant des transactions en perte.
Des délais plus longs peuvent être utilisés pour mesurer la direction de la tendance globale.
L'utilisation de l'élan, de la volatilité ou d'autres indicateurs en combinaison peut améliorer la qualité du signal et éviter les faux signaux.
Les ratios de prise de profit peuvent être ajustés dynamiquement en fonction de la volatilité du marché et de la distance entre le prix d'entrée et le prix courant.
La stratégie d'inversion de tendance Renko ATR utilise avec succès les graphiques Renko avec l'indicateur ATR pour repérer automatiquement les points d'inversion de tendance sur les marchés financiers. Les principaux avantages incluent l'élimination de la repeinture, l'adaptation automatique à la volatilité changeante et le stop loss / take profit dynamique. Cependant, les utilisateurs doivent se méfier des risques d'optimisation des paramètres, des risques d'événement et des risques d'inversion manquée.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy(title='[tradinghook] - Renko Trend Reversal Strategy', shorttitle='[tradinghook] - Renko TRS', overlay=true ,initial_capital = 100, commission_value = 0.05, default_qty_value = 5) // INPUTS renkoATRLength = input.int(10, minval=1, title='ATR Length') stopLossPct = input.float(3, title='Stop Loss Percentage', step=0.1) takeProfitPct = input.float(20, title='Take Profit Percentage', step=0.1) startDate = input(timestamp("01 July 2023 00:00"), title="Start Date") endDate = input(timestamp("31 Dec 2025 23:59"), title="End Date") enableShorts = input.bool(true, title="Enable Shorts") var float stopLossPrice = na var float takeProfitPrice = na atr = ta.atr(renkoATRLength) // thanks to https://www.tradingview.com/script/2vKhpfVH-Renko-XZ/ for manually calculating renkoClose and renkoOpen in order to remove repaint getRenkoClose() => p1 = 0.0 p1 := close > nz(p1[1]) + atr ? nz(p1[1]) + atr : close < nz(p1[1]) - atr ? nz(p1[1]) - atr : nz(p1[1]) p1 Renko3() => p3 = 0.0 p3 := open > nz(p3[1]) + atr ? nz(p3[1]) + atr : open < nz(p3[1]) - atr ? nz(p3[1]) - atr : nz(p3[1]) p3 getRenkoOpen() => open_v = 0.0 Br_2 = Renko3() open_v := Renko3() != Renko3()[1] ? Br_2[1] : nz(open_v[1]) open_v renkoOpen = getRenkoOpen() renkoClose = getRenkoClose() // COLORS colorGreen = #089981 colorRed = #F23645 bgTransparency = 95 bgColorRed = color.new(colorRed, bgTransparency) bgColorGreen = color.new(colorGreen, bgTransparency) lineColor = renkoClose < renkoOpen ? colorRed : colorGreen bgColor = renkoClose < renkoOpen ? bgColorRed : bgColorGreen // PLOTS plot(renkoOpen, title="Renko Open", style=plot.style_line, linewidth=2, color=lineColor) bgcolor(bgColor) // SIGNALS isWithinTimeRange = true buySignal = ta.crossunder(renkoOpen, renkoClose) and isWithinTimeRange sellSignal = ta.crossover(renkoOpen, renkoClose) and isWithinTimeRange and enableShorts if (buySignal) stopLossPrice := renkoOpen * (1 - stopLossPct / 100) takeProfitPrice := renkoOpen * (1 + takeProfitPct / 100) strategy.entry("Long", strategy.long) strategy.exit("ExitLong", "Long", stop = stopLossPrice, limit = takeProfitPrice, comment="SL: " + str.tostring(stopLossPrice) + ", TP: " + str.tostring(takeProfitPrice)) if (sellSignal) stopLossPrice := renkoOpen * (1 + stopLossPct / 100) takeProfitPrice := renkoOpen * (1 - takeProfitPct / 100) strategy.entry("Short", strategy.short) strategy.exit("ExitShort", "Short", stop = stopLossPrice, limit = takeProfitPrice, comment="SL: " + str.tostring(stopLossPrice) + ", TP: " + str.tostring(takeProfitPrice))