Diese Strategie ist ein Multi-Indikator-Handelssystem, das G-Channel, Exponential Moving Average (EMA) und Average True Range (ATR) kombiniert. Es identifiziert Handelssignale durch dynamische Unterstützungs-/Widerstandsniveaus und Trendbestätigung, während es das Risiko mithilfe von ATR-basierten Stop-Loss- und Take-Profit-Niveaus verwaltet. Das System betont Zuverlässigkeit und Risikokontrolle und eignet sich für Handler, die einen robusten Handelsansatz suchen.
Die Kernlogik der Strategie beruht auf folgenden Schlüsselelementen: G-Channel berechnet dynamische Unterstützungs- und Widerstandsniveaus und passt die oberen und unteren Bands kontinuierlich an 2. Die EMA bestätigt die allgemeine Trendrichtung, wobei die Handelsrichtung durch die Preisposition im Verhältnis zur EMA bestimmt wird 3. Die Eintrittssignale basieren auf G-Kanal-Ausbrüchen und EMA-Positionsbestätigungen 4. Die Stop-Loss- und Take-Profit-Level werden mit ATR-Multiplikatoren festgelegt, wobei 2x ATR für Stop-Loss und 4x ATR für Take-Profit verwendet wird. 5. Die Zustandsverfolgung verhindert aufeinanderfolgende doppelte Signale
Die Strategie baut ein vollständiges Handelssystem auf, indem sie mehrere ausgereifte technische Indikatoren kombiniert. Ihre Stärke liegt im mehrstufigen Signalbestätigungsmechanismus und dem volatilitätsbasierten Risikomanagement, obwohl sie immer noch eine Optimierung auf der Grundlage spezifischer Marktmerkmale in praktischen Anwendungen erfordert. Durch die vorgeschlagenen Optimierungsrichtungen können die Stabilität und Anpassungsfähigkeit der Strategie weiter verbessert werden.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-10 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("G-Channel with EMA Strategy and ATR SL/TP", shorttitle="G-EMA-ATR", overlay=true) // Input parameters length = input.int(100, title="G-Channel Length") src = input.source(close, title="Source") ema_length = input.int(50, title="EMA Length") // EMA length atr_length = input.int(14, title="ATR Length") // ATR length // G-Channel calculation var float a = na var float b = na a := math.max(src, nz(a[1])) - nz(a[1] - b[1]) / length b := math.min(src, nz(b[1])) + nz(a[1] - b[1]) / length avg = (a + b) / 2 // G-Channel cross conditions crossup = b[1] < close[1] and b > close crossdn = a[1] < close[1] and a > close bullish = ta.barssince(crossdn) <= ta.barssince(crossup) c = bullish ? color.lime : color.red // EMA calculation ema_value = ta.ema(src, ema_length) // ATR calculation atr_value = ta.atr(atr_length) // Plot G-Channel average and Close price p1 = plot(avg, "G-Channel Average", color=c, linewidth=1, transp=90) p2 = plot(close, "Close Price", color=c, linewidth=1, transp=100) fill(p1, p2, color=c, transp=90) // Plot EMA plot(ema_value, color=color.blue, linewidth=2, title="EMA") // Buy and Sell conditions buy_condition = bullish and close < ema_value sell_condition = not bullish and close > ema_value // Track the last signal state var bool last_was_buy = false var bool last_was_sell = false // ATR-based SL and TP calculations long_sl = close - 2 * atr_value // 2 ATR below the entry for SL long_tp = close + 4 * atr_value // 4 ATR above the entry for TP short_sl = close + 2 * atr_value // 2 ATR above the entry for SL (short) short_tp = close - 4 * atr_value // 4 ATR below the entry for TP (short) // Generate Buy signal only if the last signal was not Buy if (buy_condition and not last_was_buy) strategy.entry("Buy", strategy.long) strategy.exit("Exit Buy", from_entry="Buy", stop=long_sl, limit=long_tp) last_was_buy := true last_was_sell := false // Generate Sell signal only if the last signal was not Sell if (sell_condition and not last_was_sell) strategy.entry("Sell", strategy.short) strategy.exit("Exit Sell", from_entry="Sell", stop=short_sl, limit=short_tp) last_was_sell := true last_was_buy := false // Plot shapes for Buy and Sell signals plotshape(series=buy_condition and not last_was_buy, location=location.belowbar, style=shape.labelup, color=color.lime, size=size.small, text="Buy", textcolor=color.white) plotshape(series=sell_condition and not last_was_sell, location=location.abovebar, style=shape.labeldown, color=color.red, size=size.small, text="Sell", textcolor=color.white)