이중 이동 평균 추세 추종 및 위험 관리 거래 전략

EMA SMA
생성 날짜: 2025-02-21 09:36:33 마지막으로 수정됨: 2025-02-27 17:18:43
복사: 1 클릭수: 330
avatar of ianzeng123 ianzeng123
2
집중하다
319
수행원

이중 이동 평균 추세 추종 및 위험 관리 거래 전략 이중 이동 평균 추세 추종 및 위험 관리 거래 전략

개요

이 전략은 다중 주기적 트렌드 추적과 위험 관리를 결합한 자동화 된 거래 시스템이다. 5분과 1분 두 시간 주기에서 지수 이동 평균 (EMA) 을 통해 거래 기회를 주로 식별하고, 고정 비율의 중지 및 수익 설정을 적용하여 위험을 제어한다. 이 전략은 특히 짧은 라인 거래자에게 적합하며, 특히 트렌드 추적을 전문으로하는 거래자에게 적합하다.

전략 원칙

이 전략의 핵심 논리는 두 개의 시기를 기준으로 추세를 판단하는 것입니다.

  1. 5분 주기의 200주기 EMA를 주요 트렌드 필터로 사용하여, 가격이 이 평균선 위에 있을 때만 더 많이 할 수 있고, 이 평균선 아래에 있을 때만 더 많이 할 수 있다.
  2. 1분 주기에서 20주기 EMA를 입문 트리거로 사용한다. 가격이 상향으로 이 평균선을 통과할 때 다중 신호를 발생시키고, 하향으로 이 평균선을 통과할 때 공백 신호를 발생시킨다.
  3. 리스크 관리는 고정 비율 방식을 채택하고, 각 거래의 스톱 로즈는 입시 가격의 0.5%로 설정하고, 수익 목표는 스톱 로즈 거리의 2배로 설정하여, 1:2의 리스크 수익률을 형성한다.

전략적 이점

  1. 다주기 분석은 더 신뢰할 수 있는 트렌드 판단을 제공하며, 가짜 돌파구로 인한 위험을 낮춘다.
  2. 고정 비율의 위험 관리 방법을 사용하여 재원 관리를 더 규범화하고 체계화합니다.
  3. 1:2의 리스크/이익 비율을 설정하면 40%의 확률로도 수익을 낼 수 있습니다.
  4. 전략의 논리는 간단하고 명확하며, 이해하기 쉽고 실행이 쉽다.
  5. 시각화 된 거래 신호 표기는 재검토 및 검증을 용이하게 합니다.

전략적 위험

  1. 시장의 급격한 변동은 종종 잘못된 신호를 유발할 수 있습니다.
  2. 낮은 변동률의 기간에 0.5%의 막힘은 너무 밀도있을 수 있습니다.
  3. 평행선 교차에 의존하면 지연이 있을 수 있다.
  4. 높은 주파수 거래는 높은 거래 비용을 초래할 수 있습니다.
  5. 시장이 급격히 변하면 더 큰 반전이 일어날 수 있다.

전략 최적화 방향

  1. 변동률 지표를 도입하여 스톱 손실 거리를 동적으로 조정한다.
  2. 입시 품질을 높이기 위해 수요 확인 신호를 늘립니다.
  3. 추세 강도 지표인 ADX를 사용하여 약한 추세를 필터링하는 것을 고려할 수 있습니다.
  4. 수평 시장에서 RSI와 같은 진동 지표를 추가하여 신호를 필터링하십시오.
  5. 다양한 시장 특성에 따라 개발 동적의 위험 수익 비율을 설정한다.

요약하다

이것은 구조적이고, 논리적으로 명확한 트렌드 추적 전략이다. 다중 주기 분석과 엄격한 위험 관리를 결합하여, 전략은 자금을 보호하면서도 시장 추세를 효과적으로 포착할 수 있다. 일부 최적화 공간이 있지만, 전략의 기본 프레임 워크는 기본 전략으로 추가 개선과 맞춤화에 적합하다.

전략 소스 코드
/*backtest
start: 2025-01-21 00:00:00
end: 2025-02-20 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"DOGE_USDT"}]
*/

//@version=5
strategy("Scalping Strategy: 1-min Entries with 5-min 200 EMA Filter", overlay=true, initial_capital=10000, currency=currency.USD, default_qty_type=strategy.percent_of_equity, default_qty_value=5, calc_on_every_tick=true)

// --- Higher Timeframe Trend Filter ---
// Get the 200-period EMA on a 5-minute timeframe
ema200_5 = request.security(syminfo.tickerid, "5", ta.ema(close, 200), lookahead=barmerge.lookahead_on)
plot(ema200_5, color=color.purple, title="5-min 200 EMA")

// --- Local (1-Minute) Indicators ---
// On a 1-minute chart, calculate a 20-period EMA for entry triggers
ema20_1 = ta.ema(close, 20)
plot(ema20_1, color=color.yellow, title="1-min 20 EMA")

// --- Entry Conditions ---
// For long entries:
//   - The overall trend is bullish: current close > 5-min 200 EMA
//   - The 1-min candle closes and crosses above its 20 EMA
longCondition = (close > ema200_5) and ta.crossover(close, ema20_1)

// For short entries:
//   - Overall bearish trend: current close < 5-min 200 EMA
//   - 1-min candle crosses below its 20 EMA
shortCondition = (close < ema200_5) and ta.crossunder(close, ema20_1)

// --- Risk Management Settings ---
// For scalping, use a tight stop loss. Here we set risk at 0.5% of the entry price.
var float riskPerc = 0.005  // 0.5% risk per trade

// Declare global variables for stop loss and take profit so they can be used outside the if-blocks
var float longStop  = na
var float longTP    = na
var float shortStop = na
var float shortTP   = na

// --- Trade Execution --- 
if (longCondition)
    entryPrice = close
    // Stop loss for long: 0.5% below entry
    longStop := entryPrice * (1 - riskPerc)
    // Take profit: twice the risk distance (1:2 risk-reward)
    longTP   := entryPrice + 2 * (entryPrice - longStop)
    strategy.entry("Long", strategy.long)
    strategy.exit("Long Exit", from_entry="Long", stop=longStop, limit=longTP)

if (shortCondition)
    entryPrice = close
    // Stop loss for short: 0.5% above entry
    shortStop := entryPrice * (1 + riskPerc)
    // Take profit: twice the risk distance
    shortTP   := entryPrice - 2 * (shortStop - entryPrice)
    strategy.entry("Short", strategy.short)
    strategy.exit("Short Exit", from_entry="Short", stop=shortStop, limit=shortTP)

// --- Visual Debug Markers ---
// Plot a green triangle below bars when a long signal is generated
plotshape(longCondition, title="Long Signal", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.tiny)
// Plot a red triangle above bars when a short signal is generated
plotshape(shortCondition, title="Short Signal", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.tiny)