이 전략은 사용자 지정 G 채널과 기하급수적인 이동 평균 (EMA) 을 기반으로하는 트렌드-추천 거래 시스템이다. G 채널은 상부 (a), 하부 (b), 중부 (avg) 라인으로 구성되어 있으며, 현재 및 역사적 가격의 동적 계산을 통해 채널 경계를 결정합니다. 이 전략은 EMA를 트렌드 필터로 결합하여 채널 라인 및 EMA에 대한 상대적 위치와 가격 크로스오버를 통해 거래 신호를 생성하여 시장 트렌드 반전 지점을 효과적으로 캡처합니다.
핵심 논리는 G-채널과 EMA 필터라는 두 가지 주요 구성 요소로 구성됩니다. G-채널 계산은 현재 가격과 역사적 데이터를 기반으로하며 적응 알고리즘을 통해 채널 폭을 동적으로 조정합니다. 상위 라인 (a) 은 현재 가격과 이전 상위 라인의 최대치를 채널 너비 및 길이 매개 변수에 의해 조정합니다. 하위 라인 (b) 은 최소 값에 대한 유사한 방법을 사용합니다. 중간 라인은 수학적 평균입니다. 거래 신호는 채널 라인과 가격 교차를 결합하여 발생합니다.
G-채널 및 EMA 트렌드 필터 거래 시스템은 채널 브레이크와 트렌드를 따르는 것을 결합한 완전한 거래 전략이다. G-채널의 역동적 특성과 EMA의 트렌드 확인 기능을 통해 전략은 거래 위험을 제어하는 동시에 시장 전환점을 효과적으로 캡처합니다. 특정 한계가 있지만 제안된 최적화 방향에 의해 전략의 전반적인 성능은 더 향상 될 수 있습니다. 이 전략은 트렌딩 시장에 적합하며 더 복잡한 거래 시스템을 구축하는 기초 프레임워크로 작용 할 수 있습니다.
/*backtest start: 2024-11-04 00:00:00 end: 2024-12-04 00:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("G-Channel with EMA Strategy", overlay=true) // G-Channel Indicator length = input.int(100, title="G-Channel Length") src = input(close, title="Source") var float a = na var float b = na a := math.max(src, nz(a[1])) - (nz(a[1]) - nz(b[1])) / length b := math.min(src, nz(b[1])) + (nz(a[1]) - nz(b[1])) / length avg = (a + b) / 2 // G-Channel buy/sell signals crossup = ta.crossover(close, b) crossdn = ta.crossunder(close, a) bullish = ta.barssince(crossdn) <= ta.barssince(crossup) // EMA Indicator emaLength = input.int(200, title="EMA Length") ema = ta.ema(close, emaLength) // Buy Condition: G-Channel gives a buy signal and price is below EMA buySignal = bullish and close < ema // Sell Condition: G-Channel gives a sell signal and price is above EMA sellSignal = not bullish and close > ema // Plotting the G-Channel and EMA plot(a, title="Upper", color=color.blue, linewidth=2, transp=100) plot(b, title="Lower", color=color.blue, linewidth=2, transp=100) plot(avg, title="Average", color=bullish ? color.lime : color.red, linewidth=1, transp=90) plot(ema, title="EMA", color=color.orange, linewidth=2) // Strategy Execution if (buySignal) strategy.entry("Buy", strategy.long) if (sellSignal) strategy.entry("Sell", strategy.short) // Plot Buy/Sell Signals plotshape(buySignal, location=location.belowbar, color=color.green, style=shape.labelup, text="Buy") plotshape(sellSignal, location=location.abovebar, color=color.red, style=shape.labeldown, text="Sell")