Tài nguyên đang được tải lên... tải...

Chiến lược giao dịch lọc nhiều chỉ số với các đường băng Bollinger và CCI Woodies

Tác giả:ChaoZhang, Ngày: 2024-12-27 15:32:30
Tags:BBCCIMAOBVATRSMATPSL

img

Tổng quan

Chiến lược này là một hệ thống giao dịch đa chỉ số kết hợp Bollinger Bands, Woodies CCI (Chỉ số kênh hàng hóa), Moving Averages (MA) và On-Balance Volume (OBV). Nó sử dụng Bollinger Bands để cung cấp phạm vi biến động thị trường, chỉ số CCI để lọc tín hiệu, và kết hợp các hệ thống MA với xác nhận khối lượng để thực hiện giao dịch khi xu hướng thị trường rõ ràng. Ngoài ra, nó sử dụng ATR cho việc đặt dừng lỗ và lấy lợi nhuận năng động để kiểm soát rủi ro một cách hiệu quả.

Nguyên tắc chiến lược

Logic cốt lõi dựa trên các yếu tố chính sau:

  1. Sử dụng hai đường Bollinger Bands (1x và 2x) để xây dựng các kênh biến động giá
  2. Sử dụng các chỉ số CCI 6 giai đoạn và 14 giai đoạn làm bộ lọc tín hiệu, yêu cầu xác nhận từ cả hai giai đoạn
  3. Kết hợp các đường trung bình động 50 và 200 để xác định xu hướng thị trường
  4. Xác nhận xu hướng khối lượng thông qua OBV trơn 10 giai đoạn
  5. Sử dụng ATR 14 giai đoạn cho mức dừng lỗ và mức lợi nhuận năng động

Ưu điểm chiến lược

  1. Xác nhận chéo nhiều chỉ số làm giảm đáng kể các tín hiệu sai
  2. Sự kết hợp giữa Bollinger Bands và CCI cung cấp đánh giá biến động thị trường chính xác
  3. Các hệ thống MA dài hạn và ngắn hạn có hiệu quả nắm bắt các xu hướng chính
  4. OBV xác nhận hỗ trợ âm lượng, tăng độ tin cậy tín hiệu
  5. Các thiết lập dừng lỗ và lấy lợi nhuận năng động thích nghi với các điều kiện thị trường khác nhau
  6. Các tín hiệu giao dịch rõ ràng với việc thực hiện tiêu chuẩn, phù hợp với việc thực hiện định lượng

Rủi ro chiến lược

  1. Nhiều chỉ số có thể dẫn đến tín hiệu chậm
  2. Các loại giao dịch khác nhau
  3. Nguy cơ quá phù hợp tối ưu hóa tham số
  4. Stop-loss có thể không được kích hoạt đủ nhanh trong các giai đoạn biến động Các biện pháp giảm thiểu:
  • Điều chỉnh động các tham số chỉ số cho các chu kỳ thị trường khác nhau
  • Kiểm tra kéo xuống để kiểm soát vị trí
  • Xác nhận thông số thường xuyên
  • Đặt giới hạn mất mát tối đa

Hướng dẫn tối ưu hóa

  1. Thiết lập các chỉ số biến động để điều chỉnh các vị trí trong các giai đoạn biến động cao
  2. Thêm bộ lọc sức mạnh xu hướng để tránh các giao dịch thị trường khác nhau
  3. Tối ưu hóa lựa chọn thời gian CCI để cải thiện độ nhạy tín hiệu
  4. Cải thiện quản lý lợi nhuận/mất lỗ bằng cách lấy lợi nhuận một phần
  5. Thực hiện hệ thống cảnh báo bất thường khối lượng

Tóm lại

Đây là một hệ thống giao dịch hoàn chỉnh dựa trên sự kết hợp của các chỉ số kỹ thuật giúp cải thiện độ chính xác giao dịch thông qua việc xác nhận nhiều tín hiệu.


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

Có liên quan

Thêm nữa