이 전략은 기하급수적인 이동 평균 (EMA) 크로스오버를 기반으로 하는 트렌드 추적 시스템으로, 동적 위치 사이즈링과 리스크 관리를 통합합니다. 이 전략은 시장 트렌드를 식별하기 위해 빠르고 느린 EMA 크로스오버 신호를 사용하여 비율 위험 계산을 통해 트레이드 크기를 동적으로 조정하고 수익을 보호하기 위해 트레일링 스톱을 사용합니다.
핵심 논리는 서로 다른 기간 (디폴트 9 및 21) 을 가진 두 개의 EMA에 의존합니다. 빠른 EMA가 느린 EMA를 넘을 때 긴 엔트리 신호가 생성되며 빠른 EMA가 느린 EMA를 넘을 때 포지션은 종료됩니다. 각 거래 크기는 전체 계정 자본의 일정한 비율 위험 (디폴트 1%) 을 기반으로 동적으로 계산되며 리스크-어워드 비율 및 비율 기반 트레일링 스톱에 따라 수익률 수준이 설정됩니다.
이 전략은 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)