
Strategi ini adalah sistem perdagangan trend-tracking berdasarkan purata bergerak indeks pelbagai tempoh ((EMA) dan penunjuk yang agak kuat ((RSI)). Strategi ini membuat keputusan perdagangan dengan menilai trend EMA tiga kitaran 20, 50, 100 dalam kombinasi dengan tanda harga yang lebih tinggi dan RSI. Strategi ini digunakan terutamanya untuk pasaran trend, untuk meningkatkan ketepatan perdagangan dengan mengesahkan pelbagai petunjuk teknikal.
Logik teras strategi merangkumi bahagian penting berikut:
Ini adalah sistem strategi komposit yang menggabungkan trend tracking dan pembalikan momentum. Dengan penggunaan gabungan pelbagai petunjuk teknikal, ciri-ciri keuntungan risiko yang lebih baik dicapai sambil mengekalkan strategi yang mudah difahami. Kelebihan utama strategi adalah mekanisme pengesahan trend yang ketat dan sistem kawalan risiko yang baik, tetapi dalam aplikasi praktikal, perhatian perlu diberikan kepada pengoptimuman parameter dan kesesuaian dengan persekitaran pasaran.
/*backtest
start: 2024-02-18 00:00:00
end: 2025-02-17 00:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA Crossover + RSI Strategy", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=200)
// Calculate EMAs
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema100 = ta.ema(close, 100)
// Calculate RSI
rsiPeriod = 14
rsiValue = ta.rsi(close, rsiPeriod)
// Determine if each EMA is trending up (current value greater than the previous value)
ema20_trending_up = ema20 > ema20[1]
ema50_trending_up = ema50 > ema50[1]
ema100_trending_up = ema100 > ema100[1]
all_emas_trending_up = ema20_trending_up and ema50_trending_up and ema100_trending_up
// Buy condition:
// 1. Price crosses above the EMA20 from below (using ta.crossover)
// 2. All three EMAs are trending upward
buySignal = ta.crossover(close, ema20) and all_emas_trending_up
// Sell conditions:
// Sell if RSI is above 70 OR price crosses below the EMA20 from above (using ta.crossunder)
sellSignal = (rsiValue > 70) or ta.crossunder(close, ema20)
// Enter a long position if the buy condition is met
if (buySignal)
strategy.entry("Long", strategy.long)
// Exit the long position if either sell condition is met
if (sellSignal)
strategy.close("Long")
// Plot the EMAs on the chart for visualization
plot(ema20, color=color.blue, title="EMA 20")
plot(ema50, color=color.orange, title="EMA 50")
plot(ema100, color=color.green, title="EMA 100")
// (Optional) Plot the RSI and a horizontal line at 70 for reference
plot(rsiValue, title="RSI", color=color.purple)
hline(70, title="Overbought (70)", color=color.red)