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

동적 리스크 관리 기하급수적 이동 평균 크로스오버 전략

저자:차오장날짜: 2024-12-20 14:08:39
태그:EMARRSLTPATR

img

전반적인 설명

이 전략은 기하급수적인 이동 평균 (EMA) 크로스오버를 기반으로 하는 트렌드 추적 시스템으로, 동적 위치 사이즈링과 리스크 관리를 통합합니다. 이 전략은 시장 트렌드를 식별하기 위해 빠르고 느린 EMA 크로스오버 신호를 사용하여 비율 위험 계산을 통해 트레이드 크기를 동적으로 조정하고 수익을 보호하기 위해 트레일링 스톱을 사용합니다.

전략 원칙

핵심 논리는 서로 다른 기간 (디폴트 9 및 21) 을 가진 두 개의 EMA에 의존합니다. 빠른 EMA가 느린 EMA를 넘을 때 긴 엔트리 신호가 생성되며 빠른 EMA가 느린 EMA를 넘을 때 포지션은 종료됩니다. 각 거래 크기는 전체 계정 자본의 일정한 비율 위험 (디폴트 1%) 을 기반으로 동적으로 계산되며 리스크-어워드 비율 및 비율 기반 트레일링 스톱에 따라 수익률 수준이 설정됩니다.

전략적 장점

  1. 역동적인 포지션 크기는 거래당 일관된 위험을 보장하며 고정된 포지션 크기의 과도한 위험을 피합니다.
  2. 트레일링 스톱 메커니즘은 수익을 효과적으로 차단하고 트렌드가 역전될 때 포지션을 종료합니다.
  3. 리스크/이익 비율 설정은 각 거래에 대한 명확한 수익/손실 비율을 보장합니다.
  4. EMA 크로스오버 신호는 중장기 동향을 효과적으로 파악하여 잘못된 신호를 줄입니다.
  5. 완전 자동화된 시스템으로 감정적 간섭을 제거합니다.

전략 위험

  1. 다른 시장에서 빈번한 잘못된 크로스오버 신호를 생성하여 연속적인 손실을 초래할 수 있습니다.
  2. 트레일링 스톱은 매우 변동적인 시장에서 너무 일찍 발생하여 더 큰 트렌드를 놓칠 수 있습니다.
  3. 고정 비율의 위험 설정은 시장 변동성이 변할 때 유연성이 부족할 수 있습니다.
  4. 스톱 손실은 빠른 반전 시장에서 뛰어 넘을 수 있으며 예상보다 큰 손실을 초래할 수 있습니다.

최적화 방향

  1. 변동성 지표 (ATR 같은) 를 포함하여 스톱 로스 및 영업률을 동적으로 조정합니다.
  2. 트렌드 강도 필터, 예를 들어 RSI 또는 ADX를 추가하여 변화하는 시장에서 잘못된 신호를 줄이십시오.
  3. 시장 변동성에 기반한 동적 EMA 기간 조정 메커니즘을 개발합니다.
  4. 신호 신뢰성을 높이기 위해 부피 확인 지표를 포함합니다.
  5. 최근 손실에 기초한 역동적 리스크 조정 메커니즘을 구현합니다.

요약

이 전략은 EMA 크로스오버를 사용하여 트렌딩 기회를 포착하는 동안 동적 위치 사이징 및 트레일링 스톱을 통해 위험을 제어합니다. 몇 가지 고유 한 한계도 있지만 제안된 최적화 방향은 전략의 견고성과 적응력을 더욱 향상시킬 수 있습니다. 전략은 특히 통제된 위험과 함께 장기 트렌드 거래에 적합합니다.


/*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=5
strategy("Bitcoin Exponential Profit Strategy", overlay=true)

// User settings
fastLength = input.int(9, title="Fast EMA Length", minval=1)
slowLength = input.int(21, title="Slow EMA Length", minval=1)
riskPercent = input.float(1, title="Risk % Per Trade", step=0.1) / 100
rewardMultiplier = input.float(2, title="Reward Multiplier (R:R)", step=0.1)
trailOffsetPercent = input.float(0.5, title="Trailing Stop Offset %", step=0.1) / 100

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

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

// Account balance and dynamic position sizing
capital = strategy.equity
riskAmount = capital * riskPercent

// Define Stop Loss and Take Profit Levels
stopLossLevel = close * (1 - riskPercent)
takeProfitLevel = close * (1 + rewardMultiplier * riskPercent)

// Trailing stop offset
trailOffset = close * trailOffsetPercent

// Entry Condition: Bullish Crossover
if ta.crossover(fastEMA, slowEMA)
    positionSize = riskAmount / math.max(close - stopLossLevel, 0.01)  // Prevent division by zero
    strategy.entry("Long", strategy.long, qty=positionSize)
    strategy.exit("TakeProfit", from_entry="Long", stop=stopLossLevel, limit=takeProfitLevel, trail_offset=trailOffset)

// Exit Condition: Bearish Crossunder
if ta.crossunder(fastEMA, slowEMA)
    strategy.close("Long")

// Labels for Signals
if ta.crossover(fastEMA, slowEMA)
    label.new(bar_index, low, "BUY", color=color.green, textcolor=color.white, style=label.style_label_up)
if ta.crossunder(fastEMA, slowEMA)
    label.new(bar_index, high, "SELL", color=color.red, textcolor=color.white, style=label.style_label_down)



관련

더 많은