Strategi ini adalah sistem mengikuti trend berdasarkan crossover Exponential Moving Average (EMA), menggabungkan ukuran kedudukan dinamik dan pengurusan risiko. Ia menggunakan isyarat silang EMA yang cepat dan perlahan untuk mengenal pasti trend pasaran sambil menyesuaikan saiz perdagangan secara dinamik melalui pengiraan risiko peratusan dan menggunakan penangguhan untuk melindungi keuntungan.
Logik teras bergantung pada dua EMA dengan tempoh yang berbeza (default 9 dan 21). Isyarat masuk panjang dihasilkan apabila EMA cepat melintasi di atas EMA perlahan, sementara kedudukan ditutup apabila EMA cepat melintasi di bawah EMA perlahan. Setiap saiz perdagangan dikira secara dinamik berdasarkan risiko peratusan tetap (default 1%) daripada jumlah ekuiti akaun, dengan tahap mengambil keuntungan ditetapkan mengikut nisbah risiko-balasan dan peratusan berpangkalan di belakang berhenti.
Ini adalah sistem dagangan lengkap yang menggabungkan kaedah analisis teknikal klasik dengan konsep pengurusan risiko moden. Strategi ini mengawal risiko melalui pengukuran kedudukan dinamik dan hentian jejak sambil menangkap peluang trend menggunakan persimpangan EMA. Walaupun terdapat beberapa batasan yang melekat, arah pengoptimuman yang dicadangkan dapat meningkatkan lagi kekuatan dan daya adaptasi strategi. Strategi ini sangat sesuai untuk perdagangan trend jangka panjang dengan risiko terkawal.
/*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)