
이 전략은 지수 이동 평균 ((EMA) 의 교차에 기반한 트렌드 추적 시스템으로, 동적 포지션 관리와 위험 통제를 결합한다. 전략은 빠른 EMA와 느린 EMA의 교차 신호를 사용하여 시장의 흐름을 식별하며, 비율 위험 계산을 통해 거래 규모를 동적으로 조정하며, 이동 상실을 사용하여 수익을 보호한다.
이 전략의 핵심 논리는 두 개의 다른 주기 (기본 9과 21을 가정) 의 지수 이동 평균을 기반으로 합니다. 빠른 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)