Strategi ini adalah sistem hibrida yang menggabungkan pengembalian rata-rata dan pendekatan trend berikut, memanfaatkan RSI, Bollinger Bands, dan beberapa indikator EMA untuk menangkap peluang pasar overbought dan oversold.
Strategi ini menggunakan mekanisme verifikasi tiga untuk sinyal perdagangan. Awalnya, ia mengidentifikasi kondisi overbought/oversold menggunakan RSI (di bawah 30 atau di atas 70). Kedua, ia mengkonfirmasi sinyal menggunakan breakout Bollinger Bands. Akhirnya, ia memvalidasi tren pasar menggunakan posisi dan volatilitas EMA relatif 100/50 hari. Perdagangan hanya dilaksanakan ketika ketiga kondisi sejajar. Strategi ini juga menggabungkan penilaian volatilitas EMA untuk identifikasi pasar yang terikat rentang.
Strategi ini mencapai keseimbangan antara ketahanan dan fleksibilitas melalui sinergi dari beberapa indikator teknis. Dengan logika yang jelas dan implementasi yang ringkas, strategi ini menunjukkan nilai praktis. Melalui optimasi parameter yang tepat dan manajemen risiko, strategi menunjukkan potensi untuk kinerja yang konsisten di berbagai kondisi pasar.
/*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")