Strategi ini adalah sistem pelacakan tren berbasis pada perpindahan rata-rata bergerak (EMA) indeks, yang menggabungkan manajemen posisi dinamis dan kontrol risiko. Strategi ini menggunakan sinyal silang EMA cepat dan lambat untuk mengidentifikasi tren pasar, sementara secara dinamis menyesuaikan ukuran perdagangan dengan perhitungan risiko persentase, dan menggunakan kerugian bergerak untuk melindungi keuntungan.
Logika inti dari strategi ini didasarkan pada dua siklus yang berbeda (default 9 dan 21). Sistem menghasilkan sinyal yang lebih banyak ketika EMA cepat naik melintasi EMA lambat; ketika EMA cepat melintasi EMA lambat ke bawah, sistem berdamai. Ukuran setiap transaksi didasarkan pada risiko tetap (default 1%) dari total dana akun, sementara stop loss dan persentase stop loss bergerak ditetapkan berdasarkan rasio pengembalian risiko.
Ini adalah sistem perdagangan yang komprehensif yang menggabungkan metode analisis teknis klasik dengan konsep manajemen risiko modern. Strategi untuk mengendalikan risiko melalui manajemen posisi dinamis dan stop loss bergerak, sementara menggunakan EMA untuk menangkap peluang tren silang. Meskipun ada beberapa keterbatasan yang inheren, stabilitas dan fleksibilitas strategi dapat ditingkatkan lebih lanjut melalui arah optimasi yang disarankan. Strategi ini sangat cocok untuk mengejar perdagangan tren jangka panjang yang dapat dikontrol risiko.
/*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)