이 전략은 시장의 트렌드 방향을 식별하기 위해 G 채널 지표를 활용하고, 입출점을 최적화하기 위해 EMA 및 ATR 지표를 통합합니다. 주요 아이디어는: 가격이 G 채널의 상단 범위를 넘어서 EMA 아래에있을 때 길게 이동; 가격이 하단 범위를 넘어서 EMA 위에있을 때 짧게 이동합니다. 한편, ATR은 동적인 스톱 로스 및 영업 수준을 설정하는 데 사용됩니다. 스톱 로스가 ATR의 2 배이고 영업이 ATR의 4 배입니다.이 접근법은 위험을 엄격하게 제어하면서 트렌딩 시장에서 더 많은 이익을 얻을 수 있습니다.
이 전략은 G-채널, EMA, ATR와 같은 지표를 사용하여 간단하고 효과적인 트렌드-추천 거래 시스템을 구축합니다. 트렌딩 시장에서 좋은 결과를 얻을 수 있지만, 범위 시장에서 평균적인 성능을 발휘합니다. 앞으로, 전략의 견고성과 수익성을 더욱 향상시키기 위해 트렌드 필터링, 매개 변수 최적화, 위치 관리, 전략 조합 등 측면에서 전략을 최적화 할 수 있습니다.
/*backtest start: 2024-05-01 00:00:00 end: 2024-05-31 23:59:59 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // Full credit to AlexGrover: https://www.tradingview.com/script/fIvlS64B-G-Channels-Efficient-Calculation-Of-Upper-Lower-Extremities/ strategy ("G-Channel Trend Detection with EMA Strategy and ATR", shorttitle="G-Trend EMA ATR Strategy", overlay=true) // Inputs for G-Channel length = input(100, title="G-Channel Length") src = input(close, title="Source") // G-Channel Calculation var float a = na var float b = na a := max(src, nz(a[1])) - (nz(a[1] - b[1]) / length) b := min(src, nz(b[1])) + (nz(a[1] - b[1]) / length) avg = (a + b) / 2 // G-Channel Signals crossup = b[1] < close[1] and b > close crossdn = a[1] < close[1] and a > close bullish = barssince(crossdn) <= barssince(crossup) c = bullish ? color.lime : color.red // Plot G-Channel Average p1 = plot(avg, "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) // Show Buy/Sell Labels showcross = input(true, title="Show Buy/Sell Labels") plotshape(showcross and not bullish and bullish[1] ? avg : na, location=location.absolute, style=shape.labeldown, color=color.red, size=size.tiny, text="Sell", textcolor=color.white, transp=0, offset=-1) plotshape(showcross and bullish and not bullish[1] ? avg : na, location=location.absolute, style=shape.labelup, color=color.lime, size=size.tiny, text="Buy", textcolor=color.white, transp=0, offset=-1) // Inputs for EMA emaLength = input(50, title="EMA Length") emaValue = ema(close, emaLength) // Plot EMA plot(emaValue, title="EMA", color=color.blue, linewidth=1) // ATR Calculation atrLength = input(14, title="ATR Length") atrValue = atr(atrLength) // Strategy Conditions buyCondition = bullish and close < emaValue sellCondition = not bullish and close > emaValue // Stop Loss and Take Profit Levels longStopLoss = close - 2 * atrValue longTakeProfit = close + 4 * atrValue shortStopLoss = close + 2 * atrValue shortTakeProfit = close - 4 * atrValue // Execute Strategy with ATR-based stop loss and take profit if (buyCondition) strategy.entry("Buy", strategy.long) strategy.exit("Sell", "Buy", stop=longStopLoss, limit=longTakeProfit) if (sellCondition) strategy.entry("Sell", strategy.short) strategy.exit("Cover", "Sell", stop=shortStopLoss, limit=shortTakeProfit) // Plot Buy/Sell Signals on the chart plotshape(series=buyCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", offset=-1) plotshape(series=sellCondition, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", offset=-1)