이중 지수 이동 평균 추세 추종 및 단계적 종료 거래 전략

EMA MA TP SL PIP FOREX
생성 날짜: 2025-02-24 10:23:24 마지막으로 수정됨: 2025-02-24 10:23:24
복사: 6 클릭수: 323
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

이중 지수 이동 평균 추세 추종 및 단계적 종료 거래 전략 이중 지수 이동 평균 추세 추종 및 단계적 종료 거래 전략

개요

이 전략은 쌍 지수 이동 평균 ((EMA) 의 교차를 기반으로 한 트렌드 추적 시스템으로, 단계적 탈퇴 메커니즘을 결합하여 거래 수익을 최적화합니다. 이 전략은 9주기 및 21주기 EMA를 빠른 라인 및 느린 라인으로 사용하여, 시장 추세의 변화를 식별하기 위해 그들의 교차를 통해, 위험과 수익을 균형을 맞추기 위해 두 단계의 포지션 탈퇴 프로그램을 사용합니다.

전략 원칙

전략의 핵심 논리는 빠른 EMA ((9주기) 와 느린 EMA ((21주기) 의 교차 신호에 기반한다. 빠른 선에서 느린 선을 통과할 때, 시스템은 0.02로 다중 상위 포지션을 열고, 빠른 선에서 느린 선을 통과할 때, 시스템은 0.02로 빈 상위 포지션을 열는다. 포지션을 보유하는 동안, 전략은 두 단계의 퇴출 메커니즘을 사용합니다.

전략적 이점

  1. 트렌드 포착 능력: 두 개의 다른 기간의 EMA를 사용하여 전략은 시장 추세의 전환점을 효과적으로 식별 할 수 있습니다.
  2. 리스크 관리: 단계적 탈퇴 메커니즘은 수익의 일부를 고정시키면서도 추세가 계속되는 것을 완전히 놓치지 않습니다.
  3. 변수 설정은 합리적입니다: 9과 21주기의 EMA 조합은 시장에서 널리 검증되어 더 나은 신뢰성을 갖는다.
  4. 실행 논리 명확성: 전략의 출전 및 출전 규칙이 명확하여 실장 조작과 재검토 검증을 용이하게 한다.

전략적 위험

  1. 흔들림 시장의 위험: 수평 변동 시장에서, 빈번한 교차 신호는 연속적인 가짜 돌파 손실을 초래할 수 있다.
  2. 슬라이드 포인트 영향: 빠르게 변동하는 시장에서, 단계적 탈퇴의 실행은 슬라이드 포인트 영향을 받을 수 있다.
  3. 트렌드 반전 위험: 시장의 추세가 갑자기 반전되면, 전략은 고점에서 절반의 포지션을 청산한 후, 나머지 포지션은 더 큰 회수를 감수할 수 있다.

전략 최적화 방향

  1. 트렌드 필터를 도입합니다. 가짜 신호를 필터링하기 위해 긴 주기 평균선이나 트렌드 지표를 추가할 수 있습니다.
  2. 다이내믹 스톱로스 설정: 시장의 변동에 따라 스톱로스 위치를 동적으로 조정하여 위험 통제의 유연성을 높인다.
  3. 단계적 퇴출 비율을 최적화: 시장 환경에 따라 처음으로 퇴출 된 위치 비율과 수익 목표를 조정할 수 있습니다.
  4. 시간 필터를 추가: 거래 시간 창 제한을 추가하여 시장의 유동성이 낮은 시간에 거래하는 것을 피하십시오.

요약하다

이것은 고전적인 평선 교차 전략과 현대적인 포지션 관리를 결합한 완전한 거래 시스템이다. 전략은 단계적 퇴출 메커니즘을 통해 전통적인 평선 교차 전략의 수익성을 향상시키지만, 여전히 거래자가 특정 시장 환경과 자신의 위험 수용 능력에 따라 적절한 조정을 해야 한다. 미래 최적화 방향은 주로 신호 필터링과 동적 위험 관리 두 가지 측면에 집중한다.

전략 소스 코드
/*backtest
start: 2024-02-25 00:00:00
end: 2025-02-22 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"SOL_USDT"}]
*/

//@version=5
strategy("EMA Crossover with Partial Exit", overlay=true, default_qty_type=strategy.cash, default_qty_value=50)

// Define lot sizes
lotSize = 0.02   // Initial trade size
partialLot = 0.01 // Half quantity to close at 20 pips profit
profitTarget = 200 // 20 pips = 200 points (for Forex, adjust accordingly)

// Define EMA lengths
fastLength = 9
slowLength = 21

// Compute EMAs
fastEMA = ta.ema(close, fastLength)
slowEMA = ta.ema(close, slowLength)

// Define crossover conditions
longEntry = ta.crossover(fastEMA, slowEMA)   // Buy when 9 EMA crosses above 21 EMA
shortEntry = ta.crossunder(fastEMA, slowEMA) // Sell when 9 EMA crosses below 21 EMA

// Track trade state
var float entryPrice = na
var bool inTrade = false
var bool isLong = false

// Entry Logic (Enter with 0.02 lot size)
if (longEntry and not inTrade)
    strategy.entry("Long", strategy.long, qty=lotSize)
    entryPrice := close
    inTrade := true
    isLong := true

if (shortEntry and not inTrade)
    strategy.entry("Short", strategy.short, qty=lotSize)
    entryPrice := close
    inTrade := true
    isLong := false

// Partial Exit Logic (Close 0.01 lot after 20 pips profit)
if (isLong and inTrade and close >= entryPrice + profitTarget * syminfo.mintick)
    strategy.close("Long", qty=partialLot)

if (not isLong and inTrade and close <= entryPrice - profitTarget * syminfo.mintick)
    strategy.close("Short", qty=partialLot)

// Full Exit (Close remaining 0.01 lot at the next major crossover)
if (isLong and shortEntry)
    strategy.close("Long") // Close remaining position
    inTrade := false

if (not isLong and longEntry)
    strategy.close("Short") // Close remaining position
    inTrade := false

// Plot EMAs
plot(fastEMA, color=color.blue, title="9 EMA")
plot(slowEMA, color=color.red, title="21 EMA")

// Mark Buy/Sell Signals
plotshape(series=longEntry, location=location.belowbar, color=color.green, style=shape.labelup, title="BUY Signal")
plotshape(series=shortEntry, location=location.abovebar, color=color.red, style=shape.labeldown, title="SELL Signal")