Renko ATR Trendumkehrstrategie

Schriftsteller:ChaoZhang, Datum: 2024-02-01 14:30:24
Tags:

img

Übersicht

Die Renko ATR Trend Reversal Strategy ist ein einzigartiger Handelsansatz, der Renko-Charts in Verbindung mit dem Indikator Average True Range (ATR) verwendet, um Trendumkehrpunkte an den Finanzmärkten zu identifizieren.

Strategie Logik

Renko Brick Generation

Die Strategie berechnet zunächst den ATR-Wert über einen definierten Zeitraum und verwendet diesen ATR als Ziegelgröße für den Renko-Chart. Neue Renko-Ziegel werden gezogen, wenn die Kursbewegungen einen ATR übersteigen. Auf diese Weise kann sich das Renko-Chart automatisch an die Volatilität des Marktes anpassen, mit größeren Ziegelgrößen für höhere Volatilität und kleineren Ziegelgrößen für niedrigere Volatilitätsperioden.

Kauf- und Verkaufssignalgenerierung

Ein Kaufsignal wird erzeugt, wenn der offene Preis des Renko-Charts unter den Schlusskurs geht. Umgekehrt wird ein Verkaufssignal erzeugt, wenn der offene Preis über den Schlusskurs geht. Diese Signale markieren potenzielle Trendumkehrpunkte.

Verlust stoppen und Gewinn machen

Die Strategie setzt dynamisch Stop-Loss- und Take-Profit-Niveaus für jeden Trade als Prozentsatz des Renko-Open-Preises, basierend auf benutzerdefinierten Eingabeparametern. Dies steuert das Risiko und die Belohnung für jeden Trade.

Analyse der Vorteile

Wiederholte Farbgebung entfällt

Durch die manuelle Berechnung der Eröffnungs- und Schlusskurs wird das Nachmalen eliminiert, wodurch die Signale genauer und zeitnaher werden.

Selbstanpassung an die Volatilität

Die ATR-basierte Blockgröße ermöglicht es der Strategie, sich automatisch an unterschiedliche Marktvolatilitätsbedingungen anzupassen.

Dynamische Stop Loss und Take Profit

Der dynamische Mechanismus zur Festlegung von Stop-Loss- und Take-Profit-Levels ermöglicht eine bessere Risikokontrolle auf der Grundlage der Marktvolatilität.

Ausgeglichener Diagramm

Das Renko-Chart filtert Marktlärm aus und bietet ein klares Bild, um Trendumkehrungen zu erkennen.

Risikoanalyse

Parameteroptimierungsrisiken

Benutzer müssen Parameter wie ATR-Periode, Stop Loss % und Take Profit % für verschiedene Marktumgebungen optimieren.

Ereignisrisiken

Wichtige Ereignisse in der Nachrichtenbranche oder politische Veröffentlichungen können zu einem schnellen Abstieg über den Stop-Loss hinaus oder zu einem Gewinnrückgang führen, was zu großen Verlusten führt.

Gefahren einer fehlgeschlagenen Umkehr

In einigen Fällen kann das angekündigte Umkehrmuster sich nicht verwirklichen und zu Verlustgeschäften führen.

Möglichkeiten zur Verbesserung

Mit mehreren Zeitrahmen

Höhere Zeitrahmen können verwendet werden, um die Richtung des allgemeinen Trends zu messen.

Kombination anderer Indikatoren

Die Kombination von Momentum, Volatilität oder anderen Indikatoren kann die Signalqualität verbessern und falsche Signale vermeiden.

Dynamische Gewinnbereinigung

Die Gewinnquote kann dynamisch anhand der Marktvolatilität und des Abstands zwischen Einstiegspreis und aktuellem Preis angepasst werden.

Schlussfolgerung

Die Renko ATR Trend Reversal Strategie nutzt erfolgreich Renko-Charts mit ATR-Indikator, um automatisch Trendumkehrpunkte an den Finanzmärkten zu erkennen. Zu den wichtigsten Vorteilen gehören die Eliminierung von Ummalungen, die automatische Anpassung an sich ändernde Volatilität und dynamischer Stop-Loss / Take-Profit. Allerdings müssen sich die Benutzer vor Parameteroptimierungsrisiken, Ereignisrisiken und fehlgeschlagenen Umkehrrisiken hüten. Weitere Verbesserungen können die Verwendung mehrerer Zeitrahmen, die Kombination anderer Indikatoren und die dynamische Gewinnbereinigung umfassen.


/*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))


Mehr