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

다중 지표 트렌드 동적 채널 및 이동 평균 거래 시스템과 함께 전략에 따라

저자:차오장, 날짜: 2024-12-12 15:58:57
태그:EMAATR

 Multi-Indicator Trend Following Strategy with Dynamic Channel and Moving Average Trading System

전반적인 설명

이 전략은 G 채널, 기하급수적 이동 평균 (EMA), 평균적 진격 (ATR) 을 결합한 다중 지표 거래 시스템이다. 이 전략은 역동적 지지/저항 수준과 트렌드 확인을 통해 거래 신호를 식별하며, ATR 기반의 스톱 로스 및 영리 수준을 사용하여 위험을 관리합니다. 이 시스템은 신뢰성과 위험 통제를 강조하며 견고한 거래 접근 방식을 추구하는 거래자에게 적합합니다.

전략 원칙

이 전략의 핵심 논리는 다음의 핵심 요소에 기반합니다. G-채널은 동적 지원 및 저항 수준을 계산하고 상부 및 하부 대역을 지속적으로 조정합니다. 2. EMA는 EMA에 대한 가격 위치에 의해 결정되는 전체 트렌드 방향을 확인합니다. 3. 입력 신호는 G-채널 브레이크오웃과 EMA 위치 확인을 기반으로 합니다. 4. 스톱 로스 및 테이크프로프트 레벨은 ATR 곱셈을 사용하여 설정되며, 스톱 로스에는 2x ATR, 테이크프로프트에는 4x ATR 5. 상태 추적 후속 복제 신호를 방지

전략적 장점

  1. 다단계 신호 확인 메커니즘은 거래 신뢰성을 향상시킵니다.
  2. 동적으로 조정된 채널 경계는 다른 시장 조건에 적응합니다
  3. 변동성 기반의 위험 관리는 더 나은 적응력을 제공합니다.
  4. 중복 신호를 피하는 것은 과도한 거래 위험을 줄여줍니다.
  5. 명확 한 시각적 인 구매/판매 표시기 분석 및 백테스팅을 촉진

전략 위험

  1. 다양한 시장에서 과도한 잘못된 파업 신호를 생성할 수 있습니다.
  2. 지연된 지표로서의 EMA는 출입 시기가 늦어질 수 있습니다.
  3. 고 변동성 기간 동안 정지에 대한 고정 ATR 곱자는 유연성이 부족할 수 있습니다.
  4. 지표 계산에 더 긴 역사 데이터가 필요합니다.
  5. 매개 변수 최적화는 과도한 부착으로 이어질 수 있습니다.

전략 최적화 방향

  1. 분산 신뢰성을 향상시키기 위해 부피 확인을 포함합니다.
  2. 다른 시장 변동성 상태에 적응하기 위해 동적 ATR 곱셈을 구현합니다.
  3. 불리한 조건에서 거래를 피하기 위해 시장 환경 필터를 추가합니다.
  4. 잘못된 신호를 더 많이 줄이기 위해 신호 필터링 논리를 최적화합니다.
  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)


관련

더 많은