이중 이동 평균 추세 판단 및 변동성 손절 전략

EMA ATR SL CROSS
생성 날짜: 2025-02-19 16:44:55 마지막으로 수정됨: 2025-02-27 17:57:02
복사: 1 클릭수: 321
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

이중 이동 평균 추세 판단 및 변동성 손절 전략 이중 이동 평균 추세 판단 및 변동성 손절 전략

개요

이 전략은 지수 이동 평균 ((EMA) 과 실제 변동의 폭 ((ATR) 에 기반한 손실 메커니즘을 결합한 트렌드 추적 거래 시스템입니다. 전략은 9주기 및 21주기 EMA를 사용하여 시장의 흐름을 식별하고 ATR을 동적으로 사용하여 스톱 포지션을 조정하여 트렌드 추적과 위험 제어의 유기적인 결합을 구현합니다.

전략 원칙

전략의 핵심 논리는 두 가지 주요 부분을 포함합니다: 트렌드 판단과 위험 제어. 트렌드 판단의 측면에서, 빠른 EMA ((9주기) 와 느린 EMA ((21주기) 의 교차를 모니터링하여 시장의 흐름을 결정합니다. 빠른 라인을 통과하면 멀티 신호를 유발하고, 빠른 라인을 통과하면 빈 신호를 유발합니다. 위험 제어의 측면에서, 전략은 ATR 지표를 사용하여 동적 중지 손실 위치를 계산합니다. 구체적으로, 다중 상점 포지션의 손실 스톱 포지션은 출입 가격의 ATR 값을 1.5배 줄이고, 빈 상점 포지션의 손실 스톱 포지션은 출입 가격에 ATR 값을 1.5배 추가합니다.

전략적 이점

  1. 트렌드 식별 정확도: 두 개의 다른 주기의 EMA를 사용하여 시장 소음을 효과적으로 필터링하여 트렌드 판단의 정확도를 높일 수 있습니다.
  2. 리스크 제어 유연성: ATR 기반의 동적 중지 메커니즘은 시장의 변동성에 따라 적응할 수 있으며, 변동이 심해지면 더 느슨한 중지 공간을 제공하며, 변동이 약해지면 중지 위치를 강화합니다.
  3. 매개 변수 조정성: 전략의 핵심 매개 변수 (EMA 주기, ATR 주기, ATR 곱하기) 는 서로 다른 시장 특성 및 거래 주기에 따라 최적화 조정할 수 있습니다.
  4. 간단하고 이해하기 쉬운 구현: 전략 논리가 명확하고, 코드 구조가 간결하여 이해하기 쉽고 유지 관리하기 쉽다.

전략적 위험

  1. 흔들리는 시장 위험: 가로판 흔들리는 시장에서, 평행선 교차 신호가 자주 발생하여 과도한 거래와 연속적인 스톱으로 이어질 수 있다.
  2. 지연 위험: EMA 지표 자체는 지연성이 있으며, 시장이 급격하게 변할 때 반응하지 않을 수 있습니다.
  3. 스톱 로드 설정 위험: ATR 배수의 선택은 스톱 로드 공간과 수익 기회의 밸런스를 필요로 하며, 부적절한 설정은 조기 스톱 로드를 초래하거나 과도한 위험을 감수할 수 있다.

전략 최적화 방향

  1. 트렌드 강도 확인을 도입: 트렌드 강도 지표 ((ADX와 같은) 를 트레이드 필터 조건으로 추가할 수 있으며, 트렌드가 명확한 경우에만 입문한다.
  2. 동적으로 ATR 곱수를 조정: 시장의 변동 주기에 따라 ATR 곱수를 자동으로 조정할 수 있으며, 스톱로스 설정의 적응성을 향상시킵니다.
  3. 수익 목표를 높여라: ATR 기반의 동적 수익 목표를 설정할 수 있으며, 위험과 수익 비율의 동적 관리를 달성한다.
  4. 거래량 확인을 추가: 입시 신호 확인 시 거래량 분석을 추가하여 거래 신호의 신뢰성을 높인다.

요약하다

이 전략은 평평선 교차 판단 트렌드와 ATR 다이내믹 스톱로드를 결합하여 완전한 트렌드 추적 거래 시스템을 구축한다. 전략의 장점은 표준 객관성을 판단하고, 위험 제어 유연성을 판단하는 데 있지만, 흔들림 시장 위험과 신호 지연 문제에 대해서도 주의를 기울여야 한다. 트렌드 강도 확인, 스톱로드 설정을 최적화하는 등의 방법을 추가함으로써 전략에는 큰 개선 공간이 있다.

전략 소스 코드
/*backtest
start: 2024-02-20 00:00:00
end: 2024-05-31 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"TRB_USDT"}]
*/

//@version=5
strategy("EMA 9/21 + ATR SL Strategy", shorttitle="EMA+ATR", overlay=true)

// ===== Input Parameters ===== //
emaFastLen  = input.int(9,  "Fast EMA")
emaSlowLen  = input.int(21, "Slow EMA")
atrLen      = input.int(14, "ATR Length")
atrMult     = input.float(1.5, "ATR Multiplier")

// ===== EMA Calculation ===== //
emaFast = ta.ema(close, emaFastLen)
emaSlow = ta.ema(close, emaSlowLen)

// ===== ATR Calculation ===== //
atrValue = ta.atr(atrLen)

// ===== Conditions for Entry ===== //
longCondition  = ta.crossover(emaFast, emaSlow)   // Long when 9 EMA crosses above 21 EMA
shortCondition = ta.crossunder(emaFast, emaSlow)  // Short when 9 EMA crosses below 21 EMA

// ===== Entry Commands ===== //
if longCondition
    strategy.entry("Long", strategy.long)

if shortCondition
    strategy.entry("Short", strategy.short)

// ===== Set Stop-Loss Using ATR ===== //
//
// For LONG: stop-loss = entry price - (atrMult * ATR)
// For SHORT: stop-loss = entry price + (atrMult * ATR)
//
// Note: You can adjust the atrMult values based on market volatility
//
if strategy.position_size > 0
    // If holding LONG, define stop-loss below the entry price
    strategy.exit("Exit Long", "Long", stop = strategy.position_avg_price - atrMult * atrValue)

if strategy.position_size < 0
    // If holding SHORT, define stop-loss above the entry price
    strategy.exit("Exit Short", "Short", stop = strategy.position_avg_price + atrMult * atrValue)