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

ATR 기반 리스크 관리와 함께 트렌드를 따르는 다중 EMA 스윙 거래 전략

저자:차오장, 날짜: 2024-12-20 17:06:20
태그:EMAATR

img

전반적인 설명

이 전략은 여러 가지 기하급수적인 이동 평균 (EMA) 및 평균 진정한 범위 (ATR) 를 기반으로 한 트렌드-추천 거래 시스템입니다. 이 접근법은 동적 리스크 관리 및 수익 타겟팅을 위해 ATR과 함께 세 개의 EMA (20, 50, 100 기간) 을 사용합니다. 이 접근법은 동적 리스크 통제를 유지하면서 체계적인 거래를 보장합니다.

전략 원칙

핵심 논리는 가격과 여러 EMA 사이의 상호 작용에 기반합니다.

  1. 진입 신호는 20주기 EMA와 50주기 EMA에 의해 필터링된 가격 크로스오버에 기반합니다.
  2. 긴 진입 조건: 20 EMA를 넘고 50 EMA를 넘습니다.
  3. 단기 진입 조건: 20 EMA 아래로 넘어가는 가격과 50 EMA 아래에 있는 가격
  4. 스톱 로스: 시장 변동에 적응하기 위해 14주기 ATR을 사용하여 동적으로 계산
  5. 수익 목표: 1.5의 위험/이익 비율을 사용하며, 수익 목표값을 스톱-러스 거리의 1.5배로 설정합니다.

전략적 장점

  1. 여러 시간 프레임 검증: 잘못된 신호를 줄이기 위해 20/50/100 EMA를 사용합니다.
  2. 역동적 위험 관리: ATR 기반의 중지는 시장에 적응하는 위험 통제를 제공합니다.
  3. 명확한 위험/이익 비율: 고정된 1.5 R/R 설정은 장기적인 수익성을 촉진합니다.
  4. 트렌드 추적과 스윙 트레이딩을 결합합니다. 주요 트렌드와 단기 기회를 모두 포착합니다.
  5. 시각화 된 거래 신호: 더 나은 이해와 실행을 위해 명확한 그래픽 인터페이스를 제공합니다.

전략 위험

  1. 고장난 시장 위험: 통합 중 빈번한 잘못된 파업 신호를 발생시킬 수 있습니다.
  2. 미끄러짐 위험: 급격한 시장 움직임 중 실제 실행 가격은 신호 가격과 다를 수 있습니다.
  3. 트렌드 역전 위험: 갑작스러운 트렌드 역전으로 인해 상당한 손실이 발생할 수 있습니다.
  4. 매개 변수 최적화 위험: 과도한 최적화는 실전에서의 낮은 성능으로 이어질 수 있습니다.

최적화 방향

  1. 부피 지표를 포함합니다. 부피를 사용하여 가격 파업의 유효성을 확인합니다.
  2. 트렌드 강도 필터를 추가합니다. 입시 품질을 향상시키기 위해 ADX 또는 유사한 지표를 고려하십시오.
  3. 스톱 로스 방법을 최적화: 더 나은 이익 보호를 위해 후속 스톱을 구현하는 것을 고려하십시오.
  4. 시장 환경 분류: 다른 시장 조건에 따라 매개 변수를 조정
  5. 변동성 필터를 추가합니다: 과도한 시장 변동성 중 거래를 중지합니다.

요약

이 전략은 여러 EMA와 ATR 기반의 동적 위험 통제를 결합하여 트렌드 따라와 스윙 거래 특징을 모두 갖춘 거래 시스템을 만듭니다. 이 전략의 장점은 체계적인 접근과 통제 가능한 위험에 있지만 실제 적용은 실제 조건에 따라 시장 적응력과 특정 최적화에주의를 기울여야합니다. 적절한 매개 변수 설정과 엄격한 위험 통제를 통해 전략은 대부분의 시장 환경에서 안정적인 거래 결과를 얻을 수 있습니다.


/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("EMA Swing Strategy with ATR", overlay=true)

// Inputs
emaShort = input.int(20, "Short EMA")
emaMid = input.int(50, "Mid EMA")
emaLong = input.int(100, "Long EMA")
rrRatio = input.float(1.5, "Risk-Reward Ratio")
contracts = input.int(5, "Number of Contracts")

// Calculations
ema20 = ta.ema(close, emaShort)
ema50 = ta.ema(close, emaMid)
ema100 = ta.ema(close, emaLong)

atr = ta.atr(14)

// Conditions
longCondition = ta.crossover(close, ema20) and close > ema50
shortCondition = ta.crossunder(close, ema20) and close < ema50

// Variables for trades
var float entryPrice = na
var float stopLoss = na
var float takeProfit = na

// Long Trades
if (longCondition)
    entryPrice := close
    stopLoss := close - atr
    takeProfit := close + atr * rrRatio
    strategy.entry("Long", strategy.long, contracts)
    strategy.exit("Exit Long", from_entry="Long", stop=stopLoss, limit=takeProfit)

// Short Trades
if (shortCondition)
    entryPrice := close
    stopLoss := close + atr
    takeProfit := close - atr * rrRatio
    strategy.entry("Short", strategy.short, contracts)
    strategy.exit("Exit Short", from_entry="Short", stop=stopLoss, limit=takeProfit)

// Plot EMAs
plot(ema20, color=color.green, title="EMA 20")
plot(ema50, color=color.red, title="EMA 50")
plot(ema100, color=color.white, title="EMA 100")

// Visualization for Entries
plotshape(series=longCondition, style=shape.labelup, color=color.green, location=location.belowbar, title="Long Entry")
plotshape(series=shortCondition, style=shape.labeldown, color=color.red, location=location.abovebar, title="Short Entry")

관련

더 많은