Ini adalah strategi trend-mengikuti berdasarkan crossover Exponential Moving Average (EMA) dan pengesahan Indeks Kekuatan Relatif (RSI). Strategi ini menggabungkan isyarat dari crossover EMA jangka pendek dan jangka panjang dengan pengesahan momentum RSI, sambil menggabungkan mekanisme stop-loss berasaskan peratusan. Ia bertujuan untuk menangkap pembalikan trend pasaran yang signifikan sambil mengekalkan kawalan risiko melalui kesan sinergi penunjuk teknikal.
Strategi ini menggunakan mekanisme penapisan penunjuk teknikal berganda: Pertama, ia mengenal pasti titik pembalikan trend yang berpotensi melalui persilangan EMA jangka pendek (9 tempoh) dan EMA jangka panjang (21 tempoh). Isyarat beli dihasilkan apabila EMA jangka pendek melintasi di atas EMA jangka panjang dan nilai RSI di atas tahap yang ditentukan. Isyarat jual berlaku apabila EMA jangka pendek melintasi di bawah EMA jangka panjang dan nilai RSI di bawah tahap yang ditentukan. Di samping itu, strategi ini menggabungkan mekanisme stop-loss berasaskan peratusan, menetapkan tahap stop-loss dinamik untuk setiap perdagangan untuk mengawal risiko penurunan dengan berkesan.
Strategi ini membina sistem perdagangan trend berikut yang lengkap melalui gabungan purata bergerak dan penunjuk momentum. Kelebihannya utama terletak pada mekanisme pengesahan isyarat yang boleh dipercayai dan sistem kawalan risiko yang komprehensif. Walaupun terdapat beberapa batasan yang melekat, prestasi keseluruhan strategi dapat ditingkatkan lagi melalui arah pengoptimuman yang dicadangkan. Ini adalah rangka kerja strategi yang kukuh yang sesuai untuk peniaga trend jangka menengah hingga panjang.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-25 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Simple Trend Following Strategy", overlay=true) // Inputs shortEMA = input.int(9, title="Short EMA Length", minval=1) longEMA = input.int(21, title="Long EMA Length", minval=1) confirmationRSI = input.int(50, title="RSI Confirmation Level", minval=1, maxval=100) stopLossPercent = input.float(2, title="Stop Loss Percentage", minval=0.1) // Stop Loss percentage // Calculations emaShort = ta.ema(close, shortEMA) emaLong = ta.ema(close, longEMA) rsiValue = ta.rsi(close, 14) // Buy and Sell Conditions buySignal = ta.crossover(emaShort, emaLong) and rsiValue > confirmationRSI sellSignal = ta.crossunder(emaShort, emaLong) and rsiValue < confirmationRSI // Plotting Signals plotshape(buySignal, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY") plotshape(sellSignal, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL") // Plotting EMAs plot(emaShort, title="Short EMA", color=color.yellow) plot(emaLong, title="Long EMA", color=color.purple) // Strategy logic strategy.entry("Buy", strategy.long, when=buySignal) strategy.entry("Sell", strategy.short, when=sellSignal) // Calculate stop loss price based on stopLossPercent longStopLossPrice = strategy.position_avg_price * (1 - stopLossPercent / 100) shortStopLossPrice = strategy.position_avg_price * (1 + stopLossPercent / 100) // Draw stop loss line for long positions if (strategy.position_size > 0) // For long positions line.new(x1=bar_index, y1=longStopLossPrice, x2=bar_index + 1, y2=longStopLossPrice, color=color.red, width=2, style=line.style_dashed) // Draw stop loss line for short positions if (strategy.position_size < 0) // For short positions line.new(x1=bar_index, y1=shortStopLossPrice, x2=bar_index + 1, y2=shortStopLossPrice, color=color.green, width=2, style=line.style_dashed)