이 전략은 G 채널, 기하급수적 이동 평균 (EMA), 평균적 진격 (ATR) 을 결합한 다중 지표 거래 시스템이다. 이 전략은 역동적 지지/저항 수준과 트렌드 확인을 통해 거래 신호를 식별하며, ATR 기반의 스톱 로스 및 영리 수준을 사용하여 위험을 관리합니다. 이 시스템은 신뢰성과 위험 통제를 강조하며 견고한 거래 접근 방식을 추구하는 거래자에게 적합합니다.
이 전략의 핵심 논리는 다음의 핵심 요소에 기반합니다. G-채널은 동적 지원 및 저항 수준을 계산하고 상부 및 하부 대역을 지속적으로 조정합니다. 2. EMA는 EMA에 대한 가격 위치에 의해 결정되는 전체 트렌드 방향을 확인합니다. 3. 입력 신호는 G-채널 브레이크오웃과 EMA 위치 확인을 기반으로 합니다. 4. 스톱 로스 및 테이크프로프트 레벨은 ATR 곱셈을 사용하여 설정되며, 스톱 로스에는 2x ATR, 테이크프로프트에는 4x ATR 5. 상태 추적 후속 복제 신호를 방지
이 전략은 여러 성숙한 기술적 지표를 결합하여 완전한 거래 시스템을 구축합니다. 그것의 강점은 다단계 신호 확인 메커니즘과 변동성 기반 리스크 관리에 있습니다. 그러나 여전히 실용적인 응용 분야에서 특정 시장 특성에 따라 최적화를 요구합니다. 제안된 최적화 방향을 통해 전략의 안정성과 적응력이 더욱 향상 될 수 있습니다.
/*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)