리소스 로딩... 로딩...

G-트렌드 EMA ATR 지능형 거래 전략

저자:차오장, 날짜: 2024-06-14 15:35:15
태그:EMAATR

img

전반적인 설명

이 전략은 시장의 트렌드 방향을 식별하기 위해 G 채널 지표를 활용하고, 입출점을 최적화하기 위해 EMA 및 ATR 지표를 통합합니다. 주요 아이디어는: 가격이 G 채널의 상단 범위를 넘어서 EMA 아래에있을 때 길게 이동; 가격이 하단 범위를 넘어서 EMA 위에있을 때 짧게 이동합니다. 한편, ATR은 동적인 스톱 로스 및 영업 수준을 설정하는 데 사용됩니다. 스톱 로스가 ATR의 2 배이고 영업이 ATR의 4 배입니다.이 접근법은 위험을 엄격하게 제어하면서 트렌딩 시장에서 더 많은 이익을 얻을 수 있습니다.

전략 원칙

  1. G-채널 상부 및 하부 대역을 계산합니다: G-채널의 상부 및 하부 대역을 계산하기 위해 현재 폐쇄 가격과 이전 높은 가격과 낮은 가격을 사용합니다.
  2. 트렌드 방향을 결정: 상승 또는 하락 추세를 결정하기 위해 가격과 G 채널 대역 사이의 관계를 관찰합니다.
  3. EMA를 계산합니다: 지정된 기간에 대한 EMA 값을 계산합니다.
  4. ATR 계산: 지정된 기간에 대한 ATR 값을 계산합니다.
  5. 구매/판매 조건을 결정합니다. 가격이 상위 범위를 넘어서 EMA를 넘어서면 긴 포지션을 트리거합니다. 가격이 하위 범위를 넘어서면 짧은 포지션을 트리거합니다.
  6. 스톱 로스 및 취득을 설정합니다. 스톱 로스는 입상 가격입니다.ATR, 수익은 입시 가격 + 4입니다.ATR (롱), 스톱 로스는 입상 가격 + 2입니다ATR, 취득은 입시 가격입니다 - 4ATR (단기)
  7. 전략 실행: 구매/판매 조건이 충족되면 해당 엔트리 작업을 실행하고 그에 따라 스톱 로스 및 영업 취득을 설정합니다.

전략적 장점

  1. 트렌드 추적: 전략은 트렌드 시장에 적합한 G 채널을 사용하여 시장 트렌드를 효과적으로 포착합니다.
  2. 동적 스톱 로스 및 트레이프: ATR은 시장 변동에 더 잘 적응하여 동적으로 스톱 로스 및 트레이프 로프 수준을 조정하는 데 사용됩니다.
  3. 리스크 제어: 스톱 로스는 ATR의 2배로 설정되어 각 거래의 리스크를 엄격히 제어합니다.
  4. 간단하고 사용하기 쉬운 전략 논리는 명확하고 직설적이며 대부분의 투자자에게 적합합니다.

전략 위험

  1. 유동시장: 유동시장에서는 빈번한 거래 신호가 손실 증가로 이어질 수 있습니다.
  2. 매개 변수 최적화: 다른 거래 도구와 시간 프레임에는 다른 매개 변수가 필요할 수 있습니다. 맹목적으로 적용하면 위험을 초래할 수 있습니다.
  3. 블랙 스완 이벤트: 급격한 가격 변동이있는 극한 시장 조건에서 스톱 손실은 효과적으로 실행되지 않을 수 있습니다.

전략 최적화 방향

  1. 트렌드 필터링: 트렌드 필터링 조건 (MA 크로스오버, DMI 등) 을 추가하여 다양한 시장에서 거래를 줄이십시오.
  2. 매개 변수 최적화: 가장 좋은 매개 변수 조합을 찾기 위해 다른 도구와 시간 프레임에 대한 매개 변수를 최적화합니다.
  3. 포지션 관리: 자본 활용을 개선하기 위해 시장 변동성에 따라 포지션을 동적으로 조정합니다.
  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)


관련

더 많은