Strategi ini adalah sistem mengikuti tren berdasarkan crossover Exponential Moving Average (EMA), menggabungkan ukuran posisi dinamis dan manajemen risiko.
Logika inti bergantung pada dua EMA dengan periode yang berbeda (default 9 dan 21). Sinyal masuk panjang dihasilkan ketika EMA cepat melintasi di atas EMA lambat, sementara posisi ditutup ketika EMA cepat melintasi di bawah EMA lambat.
Ini adalah sistem perdagangan lengkap yang menggabungkan metode analisis teknis klasik dengan konsep manajemen risiko modern. Strategi mengendalikan risiko melalui ukuran posisi dinamis dan trailing stop sambil menangkap peluang tren menggunakan crossover EMA. Meskipun ada beberapa keterbatasan yang melekat, arah optimasi yang disarankan dapat lebih meningkatkan ketahanan dan daya adaptasi strategi. Strategi ini sangat cocok untuk perdagangan tren jangka panjang dengan risiko terkontrol.
/*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)