Chiến lược phá vỡ Bollinger Bands là một chiến lược giao dịch định lượng điển hình sử dụng chỉ số Bollinger Bands để xác định giá trị cổ phiếu. Chiến lược này sử dụng các đường lên và đường xuống của Bollinger Bands để xác định xem cổ phiếu có bị đánh giá quá cao hay không, và kết hợp với đường trung bình di chuyển của giá cổ phiếu để phát tín hiệu giao dịch. Khi giá phá vỡ đường mòn, coi cổ phiếu là bị đánh giá thấp, tạo ra tín hiệu mua; khi giá giảm xuống đường mòn, coi cổ phiếu là được đánh giá quá cao, tạo ra tín hiệu bán.
Dải Bollinger bao gồm các đường trung đạo, đường trên và đường dưới. Đường trung đạo là đường trung bình di chuyển đơn giản trong n ngày; đường trên và dưới là hai điểm chênh lệch tiêu chuẩn thấp hơn trên đường trung đạo.
Chiến lược này đầu tiên tính toán đường trung đạo, đường lên và đường xuống của giá cổ phiếu trong 20 ngày. Sau đó, đánh giá xem giá cổ phiếu có cao hơn hoặc thấp hơn đường trung đạo hay không, nếu cao hơn đường trung đạo là tín hiệu mua và thấp hơn đường trung đạo là tín hiệu bán.
Ưu điểm lớn nhất của chiến lược này là sử dụng Bollinger Band để đánh giá giá cao của giá cổ phiếu, tránh các vấn đề giao dịch mù. Khi giá cổ phiếu được đánh giá cao, chiến lược sẽ gửi tín hiệu bán; khi giá cổ phiếu được đánh giá thấp, chiến lược sẽ gửi tín hiệu mua.
Ngoài ra, chiến lược này đã thêm vào trung bình di chuyển như là một chỉ số phán đoán hỗ trợ. Giá cổ phiếu thực sự phá vỡ trung bình di chuyển, cũng là một tín hiệu xu hướng mạnh mẽ. Kết hợp với phán đoán đánh giá thấp cao của Bollinger Bands, có thể làm cho tín hiệu chiến lược chính xác hơn.
Rủi ro lớn nhất của chiến lược này nằm ở bản thân chỉ số Bollinger Band. Khi giá cổ phiếu biến động bất thường, phạm vi của Bollinger Band cũng sẽ thay đổi.
Ngoài ra, nếu chỉ dựa vào chỉ số kỹ thuật mà không xem xét thông tin cơ bản của cổ phiếu, thì cũng có một số rủi ro. Ví dụ: lợi nhuận giảm nhưng giá cổ phiếu bị đánh giá thấp, hoặc lợi nhuận tăng nhanh nhưng giá cổ phiếu cao. Trong những trường hợp này, tín hiệu chiến lược có thể có một sự lệch nào đó với giá trị thực tế của cổ phiếu.
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Tăng cơ chế dừng lỗ. Khi giá cổ phiếu giảm một tỷ lệ nhất định so với giá mua, dừng lỗ buộc phải được rút ra. Đây là tổn thất tối đa mà chiến lược có thể kiểm soát hiệu quả.
Kết hợp các chỉ số cơ bản và kỹ thuật của cổ phiếu. Thêm các quy tắc phán đoán về các chỉ số cơ bản như PE, PB, tránh mua cổ phiếu đã được đánh giá quá cao.
Các tham số điều chỉnh động. Cho phép các tham số như độ dài chu kỳ của Bollinger Bands, nhân chênh lệch chuẩn được điều chỉnh động theo tỷ lệ biến động của các cổ phiếu khác nhau. Điều này có thể làm cho Bollinger Bands thích nghi tốt hơn với biến động giá của từng cổ phiếu.
Chiến lược phá vỡ động lực Bollinger tạo ra tín hiệu giao dịch thông qua các chỉ số phán đoán hỗ trợ, tránh rủi ro giao dịch mù quáng, có thể lọc hiệu quả các tín hiệu tiếng ồn. Đồng thời, có một số hạn chế, không thể hoàn toàn tránh được tác động của biến động bất thường. Trong tương lai, có thể tối ưu hóa từ dừng lỗ, kết hợp cơ bản, điều chỉnh tham số động lực, v.v., làm cho chiến lược ổn định và đáng tin cậy hơn.
/*backtest
start: 2023-11-18 00:00:00
end: 2023-12-18 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="NoScoobies Bollinger Bands", overlay=true)
source = close
length = input(20, minval=1, title = "Period") //Length of the Bollinger Band
mult = input(1.5, minval=0.001, maxval=50, title = "Standard Deviation") // Use 1.5 SD for 20 period MA; Use 2 SD for 10 period MA
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev
long=crossover(source, basis)
short=crossunder(source, basis)
close_long=crossunder(source, upper)
close_short=crossover(source, lower)
if long
strategy.entry("Long", strategy.long)
strategy.close("Long", when = close_long)
if short
strategy.entry("Short", strategy.short)
strategy.close("Short", when = close_short)
plot(basis, color=color.red,title= "SMA")
p1 = plot(upper, color=color.blue,title= "UB")
p2 = plot(lower, color=color.blue,title= "LB")
fill(p1, p2)