Chiến lược giao dịch Bollinger Bands đa chỉ số

Tác giả:ChaoZhang, Ngày: 2023-11-15 15:30:43
Tags:

img

Tổng quan

Chiến lược này kết hợp nhiều chỉ số kỹ thuật như Bollinger Bands, RSI và MACD để đưa ra quyết định giao dịch. Đầu tiên nó vẽ Bollinger Bands trên biểu đồ và sử dụng các băng thông đột phá cho các tín hiệu nhập cảnh. RSI và MACD sau đó được sử dụng làm bộ lọc bổ sung cho các mục nhập. Chiến lược cũng đặt ra các quy tắc dừng lỗ dựa trên các băng và chỉ số để kiểm soát rủi ro.

Chiến lược logic

  1. Kịch bản 34 giai đoạn Bollinger Bands với đường trung tâm, 1 std dev và 2 std dev bands.

  2. Nhập dài khi gần phá vỡ trên dải trên, nhập ngắn khi gần phá vỡ dưới dải dưới.

  3. Đóng vị trí dài khi đóng chéo dưới đường trung tâm, đóng vị trí ngắn khi đóng chéo trên đường trung tâm.

  4. Sử dụng RSI>70 như là xác nhận bổ sung cho dài, RSI<30 như là xác nhận cho ngắn.

  5. Đóng các vị trí ngắn khi RSI vượt trên 50, đóng các vị trí dài khi RSI vượt dưới 50.

  6. Sử dụng MACD crossover làm bộ lọc bổ sung cho các mục, MACD crossover cho dài, MACD crossunder cho ngắn.

  7. Đóng các vị trí dài trên đường chéo MACD, đóng các vị trí ngắn trên đường chéo MACD.

  8. Yêu cầu tất cả 3 chỉ số phải phù hợp trước khi tham gia giao dịch, nhiều bộ lọc làm giảm tín hiệu sai.

Ưu điểm

Kết hợp các tín hiệu từ nhiều chỉ số làm giảm các tín hiệu sai và tăng lợi nhuận. Bollinger Band cung cấp tín hiệu phá vỡ giá, RSI tránh các khu vực mua quá mức / bán quá mức, MACD nắm bắt những thay đổi xu hướng.

Các quy tắc dừng lỗ nghiêm ngặt dựa trên các dải và chỉ số giới hạn lỗ trên mỗi giao dịch. Điều này dẫn đến lợi nhuận cao hơn, tỷ lệ thắng và rút tiền tối đa thấp hơn.

So với các chiến lược chỉ số đơn, kết hợp các chỉ số cải thiện hiệu suất. Nhiều bộ lọc loại bỏ các tín hiệu xấu. Cơ chế dừng lỗ kiểm soát tác động của lỗ.

Nhìn chung, chiến lược này xuất sắc trong các thị trường xu hướng, nắm bắt các động thái lớn trong khi tránh các whipsaws bằng cách sử dụng chi tiết chỉ số. Kiểm soát rủi ro cho phép sử dụng đòn bẩy cao hơn một cách an toàn.

Rủi ro

Những rủi ro chính là:

  1. Khả năng tín hiệu sai từ các chỉ số.

  2. Không thể kiếm lợi nhuận từ các thị trường giới hạn phạm vi. Stop loss có thể gây ra tổn thất trong quá trình hợp nhất. Các quy tắc dừng lỗ có thể được nới lỏng để giữ giao dịch lâu hơn.

  3. Chỉ số chậm dẫn đến cơ hội nhập cảnh bị bỏ lỡ.

  4. Sử dụng trailing stop hoặc trung bình xuống có thể kiểm soát lỗ tốt hơn.

  5. Các tham số cố định có thể yêu cầu điều chỉnh cho các thị trường khác nhau.

  6. Không đủ thử nghiệm dẫn đến quá phù hợp Chiến lược cần được thử nghiệm trên các bộ dữ liệu lớn hơn trên các thị trường để đảm bảo độ bền.

Cơ hội gia tăng

Chiến lược có thể được cải thiện theo nhiều cách:

  1. Tối ưu hóa các tham số chỉ số để tìm kết hợp tốt nhất giảm thiểu tín hiệu sai.

  2. Tích hợp stop loss thích nghi thay vì dừng băng tần trung gian cố định.

  3. Sử dụng máy học để tối ưu hóa tham số thích nghi trong điều kiện thay đổi, ví dụ như học tăng cường.

  4. Thêm các quy tắc phát hiện xu hướng để sử dụng các chiến thuật khác nhau cho các giai đoạn thị trường khác nhau.

  5. Kết hợp tình cảm, dữ liệu truyền thông xã hội để nâng cao dự đoán đa yếu tố và các chỉ số hàng đầu.

  6. Sử dụng tổng hợp để mở rộng kích thước vị trí dựa trên kích thước tài khoản tăng lên để tăng theo cấp số nhân.

  7. Tối ưu hóa sự kết hợp với các chiến lược không tương quan để giảm biến động danh mục đầu tư thông qua đa dạng hóa.

Kết luận

Chiến lược này kết hợp nhiều chỉ số cho các tín hiệu vào và ra mạnh mẽ và thực thi kỷ luật dừng lỗ nghiêm ngặt. Sử dụng nhiều chỉ số làm giảm các tín hiệu sai trong khi dừng kiểm soát mức độ mất mát. Nó hoạt động tốt cho các thị trường xu hướng cung cấp lợi nhuận ổn định. Các thông số điều chỉnh tốt và tăng khả năng thích nghi có thể cải thiện hiệu suất hơn nữa.


/*backtest
start: 2023-10-15 00:00:00
end: 2023-11-14 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
// Bollinger Bands: Madrid : 14/SEP/2014 11:07 : 2.0
// This displays the traditional Bollinger Bands, the difference is 
// that the 1st and 2nd StdDev are outlined with two colors and two
// different levels, one for each Standard Deviation

strategy(shorttitle='MBB', title='Bollinger Bands', overlay=true, currency=currency.NONE, initial_capital = 1000, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_value = 0.05)
src = input(close)
length = input.int(34, minval=1)
mult = input.float(2.0, minval=0.001, maxval=50)

basis = ta.sma(src, length)
dev = ta.stdev(src, length)
dev2 = mult * dev

upper1 = basis + dev
lower1 = basis - dev
upper2 = basis + dev2
lower2 = basis - dev2

colorBasis = src >= basis ? color.blue : color.orange

pBasis = plot(basis, linewidth=2, color=colorBasis)
pUpper1 = plot(upper1, color=color.new(color.blue, 0), style=plot.style_circles)
pUpper2 = plot(upper2, color=color.new(color.blue, 0))
pLower1 = plot(lower1, color=color.new(color.orange, 0), style=plot.style_circles)
pLower2 = plot(lower2, color=color.new(color.orange, 0))

fill(pBasis, pUpper2, color=color.new(color.blue, 80))
fill(pUpper1, pUpper2, color=color.new(color.blue, 80))
fill(pBasis, pLower2, color=color.new(color.orange, 80))
fill(pLower1, pLower2, color=color.new(color.orange, 80))


//Strategy code starts here

long_entry = ta.crossover(src, upper1)
short_entry = ta.crossunder(src, lower1)

strategy.entry("Long", strategy.long, when=long_entry)
strategy.entry("Short", strategy.short, when=short_entry)

if long_entry or close < basis
    strategy.close("Long", "Long") 

if short_entry or close > basis
    strategy.close("Short", "Short") 


//Calculate RSI
rsiLength = input(14)
rsiValue = ta.rsi(src, rsiLength)

// Define RSI conditions for entering and exiting trades
rsiLong = rsiValue > 70
rsiShort = rsiValue < 30


//Enter long position when RSI crosses above 50 and Bollinger Bands long entry condition is met
strategy.entry("Long", strategy.long, when=long_entry and rsiLong)

//Exit long position when RSI crosses below 50 or Bollinger Bands exit condition is met
strategy.close("Long Exit", when=rsiShort or close < basis)

//Enter short position when RSI crosses below 50 and Bollinger Bands short entry condition is met
strategy.entry("Short", strategy.short, when=short_entry and rsiShort)

//Exit short position when RSI crosses above 50 or Bollinger Bands exit condition is met
strategy.close("Short Exit", when=rsiLong or close > basis)



//Calculate MACD
fastLength = input(12)
slowLength = input(26)
macdLength = input(9)
macdValue = ta.macd(src, fastLength, slowLength, macdLength)

// Define MACD conditions for entering and exiting trades
macdLong = ta.crossover(src, macdLength)
macdShort = ta.crossunder(src, macdLength)

//Enter long position when MACD crosses above signal line and RSI and Bollinger Bands long entry condition is met
strategy.entry("Long", strategy.long, when=long_entry and rsiLong and macdLong)

//Exit long position when MACD crosses below signal line or RSI crosses below 50 or Bollinger Bands exit condition is met
strategy.close("Long Exit", when=macdShort or rsiShort or close < basis)

//Enter short position when MACD crosses below signal line and RSI crosses below 50 and Bollinger Bands short entry condition is met
strategy.entry("Short", strategy.short, when=short_entry and rsiShort and macdShort)

//Exit short position when MACD crosses above signal line or RSI crosses above 50 or Bollinger Bands exit condition is met
strategy.close("Short Exit", when=macdLong or rsiLong or close > basis)

Thêm nữa