Bollinger Bands dikombinasikan dengan beberapa indikator Woody CCI untuk menyaring strategi sinyal perdagangan

BB CCI MA OBV ATR SMA TP SL
Tanggal Pembuatan: 2024-12-27 15:32:30 Akhirnya memodifikasi: 2024-12-27 15:32:30
menyalin: 0 Jumlah klik: 416
1
fokus pada
1617
Pengikut

Bollinger Bands dikombinasikan dengan beberapa indikator Woody CCI untuk menyaring strategi sinyal perdagangan

Ringkasan

Strategi ini adalah sistem perdagangan multi-indikator yang menggabungkan Bollinger Bands, Woodies CCI, Moving Average (MA) dan On Balance Volume (OBV). Strategi ini menggunakan Bollinger Bands untuk memberikan rentang volatilitas pasar, menggunakan indikator CCI untuk menyaring sinyal perdagangan, dan kemudian menggabungkan sistem rata-rata bergerak dan konfirmasi volume perdagangan untuk berdagang saat tren pasar jelas. Pada saat yang sama, gunakan ATR untuk secara dinamis mengatur posisi take-profit dan stop-loss guna mengendalikan risiko secara efektif.

Prinsip Strategi

Logika inti dari strategi ini didasarkan pada elemen-elemen kunci berikut:

  1. Gunakan dua pita Bollinger deviasi standar (1x dan 2x) untuk membangun saluran fluktuasi harga dan memberikan referensi untuk rentang fluktuasi pasar
  2. Penggunaan indikator CCI 6 periode dan 14 periode sebagai filter sinyal mengharuskan CCI kedua periode tersebut untuk mengonfirmasi ke arah yang sama
  3. Gabungkan rata-rata pergerakan periode 50 dan periode 200 untuk menentukan tren pasar dan menghasilkan sinyal perdagangan awal saat rata-rata pergerakan melintasi
  4. Tren volume dikonfirmasi oleh penghalusan 10 periode indikator OBV.
  5. Gunakan ATR periode 14 untuk menetapkan take-profit dan stop-loss secara dinamis. Untuk posisi long, take-profit adalah 2 kali ATR, dan stop-loss adalah 1 kali ATR. Untuk posisi short, yang berlaku adalah sebaliknya.

Keunggulan Strategis

  1. Validasi silang beberapa indikator sangat mengurangi kemungkinan sinyal palsu
  2. Kombinasi Bollinger Bands dan CCI memberikan penilaian volatilitas pasar yang akurat
  3. Sistem rata-rata pergerakan jangka panjang dan jangka pendek secara efektif memahami tren umum
  4. OBV mengonfirmasi dukungan volume dan meningkatkan keandalan sinyal
  5. Pengaturan stop-profit dan stop-loss yang dinamis untuk beradaptasi dengan lingkungan pasar yang berbeda
  6. Sinyal perdagangannya jelas, eksekusinya standar, dan mudah diukur dan diterapkan.

Risiko Strategis

  1. Beberapa indikator dapat menyebabkan kelambatan sinyal dan melewatkan waktu masuk terbaik
  2. Stop loss dapat dipicu secara berkala di pasar yang bergejolak
  3. Optimasi parameter memiliki risiko overfitting
  4. Stop loss mungkin tidak tepat waktu selama periode volatilitas yang parah Tindakan penanggulangan:
  • Sesuaikan parameter indikator secara dinamis sesuai dengan siklus pasar yang berbeda
  • Pemantauan retracement dan kontrol posisi secara real-time
  • Periksa validitas parameter secara teratur
  • Tetapkan batas kerugian maksimum

Arah optimasi strategi

  1. Memperkenalkan indikator volatilitas pasar untuk menyesuaikan posisi selama periode volatilitas tinggi
  2. Tambahkan filter kekuatan tren untuk menghindari perdagangan di pasar yang bergejolak
  3. Optimalkan pemilihan siklus CCI dan tingkatkan sensitivitas sinyal
  4. Memperbaiki mekanisme stop profit dan stop loss, seperti mempertimbangkan mengambil keuntungan secara berkelompok
  5. Menambahkan mekanisme peringatan volume perdagangan abnormal

Meringkaskan

Ini adalah sistem perdagangan lengkap berdasarkan kombinasi indikator teknis, yang meningkatkan akurasi perdagangan melalui beberapa konfirmasi sinyal. Strateginya dirancang secara wajar, risikonya dikendalikan dengan baik, dan mempunyai nilai penerapan praktis yang baik. Disarankan untuk menggunakan posisi konservatif untuk pengujian dalam perdagangan nyata dan terus mengoptimalkan parameter berdasarkan kondisi pasar.

Kode 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!")