
Strategi ini adalah sistem pengesanan trend yang berasaskan crossover rata-rata bergerak indeks (EMA) yang menggabungkan pengurusan kedudukan dan kawalan risiko yang dinamik. Strategi ini menggunakan isyarat silang EMA cepat dan lambat untuk mengenal pasti trend pasaran, sambil menyesuaikan skala perdagangan secara dinamik melalui peratusan risiko, dan menggunakan stop loss bergerak untuk melindungi keuntungan.
Logik teras strategi ini adalah berdasarkan purata bergerak indeks untuk dua kitaran yang berbeza (default 9 dan 21). Apabila EMA cepat naik melintasi EMA perlahan, sistem menghasilkan lebih banyak isyarat; apabila EMA cepat turun melintasi EMA perlahan, sistem menetap. Ukuran setiap perdagangan adalah berdasarkan peratusan risiko tetap kepada jumlah modal akaun (default 1%) yang dikira secara dinamik, sambil menetapkan tahap berhenti dan peratusan stop loss bergerak berdasarkan peratusan pulangan risiko.
Ini adalah sistem perdagangan yang lengkap yang menggabungkan kaedah analisis teknikal klasik dengan konsep pengurusan risiko moden. Strategi mengawal risiko dengan pengurusan kedudukan dinamik dan berhenti bergerak, sambil memanfaatkan peluang tren yang merentasi EMA. Walaupun terdapat beberapa batasan yang wujud, strategi dapat ditingkatkan lagi dengan kekuatan dan kesesuaian dengan arah pengoptimuman yang disyorkan.
/*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)