Bollinger Bands digabungkan dengan penunjuk berbilang Woody CCI untuk menapis strategi isyarat dagangan

BB CCI MA OBV ATR SMA TP SL
Tarikh penciptaan: 2024-12-27 15:32:30 Akhirnya diubah suai: 2024-12-27 15:32:30
Salin: 0 Bilangan klik: 416
1
fokus pada
1617
Pengikut

Bollinger Bands digabungkan dengan penunjuk berbilang Woody CCI untuk menapis strategi isyarat dagangan

Gambaran keseluruhan

Strategi ini ialah sistem perdagangan berbilang penunjuk yang menggabungkan Bollinger Bands, Woodies CCI, Moving Averages (MA) dan On Balance Volume (OBV). Strategi menggunakan Bollinger Bands untuk menyediakan julat turun naik pasaran, menggunakan penunjuk CCI untuk menapis isyarat dagangan, dan kemudian menggabungkan sistem purata bergerak dan pengesahan volum dagangan untuk berdagang apabila arah aliran pasaran jelas. Pada masa yang sama, gunakan ATR untuk menetapkan kedudukan ambil untung dan henti rugi secara dinamik untuk mengawal risiko dengan berkesan.

Prinsip Strategi

Logik teras strategi adalah berdasarkan elemen utama berikut:

  1. Gunakan dua jalur Bollinger sisihan piawai (1x dan 2x) untuk membina saluran turun naik harga dan sediakan rujukan untuk julat turun naik pasaran
  2. Menggunakan penunjuk CCI 6 tempoh dan 14 tempoh sebagai penapis isyarat memerlukan CCI kedua-dua tempoh untuk mengesahkan ke arah yang sama
  3. Gabungkan purata bergerak 50-tempoh dan 200-tempoh untuk menentukan arah aliran pasaran dan menjana isyarat dagangan awal apabila purata bergerak bersilang
  4. Aliran volum disahkan oleh pelicinan 10 tempoh penunjuk OBV.
  5. Gunakan ATR 14-tempoh untuk menetapkan take-profit dan stop-loss secara dinamik Untuk posisi panjang, take-profit ialah 2 kali ATR, dan stop-loss ialah 1 kali ATR Untuk posisi short, sebaliknya adalah benar.

Kelebihan Strategik

  1. Pengesahan silang berbilang penunjuk sangat mengurangkan kebarangkalian isyarat palsu
  2. Gabungan Bollinger Bands dan CCI memberikan pertimbangan turun naik pasaran yang tepat
  3. Sistem purata bergerak jangka panjang dan jangka pendek secara berkesan memahami arah aliran umum
  4. OBV mengesahkan sokongan volum dan meningkatkan kebolehpercayaan isyarat
  5. Tetapan henti untung dan henti rugi dinamik untuk menyesuaikan diri dengan persekitaran pasaran yang berbeza
  6. Isyarat dagangan adalah jelas, pelaksanaannya adalah standard, dan mudah untuk diukur dan dilaksanakan.

Risiko Strategik

  1. Penunjuk berbilang boleh menyebabkan ketinggalan isyarat dan terlepas masa masuk terbaik
  2. Henti kerugian boleh dicetuskan dengan kerap dalam pasaran yang tidak menentu
  3. Pengoptimuman parameter mempunyai risiko overfitting
  4. Stop loss mungkin tidak tepat pada masanya semasa tempoh turun naik yang teruk Tindakan balas:
  • Laraskan parameter penunjuk secara dinamik mengikut kitaran pasaran yang berbeza
  • Pemantauan masa nyata bagi anjakan dan kawalan kedudukan
  • Semak kesahihan parameter secara kerap
  • Tetapkan had kerugian maksimum

Arah pengoptimuman strategi

  1. Memperkenalkan penunjuk turun naik pasaran untuk melaraskan kedudukan semasa tempoh turun naik yang tinggi
  2. Tambahkan penapis kekuatan arah aliran untuk mengelakkan dagangan dalam pasaran yang tidak menentu
  3. Optimumkan pemilihan kitaran CCI dan tingkatkan sensitiviti isyarat
  4. Tingkatkan mekanisme henti untung dan henti rugi, seperti mempertimbangkan untuk mengambil keuntungan secara berkelompok
  5. Menambah mekanisme amaran volum dagangan yang tidak normal

ringkaskan

Ini adalah sistem perdagangan lengkap berdasarkan gabungan penunjuk teknikal, yang meningkatkan ketepatan dagangan melalui pengesahan isyarat berbilang. Strategi ini direka bentuk dengan munasabah, risiko dikawal dengan betul, dan ia mempunyai nilai aplikasi praktikal yang baik. Adalah disyorkan untuk menggunakan kedudukan konservatif untuk ujian dalam perdagangan sebenar dan terus mengoptimumkan parameter berdasarkan keadaan pasaran.

Kod sumber strategi
/*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!")