Sumber daya yang dimuat... Pemuatan...

Strategi perdagangan yang disaring multi-indikator dengan Bollinger Bands dan Woodies CCI

Penulis:ChaoZhang, Tanggal: 2024-12-27 15:32:30
Tag:BBCCIMAOBVATRSMATPSL

img

Gambaran umum

Strategi ini adalah sistem perdagangan multi-indikator yang menggabungkan Bollinger Bands, Woodies CCI (Commodity Channel Index), Moving Averages (MA), dan On-Balance Volume (OBV).

Prinsip Strategi

Logika inti didasarkan pada elemen kunci berikut:

  1. Menggunakan dua Band Bollinger standar deviasi (1x dan 2x) untuk membangun saluran volatilitas harga
  2. Menggunakan indikator CCI 6 periode dan 14 periode sebagai filter sinyal, yang membutuhkan konfirmasi dari kedua periode
  3. Menggabungkan rata-rata bergerak 50 periode dan 200 periode untuk menentukan tren pasar
  4. Mengkonfirmasi tren volume melalui OBV rata 10 periode
  5. Menggunakan ATR 14 periode untuk tingkat stop loss dan take profit yang dinamis

Keuntungan Strategi

  1. Validasi silang beberapa indikator secara signifikan mengurangi sinyal palsu
  2. Kombinasi Bollinger Bands dan CCI memberikan penilaian volatilitas pasar yang akurat
  3. Sistem MA jangka panjang dan jangka pendek secara efektif menangkap tren utama
  4. OBV mengkonfirmasi dukungan volume, meningkatkan keandalan sinyal
  5. Pengaturan stop loss dan take profit yang dinamis beradaptasi dengan kondisi pasar yang berbeda
  6. Sinyal perdagangan yang jelas dengan pelaksanaan standar, cocok untuk pelaksanaan kuantitatif

Risiko Strategi

  1. Beberapa indikator dapat menyebabkan sinyal tertunda
  2. Stop-loss yang sering terjadi di pasar bervariatif
  3. Risiko pemasangan parameter yang berlebihan
  4. Stop-loss mungkin tidak cukup cepat dalam periode volatilitas Langkah-langkah mitigasi:
  • Sesuaikan parameter indikator secara dinamis untuk siklus pasar yang berbeda
  • Monitor penarikan untuk kontrol posisi
  • Validasi parameter reguler
  • Tetapkan batas kerugian maksimum

Arahan Optimasi

  1. Memperkenalkan indikator volatilitas untuk menyesuaikan posisi pada periode volatilitas tinggi
  2. Tambahkan penyaringan kekuatan tren untuk menghindari perdagangan pasar yang bervariasi
  3. Mengoptimalkan pemilihan periode CCI untuk peningkatan sensitivitas sinyal
  4. Meningkatkan manajemen laba/rugi dengan mengambil sebagian keuntungan
  5. Mengimplementasikan sistem peringatan volume anomali

Ringkasan

Ini adalah sistem perdagangan lengkap berdasarkan kombinasi indikator teknis yang meningkatkan akurasi perdagangan melalui konfirmasi sinyal ganda. Desain strategi masuk akal dengan kontrol risiko yang tepat dan memiliki nilai aplikasi praktis yang baik.


/*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=6
strategy(shorttitle="BB Debug + Woodies CCI Filter", title="Debug Buy/Sell Signals with Woodies CCI Filter", overlay=true)

// Input Parameters
length = input.int(20, minval=1, title="BB MA Length")
src = input.source(close, title="BB Source")
mult1 = input.float(1.0, minval=0.001, maxval=50, title="BB Multiplier 1 (Std Dev 1)")
mult2 = input.float(2.0, minval=0.001, maxval=50, title="BB Multiplier 2 (Std Dev 2)")
ma_length = input.int(50, minval=1, title="MA Length")
ma_long_length = input.int(200, minval=1, title="Long MA Length")
obv_smoothing = input.int(10, minval=1, title="OBV Smoothing Length")
atr_length = input.int(14, minval=1, title="ATR Length") // ATR Length for TP/SL

// Bollinger Bands
basis = ta.sma(src, length)
dev1 = mult1 * ta.stdev(src, length)
dev2 = mult2 * ta.stdev(src, length)

upper_1 = basis + dev1
lower_1 = basis - dev1
upper_2 = basis + dev2
lower_2 = basis - dev2

plot(basis, color=color.blue, title="BB MA")
p1 = plot(upper_1, color=color.new(color.green, 80), title="BB Upper 1")
p2 = plot(lower_1, color=color.new(color.green, 80), title="BB Lower 1")
p3 = plot(upper_2, color=color.new(color.red, 80), title="BB Upper 2")
p4 = plot(lower_2, color=color.new(color.red, 80), title="BB Lower 2")

fill(p1, p2, color=color.new(color.green, 90))
fill(p3, p4, color=color.new(color.red, 90))

// Moving Averages
ma_short = ta.sma(close, ma_length)
ma_long = ta.sma(close, ma_long_length)
plot(ma_short, color=color.orange, title="MA Short")
plot(ma_long, color=color.yellow, title="MA Long")

// OBV and Smoothing
obv = ta.cum(ta.change(close) > 0 ? volume : ta.change(close) < 0 ? -volume : 0)
obv_smooth = ta.sma(obv, obv_smoothing)

// Debugging: Buy/Sell Signals
debugBuy = ta.crossover(close, ma_short)
debugSell = ta.crossunder(close, ma_short)

// Woodies CCI
cciTurboLength = 6
cci14Length = 14
cciTurbo = ta.cci(src, cciTurboLength)
cci14 = ta.cci(src, cci14Length)

// Filter: Only allow trades when CCI confirms the signal
cciBuyFilter = cciTurbo > 0 and cci14 > 0
cciSellFilter = cciTurbo < 0 and cci14 < 0

finalBuySignal = debugBuy and cciBuyFilter
finalSellSignal = debugSell and cciSellFilter

// Plot Debug Buy/Sell Signals
plotshape(finalBuySignal, title="Filtered Buy", location=location.belowbar, color=color.lime, style=shape.triangleup, size=size.normal)
plotshape(finalSellSignal, title="Filtered Sell", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.normal)

// Change candle color based on filtered signals
barcolor(finalBuySignal ? color.lime : finalSellSignal ? color.red : na)

// ATR for Stop Loss and Take Profit
atr = ta.atr(atr_length)
tp_long = close + 2 * atr  // Take Profit for Long = 2x ATR
sl_long = close - 1 * atr  // Stop Loss for Long = 1x ATR
tp_short = close - 2 * atr // Take Profit for Short = 2x ATR
sl_short = close + 1 * atr // Stop Loss for Short = 1x ATR

// Strategy Execution
if (finalBuySignal)
    strategy.entry("Buy", strategy.long)
    strategy.exit("Take Profit/Stop Loss", "Buy", limit=tp_long, stop=sl_long)

if (finalSellSignal)
    strategy.entry("Sell", strategy.short)
    strategy.exit("Take Profit/Stop Loss", "Sell", limit=tp_short, stop=sl_short)

// Check for BTC/USDT pair
isBTCUSDT = syminfo.ticker == "BTCUSDT"

// Add alerts only for BTC/USDT
alertcondition(isBTCUSDT and finalBuySignal, title="BTCUSDT Buy Signal", message="Buy signal detected for BTCUSDT!")
alertcondition(isBTCUSDT and finalSellSignal, title="BTCUSDT Sell Signal", message="Sell signal detected for BTCUSDT!")

Berkaitan

Lebih banyak