
Strategi ini adalah sistem strategi campuran yang menggabungkan pengembalian nilai rata-rata dan pengesanan trend, terutamanya untuk menangkap peluang overbought dan oversold di pasaran melalui gabungan RSI, Brin Belt dan pelbagai indikator EMA. Strategi ini, berdasarkan pada indikator analisis teknikal tradisional, menambah penghakiman mengenai pengesahan trend dan rangsangan, meningkatkan ketepatan strategi dengan berkesan.
Strategi ini menggunakan mekanisme triple-verify untuk mengesahkan isyarat perdagangan. Pertama, dengan penunjuk RSI untuk mengenal pasti kawasan overbought dan oversold, isyarat awal dicetuskan apabila RSI berada di bawah 30 atau di atas 70. Kedua, menggunakan Bollinger Bands ((BB) sebagai rujukan kepada julat turun naik harga, dan isyarat lanjut disahkan apabila harga menembusi ke atas atau ke bawah.
Strategi ini menggunakan sinergi pelbagai petunjuk teknikal, sambil memastikan kestabilan, mempertimbangkan fleksibiliti strategi. Logik strategi jelas, cara pelaksanaan ringkas, dan nilai praktikal yang baik. Dengan pengoptimuman parameter yang munasabah dan pengurusan risiko, strategi ini dijangka dapat mengekalkan prestasi yang stabil dalam pelbagai keadaan pasaran.
/*backtest
start: 2024-01-01 00:00:00
end: 2024-11-11 00:00:00
period: 3h
basePeriod: 3h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("BTC Dominance Analysis Strategy (Improved)", overlay=true)
// Input Parameters
rsi_period = input(14, title="RSI Period")
bb_period = input(20, title="Bollinger Band Period")
bb_std_dev = input(2.0, title="Bollinger Std Dev")
ema_period = input(100, title="100 EMA Period")
ema_30_period = input(30, title="30 EMA Period")
ema_50_period = input(50, title="50 EMA Period")
// RSI Calculation
rsi_value = ta.rsi(close, rsi_period)
// Bollinger Bands Calculation
basis = ta.sma(close, bb_period)
dev = bb_std_dev * ta.stdev(close, bb_period)
upper_bb = basis + dev
lower_bb = basis - dev
// EMA Calculation
ema_100 = ta.ema(close, ema_period)
ema_30 = ta.ema(close, ema_30_period)
ema_50 = ta.ema(close, ema_50_period)
// Determine EMA trends
range_bound_ema = math.abs(ema_100 - ta.sma(ema_100, 10)) < ta.stdev(ema_100, 10)
uptrend_ema = ema_100 > ema_50
downtrend_ema = ema_100 < ema_50
// Long Condition: All 3 conditions must be met
// 1. RSI < 30
// 2. BTC Dominance < lower Bollinger Band
// 3. 100 EMA must be range-bound or in an uptrend (but NOT in a downtrend)
long_condition = (rsi_value < 30) and (close < lower_bb) and (range_bound_ema or uptrend_ema)
// Short Condition: All 3 conditions must be met
// 1. RSI > 70
// 2. BTC Dominance > upper Bollinger Band
// 3. 100 EMA must be range-bound or in a downtrend (but NOT in an uptrend)
short_condition = (rsi_value > 70) and (close > upper_bb) and (range_bound_ema or downtrend_ema)
// Plot Buy and Sell Signals for Debugging
plotshape(long_condition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(short_condition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// Execute Buy Trade
if (long_condition)
strategy.entry("Buy", strategy.long)
// Execute Sell Trade
if (short_condition)
strategy.entry("Sell", strategy.short)
// Plot Bollinger Bands and EMA
plot(upper_bb, color=color.red, title="Upper Bollinger Band")
plot(lower_bb, color=color.green, title="Lower Bollinger Band")
plot(ema_100, color=color.blue, title="100 EMA")
plot(ema_50, color=color.orange, title="50 EMA")
// plot(rsi_value, "RSI", color=color.purple)
// Display background color for Buy and Sell signals
bgcolor(long_condition ? color.new(color.green, 90) : na, title="Buy Background")
bgcolor(short_condition ? color.new(color.red, 90) : na, title="Sell Background")