
Chiến lược này được gọi là Chiến lược định lượng Bollinger dựa trên sự đảo ngược của dải biến động. Chiến lược này sử dụng đường đua lên xuống của dải Bollinger để đưa ra phán quyết mua và bán.
Chiến lược này sử dụng chỉ số RSI để xác định thời gian mua. Cụ thể, nó sẽ xác định liệu giá đóng cửa gần nhất của một thanh có thấp hơn giá thấp nhất của 6 thanh trước đó hay không, trong khi đó, băng thông Brin ((BBW) lớn hơn ngưỡng đặt và tỷ lệ băng thông Brin ((BBR) nằm trong phạm vi đặt. Nếu đáp ứng các điều kiện này, điều này cho thấy giá cổ phiếu có thể đang ở thời điểm đảo ngược, khi đó mua sẽ mở vị trí.
Exit đơn giản hơn, khi RSI lớn hơn 70, cho thấy giá cổ phiếu quá nóng, khi đó bán tháo.
Ưu điểm lớn nhất của chiến lược này là sử dụng Bollinger Band để đánh giá đường đua lên xuống, khi Bollinger Band đảo ngược, mua và bán, có thể nắm bắt cơ hội đảo ngược ngắn hạn. So với chiến lược RSI đơn giản, chiến lược này nghiêm ngặt hơn trong việc đánh giá thời điểm mua và tránh khả năng giao dịch sai.
Ngoài ra, chiến lược này nhạy cảm với các tham số, có thể được tối ưu hóa cho các giống khác nhau bằng cách điều chỉnh các tham số của BBW, BBR, để có hiệu quả tốt hơn.
Rủi ro chính của chiến lược này là Brin không thể dự đoán được 100% sự đảo ngược giá, và nếu thời điểm không phù hợp, nó có thể dễ dàng tạo ra trường hợp bỏ lỡ thời điểm mua tốt nhất hoặc tổn thất ảo.
Ngoài ra, biến động ngắn hạn của giá cổ phiếu có thể dẫn đến chiến lược mở và đóng vị trí thường xuyên, tăng chi phí giao dịch và chi phí trượt. Nếu không đủ mạnh để đảo ngược, có nguy cơ mất vị trí bằng phẳng.
Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:
Các tham số tối ưu hóa. Các tham số như BBW, BBR có thể được thử nghiệm và tối ưu hóa bằng các phương pháp tinh tế hơn, để chọn tham số tối ưu cho các loại giao dịch khác nhau.
Tăng cơ chế dừng lỗ. Bạn có thể thiết lập dừng di chuyển hoặc dừng thời gian để kiểm soát lỗ tối đa.
Kết hợp với các chỉ số khác. Có thể kết hợp với các chỉ số khác như KDJ, MACD để tín hiệu mua chính xác và đáng tin cậy hơn.
Tối ưu hóa cơ chế thoát. Các cơ chế thoát hiện tại đơn giản hơn và có thể được tối ưu hóa, chẳng hạn như thiết lập các trạm dừng di động thích hợp, hoặc kết hợp với tình trạng biến động để thoát.
Chiến lược này sử dụng tính năng của Bollinger Bands để xác định thời điểm giá có thể đảo ngược, mua và bán. So với các chỉ số đơn lẻ như RSI, chiến lược này xác định thời gian chính xác hơn. Bằng cách tối ưu hóa tham số và thiết lập dừng lỗ, bạn có thể làm cho chiến lược đáng tin cậy hơn.
/*backtest
start: 2022-11-15 00:00:00
end: 2023-11-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
//study(title = "Bolinger strategy", overlay=true)
strategy("Bolinger strategy",currency="SEK",default_qty_value=10000,default_qty_type=strategy.cash,max_bars_back=50)
len = 5
src = close
up = rma(max(change(src), 0), len)
down = rma(-min(change(src), 0), len)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
bbw3level = input(15, title="bbw3")
bbr3level = input(0.45, title="bbr3level")
bbrlower = input(0.4480, title="bbrlower")
bbrhigher = input(0.4560, title="bbrhigher")
sincelowestmin = input(7, title="sincelowestmin")
sincelowestmax = input(57, title="sincelowestmax")
length = input(20, minval=1)
mult = 20
src3 = close[3]
basis3 = sma(src3, length)
dev3 = mult * stdev(src3, length)
upper3 = basis3 + dev3
lower3 = basis3 - dev3
bbr3 = (src3 - lower3)/(upper3 - lower3)
bbw3 = (upper3-lower3)/basis3*100
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
bbr = (src - lower)/(upper - lower)
bbw = (upper-lower)/basis*100
criteriamet = 0
crossUnderB0 = crossunder(bbr,0)
since_x_under = barssince(crossUnderB0)
sincelowest = barssince(close[6] > close[3] and close[5] > close[3] and close[4] > close[3] and close[2] > close[3] and close[1] > close[3] and close > close[3] and bbw3 > bbw3level and bbr3 < bbr3level) // and bbr3 < 0
if sincelowest > sincelowestmin and sincelowest < sincelowestmax and bbr > bbrlower and bbr < bbrhigher
criteriamet := 1
else
criteriamet := 0
//plot (criteriamet)
//exit
exitmet = 0
if rsi > 70
exitmet := 1
else
exitmet := 0
if criteriamet == 1
strategy.entry("long", strategy.long)
if exitmet == 1
strategy.close("long")