트렌드 필터링 다중 이동 평균 교차 ATR 위험 제어 양적 전략

SMA EMA ATR MA 趋势过滤 移动平均线 风险管理 止损 止盈
생성 날짜: 2025-03-26 13:42:55 마지막으로 수정됨: 2025-03-26 13:42:55
복사: 0 클릭수: 708
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

트렌드 필터링 다중 이동 평균 교차 ATR 위험 제어 양적 전략 트렌드 필터링 다중 이동 평균 교차 ATR 위험 제어 양적 전략

개요

이 전략은 주로 20주기 간단한 이동 평균 ((SMA) 과 89주기 지수 이동 평균 ((EMA) 의 교차를 사용하여 거래 신호를 생성하고 200주기 간단한 이동 평균을 트렌드 필터로 사용하여 거래 방향이 주 트렌드와 일치하는지 확인합니다. 또한, 전략은 평균 실제 파도 ((ATR) 를 사용하여 정동적 정지 및 정지 수준을 설정하여 각 거래의 리스크 수익률을 효과적으로 제어합니다.

전략 원칙

이 전략의 핵심 논리는 세 가지 이동 평균과 ATR 지표의 통합 적용에 기반합니다.

  1. 이동 평균은 다음과 같습니다.

    • 20주기 간단한 이동 평균 (SMA): 단기 가격 추세를 반영
    • 89 주기 지수 이동 평균 ((EMA): 중기 가격 추세를 반영
    • 200주기 간단한 이동 평균 ((SMA): 장기 트렌드를 판단하는 기준으로
  2. 입장 조건:

    • 다중 입구: 가격이 200주기 이동 평균 위에 있으며, 20주기 SMA는 89주기 EMA를 아래로 통과합니다.
    • 공백 입구: 가격은 200주기 이동 평균 아래로, 20주기 SMA는 89주기 EMA를 상향으로 가로질러
  3. 위험 관리 설정:

    • 14주기 ATR을 사용하여 시장 변동성을 계산한다.
    • 스톱 로드: 입시 가격 ± (ATR × 2), 다중 헤드 아래, 공백 헤드 위
    • 정지 위치: 입시 가격 ± (ATR × 3), 상단에는 다중 헤드, 하단에는 빈 헤드
    • 리스크와 수익의 비율은 1:1.5로 고정되어 있습니다.

전략은 차트에 진입 신호를 표시하고 진입 가격, 중단 및 중단 수준을 포함하는 태그를 표시하여 거래자가 거래 세부 사항을 직관적으로 이해할 수 있도록합니다.

전략적 이점

  1. 다중 트렌드 확인 메커니즘: 세 개의 다른 주기 이동 평균을 통해, 전략은 단기, 중기 및 장기 시장 추세를 종합적으로 분석하여 거짓 신호의 위험을 크게 줄일 수 있습니다.

  2. 전진 거래 논리: 200주기 이동 평균은 트렌드 필터로, 주 트렌드 방향에서만 거래하도록 보장하고, 역동 작업을 피하고, 승률을 높인다.

  3. 다이내믹 리스크 관리: ATR 기반의 중지 및 중지 설정으로, 실제 시장의 변동성에 따라 리스크 제어 매개 변수를 자동으로 조정할 수 있으며, 다양한 변동 환경에서 전략의 적응성을 유지할 수 있습니다.

  4. 고정된 리스크/이익 비율: 스톱/스트롭 비율이 2:3로 고정되어, 각 거래의 예상 수익이 예상 위험보다 크며, 장기적으로 자금 성장에 유리하다.

  5. 시각화 거래 신호: 전략은 차트에 명확하게 입력 포인트, 중지 포인트, 중지 포인트를 표시하여 거래 의사 결정 과정을 더 직관적이고 편리하게 만듭니다.

  6. 완전 자동화 실행: 전략 논리가 명확하고, 프로그래밍하기 쉬운, 자동화 거래 시스템 배포에 적합하며, 감정 방해와 인위적인 조작 오류를 줄인다.

전략적 위험

  1. 흔들림 시장의 부실성: 명백한 추세가 없는 가로 수평 흔들림 시장에서, 이동 평균의 교차는 연속적인 스톱 손실로 이어지는 빈번한 가짜 신호를 생성할 수 있다.

  2. 지연성 문제: 이동 평균을 기반으로 한 모든 전략에는 신호 지연 문제가 있습니다. 트렌드의 초기에는 최적의 입구 지점을 놓칠 수 있습니다. 또는 트렌드가 역전될 때 충분히 빠르게 반응 할 수 없습니다.

  3. 고정 배수 위험 제어 제약: ATR이 시장의 변동성을 반영 할 수 있지만, 고정 2 배 ATR의 정지는 일부 극단적 인 상황에서, 특히 폭파 상황에서 큰 손실을 피하기에는 충분하지 않을 수 있습니다.

  4. 매개 변수 최적화 곤경: 전략은 여러 매개 변수 (예를 들어 20, 89, 200 주기와 ATR 배수) 를 포함하고, 다른 시장과 시간 프레임에 따라 다른 매개 변수 조합이 필요할 수 있으며, 과도한 적합성의 위험이 있습니다.

  5. 트렌드 필터 지연: 200주기 이동 평균은 매우 느리게 반응하여 트렌드 전환 초기에는 잘못된 판단, 놓친 거래 기회 또는 잘못된 신호를 유발할 수 있습니다.

이러한 위험들에 대해 다음과 같은 해결책이 고려될 수 있습니다.

  • 시장환경 식별기관을 강화하고, 불안정한 시장에서 거래를 줄이거나 중지합니다.
  • 다른 기술 지표를 도입하여 확인 신호로 입력 정확도를 높여줍니다.
  • 변동 가능한 ATR 배수를 사용하거나 절대 최대 손실 제한을 설정하는 것이 좋습니다.
  • 다양한 시장 조건에 따라 자동으로 최적화 된 매개 변수 조정 메커니즘을 도입합니다.

전략 최적화 방향

  1. 시장 환경 적응 메커니즘: 변동률 지표 또는 트렌드 강도 지표 (ADX와 같은) 를 도입하여 다양한 시장 환경에서 전략 매개 변수를 자동으로 조정하거나 거래를 중단합니다. 이것은 전략이 흔들리는 시장에서 좋지 않은 문제를 해결할 수 있습니다.

  2. 입력 신호 최적화: 추가 확인 지표, 예를 들어 RSI, MACD 또는 거래량 지표가 추가되는 것을 고려할 수 있으며, 여러 지표가 공동으로 확인 된 경우에만 입력하여 신호 품질을 향상시킬 수 있습니다.

  3. 동적 위험 관리: 시장의 변동성과 역사적인 성과를 기반으로, 적응된 중지 및 중지 배수를 달성하고, 높은 변동성 시장에서 중지 거리를 늘리고, 낮은 변동성 시장에서 중지 거리를 줄인다.

  4. 부분 중지 메커니즘: 분기 중지 논리를 도입하여 특정 수익 목표가 달성되면 손실을 비용 지점 또는 분기 평정 포지션으로 이동하여 수익의 일부를 잠금하고 동시에 추세를 추적 할 수 있습니다.

  5. 시간 필터: 거래 시간 필터를 추가하여 주요 경제 데이터 발표 또는 특정 저 유동성 시기를 피하고 시장의 비정상적인 변동으로 인한 위험을 줄입니다.

  6. 자금 관리 최적화: 전략의 역사적인 재검토 결과와 현재 시장 조건에 따라, 거래 당 포지션 크기를 동적으로 조정하여, 유리한 조건에서 위험 을 증가시키고, 불리한 조건에서 위험 을 감소시킨다.

  7. 변수 자체 최적화: 롤러 피드백에 기반한 변수 자동 최적화 메커니즘을 구현하고, 최근 시장 데이터에 따라 정기적으로 이동 평균 주기 및 ATR 배수를 조정하여 전략이 변화하는 시장 환경에 지속적으로 적응하도록합니다.

이러한 최적화 방향의 핵심 목표는 전략의 적응성과 안정성을 강화하고, 고정된 매개 변수에 대한 의존도를 줄이고, 다양한 시장 환경에서 성능의 일관성을 향상시키는 것입니다.

요약하다

트렌드 필터 다평선 교차 ATR 풍력 제어 수량 전략은 기술 분석의 전통적인 지혜와 현대적 위험 관리 개념을 결합한 거래 시스템입니다. 20/89/200 트리플 이동 평균의 조합을 통해 전략은 시장의 추세를 효과적으로 식별하고 순진 거래 신호를 생성 할 수 있습니다. ATR 기반의 동적 위험 제어 메커니즘은 각 거래가 합리적인 위험 수익 특성을 갖도록 보장합니다.

이 전략의 가장 큰 장점은 체계적이고 규율적이며, 명확한 규칙으로 거래의 감정적 인 요소를 제거하고, 간결한 논리적 설계로 이해하기 쉽고 실행할 수 있습니다. 그러나, 전략은 흔들림 시장의 부실성과 신호 지연과 같은 고유 한 결점도 있습니다. 실제 적용에서 거래자는 경계해야합니다.

시장 환경 인식, 여러 확인 신호 및 동적 위험 관리와 같은 최적화 조치를 도입함으로써, 이 전략은 핵심 논리를 간결하게 유지하면서 더 높은 안정성과 적응력을 달성 할 것으로 예상됩니다. 개인 거래자 또는 기관 투자자는이 전략을 전체 거래 시스템을 구축하는 기본 프레임 워크로 사용할 수 있으며 자신의 요구와 위험 선호도에 따라 개인 맞춤 조정 할 수 있습니다.

결국, 모든 거래 전략의 성공은 엄격한 실행 훈련과 지속적인 최적화 개선에 달려 있습니다. 오늘날, 변화하는 시장 환경에서, 전략에 대한 모니터링과 조정을 유지하는 것이 완벽 한 파라미터를 맹목적으로 추구하는 것보다 더 중요합니다.

전략 소스 코드
/*backtest
start: 2024-03-26 00:00:00
end: 2025-03-25 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("EMA Cross Strategy (20MA & 89EMA with 200MA Filter)", overlay=true, initial_capital=10000, currency=currency.USD)

// 1. Moving Average Calculation
ma20  = ta.sma(close, 20)
ema89 = ta.ema(close, 89)
ma200 = ta.sma(close, 200)

// 2. Plot Moving Averages
plot(ma20, title="20MA", color=color.orange)
plot(ema89, title="89EMA", color=color.red)
plot(ma200, title="200MA", color=color.blue)

// 3. ATR and Multipliers
atrValue = ta.atr(14)
stopLossMultiplier  = 2.0   // Stop Loss: ATR × 2
takeProfitMultiplier = 3.0   // Take Profit: ATR × 3

// 4. Entry Signal Conditions
// Long Signal: Price is above the 200MA and 20MA crosses above 89EMA
longSignal  = (close > ma200) and (strategy.position_size == 0) and ta.crossover(ma20, ema89)
// Short Signal: Price is below the 200MA and 20MA crosses below 89EMA
shortSignal = (close < ma200) and (strategy.position_size == 0) and ta.crossunder(ma20, ema89)

// Plot Entry Signals (Circles for Reference)
plotshape(longSignal, title="Long Signal", style=shape.circle, location=location.belowbar, color=color.green, size=size.normal)
plotshape(shortSignal, title="Short Signal", style=shape.circle, location=location.abovebar, color=color.red, size=size.normal)

// 5. Position Entry and SL/TP Setup (Fixed ATR at Entry)
if longSignal
    entryPrice = close
    lockedATR  = atrValue
    longStopPrice = entryPrice - lockedATR * stopLossMultiplier
    longTakeProfitPrice = entryPrice + lockedATR * takeProfitMultiplier
    strategy.entry("Long", strategy.long)
    strategy.exit("Long_Exit", "Long", stop=longStopPrice, limit=longTakeProfitPrice)

if shortSignal
    entryPrice = close
    lockedATR  = atrValue
    shortStopPrice = entryPrice + lockedATR * stopLossMultiplier
    shortTakeProfitPrice = entryPrice - lockedATR * takeProfitMultiplier
    strategy.entry("Short", strategy.short)
    strategy.exit("Short_Exit", "Short", stop=shortStopPrice, limit=shortTakeProfitPrice)