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

Động lực Bollinger Bands Breakout chiến lược

Tác giả:ChaoZhang, Ngày: 2024-01-04 15:52:31
Tags:

img

Tổng quan

Chiến lược Bollinger Bands Breakout Momentum là một chiến lược giao dịch định lượng kết hợp chỉ số Bollinger Bands và chỉ số Moving Average để thực hiện các hoạt động breakout trong các điều kiện đà nhất định. Chiến lược chủ yếu sử dụng các đường ray trên và dưới của Bollinger Bands để xác định giá và thêm lọc giá bổ sung với đường trung bình động, phát hành tín hiệu mua và bán trong các điều kiện đà nhất định để thực hiện các hoạt động breakout trên các đường ray trên và dưới của Bollinger Bands.

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

Chiến lược này chủ yếu dựa trên chỉ số Bollinger Bands và chỉ số trung bình động MA. Bollinger Bands và trung bình động thuộc về các chỉ số theo xu hướng. Bollinger Bands sử dụng khái niệm lệch chuẩn để mô tả phạm vi biến động cao và thấp của giá.

Logic cốt lõi của chiến lược là:

  1. Bắt đầu các thông số Bollinger Bands và tính toán đường ray giữa, đường ray trên và đường ray dưới.

  2. Bắt đầu các thông số trung bình động.

  3. Tín hiệu mua: khi giá vượt qua đường ray dưới của Bollinger Bands từ dưới lên trên và đường trung bình động nằm dưới đường ray dưới, mua dài.

  4. Tín hiệu bán: khi giá vượt qua đường ray trên của Bollinger Bands từ trên xuống dưới và đường trung bình động nằm trên đường ray trên, đi ngắn.

  5. Tín hiệu thoát: khi giá quay trở lại phạm vi Bollinger Bands, đóng vị trí.

Chiến lược kết hợp việc sử dụng các dải Bollinger và các chỉ số trung bình động để tạo ra các tín hiệu giao dịch trong điều kiện đà nhất định, đó là một chiến lược theo xu hướng điển hình.

Ưu điểm

  1. Sử dụng Bollinger Bands để đánh giá rõ phạm vi biến động giá và đường trung bình động để xác định hướng xu hướng giá, các tín hiệu giao dịch được hình thành bởi sự kết hợp của bộ lọc chỉ số kép có độ tin cậy tương đối cao.

  2. Ngoài việc giá vượt qua ranh giới Bollinger Bands, nó cũng yêu cầu đường trung bình động để vượt qua, đảm bảo hỗ trợ động lực đủ để tránh đột phá sai.

  3. Các thông số chiến lược được thiết lập hợp lý và linh hoạt, có thể điều chỉnh các thông số của Bollinger Bands và chu kỳ trung bình động để thích nghi với các loại và điều kiện thị trường khác nhau.

  4. Ý tưởng chiến lược là rõ ràng và dễ hiểu, dễ thực hiện và xác minh.

Rủi ro

  1. Chỉ số biến động Bollinger Bands có khả năng chậm trễ trong xu hướng thay đổi nhanh chóng, có thể tạo ra các tín hiệu giao dịch không hợp lệ.

  2. Khi được sử dụng như một chỉ số lọc, việc thiết lập các tham số của nó trực tiếp ảnh hưởng đến tần suất của chiến lược.

  3. Tùy thuộc vào cả chỉ số Bollinger Bands và chỉ số trung bình động để tạo ra các tín hiệu hiệu quả, một khi một trong hai thất bại, toàn bộ chiến lược sẽ bị ảnh hưởng.

  4. Các chiến lược đột phá là tích cực hơn. khi giá giảm để kiểm tra ranh giới Bollinger Bands, chúng dễ bị mắc kẹt.

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

  1. Tối ưu hóa các tham số Bollinger Bands để thích nghi với các giống có chu kỳ và biến động khác nhau, chẳng hạn như sửa đổi các tham số nhân thời gian và độ lệch chuẩn của Bollinger Bands.

  2. Tối ưu hóa các thông số chu kỳ trung bình động để cân bằng tần số và hiệu ứng lọc.

  3. Tăng chiến lược dừng lỗ để kiểm soát lỗ tối đa cho mỗi giao dịch.

  4. Kết hợp với các chỉ số khác như RSI và MACD để tạo thành các chỉ số tổng hợp và làm giàu các tín hiệu giao dịch cho chiến lược.

  5. Kết hợp các mô hình học máy để giúp đánh giá hướng xu hướng giá và tỷ lệ thành công của sự đột phá.

Kết luận

Chiến lược này tích hợp chỉ số Bollinger Bands với chỉ số trung bình động để tạo ra tín hiệu vào và ra sau khi đảm bảo một đà bứt phá giá nhất định. Ý tưởng chiến lược rõ ràng và dễ thực hiện, và có thể theo dõi hiệu quả thị trường xu hướng. Nhưng đồng thời, cũng có một số rủi ro rút lui nhất định. Nó cần được tối ưu hóa cho cài đặt tham số và dừng lỗ để thích nghi với những thay đổi của thị trường.


/*backtest
start: 2022-12-28 00:00:00
end: 2024-01-03 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//
strategy("Advanced Bollinger Bands Strategy", overlay=true) 
//BB Values 
wall1= input(defval=true,title="===BB Values===",type=input.bool)
source = input(defval=close,title="BB Source",type=input.source)
length = input(20,title="BB Length", minval=1)
mult = input(2.0,title="BB Multiplier",minval=0.001, maxval=50)
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev 
offset = input(0, " BB Offset", type = input.integer, minval = -500, maxval = 500)
plot(basis, "Basis", color=#872323, offset = offset)
p1 = plot(upper, "Upper", color=color.teal, offset = offset)
p2 = plot(lower, "Lower", color=color.teal, offset = offset)
fill(p1, p2, title = "Background", color=#198787, transp=95)
//Moving Average Values 
wall2= input(defval=true,title="===MA Values===",type=input.bool)
nfl= input(defval=14,title="Moving Average Period",type=input.integer,minval=1,maxval=100) 
source1= input(defval=close,title="Moving Average Source",type=input.source)
noisefilter= sma(source1,nfl)
plot(noisefilter,style=plot.style_line,linewidth=2,color=color.yellow,title=" Moving Average Filter")
bgcolor(noisefilter<lower?color.green:noisefilter>upper?color.red:na,title="Moving Average Filter")
//Strategy Conditions
wall3= input(defval=true,title="===Strategy Conditions===",type=input.bool)
bl= input(defval=false,title="Exit at Basis Line?",type=input.bool)
nflb= input(defval=false,title="Use Moving Average Filter?",type=input.bool)

//Strategy Condition
buyEntry = crossover(source, lower)
sellEntry = crossunder(source, upper) 

if (nflb?(crossover(source,lower) and noisefilter<lower): crossover(source, lower))
	strategy.entry("BBandLE", strategy.long, oca_name="BollingerBands",  comment="BBandLE")
    
else
	strategy.cancel(id="BBandLE")
if (nflb?(crossunder(source,lower) and noisefilter>upper): crossunder(source, lower))
	strategy.entry("BBandSE", strategy.short, oca_name="BollingerBands",  comment="BBandSE") 
else
	strategy.cancel(id="BBandSE")  
	
strategy.close_all(when=bl?crossover(source,basis) or crossunder(source,basis):crossover(source,upper) or crossunder(source,lower))


Thêm nữa