Đây là một chiến lược theo xu hướng dựa trên Bollinger Bands. Nó sử dụng Bollinger Bands để tính các kênh giá và kết hợp các mẫu nến để xác định hướng xu hướng. Các vị trí dài / ngắn sẽ được mở khi giá vượt ra khỏi Bollinger Bands. Chiến lược này hoạt động tốt cho các cổ phiếu có xu hướng rõ ràng và nhằm mục đích nắm bắt lợi nhuận xu hướng trung hạn.
Chiến lược này sử dụng dải trên, dải giữa và dải dưới của Bollinger Bands để xác định phạm vi giá. Dải trên và dải dưới bao bọc chuyển động giá trong khi dải giữa là đường trung bình động. Chiều rộng dải thay đổi dựa trên sự biến động giá. Khi giá vượt qua dải trên, nó báo hiệu đột phá lên và bước vào dài. Khi giá vượt qua dải dưới, nó báo hiệu đột phá xuống và bước vào ngắn.
Sau khi xác định hướng xu hướng với Bollinger Bands breakout, chiến lược cũng xác nhận nó với các mô hình nến. Nếu thân nến phù hợp với xu hướng, chẳng hạn như nến tăng trong xu hướng tăng, một vị trí sẽ được mở. Nếu thân nến hiển thị mô hình ngược, chẳng hạn như nến giảm trong xu hướng tăng, tín hiệu sẽ bị bỏ qua. Thiết kế này nhằm tránh rủi ro đột phá sai.
Các quy tắc chi tiết về tín hiệu giao dịch là:
Tính toán dải trên, dải giữa và dải dưới của Bollinger Bands để xác định phạm vi giá
Khi giá phá vỡ trên dải trên, nó báo hiệu một xu hướng tăng / dài
Nếu ngọn nến là tăng, xác nhận xu hướng và đi dài
Khi giá phá vỡ dưới dải dưới, nó báo hiệu một xu hướng giảm / ngắn
Nếu ngọn nến giảm, xác nhận xu hướng và đi ngắn
Đặt lệnh dừng lỗ và lấy lợi nhuận dựa trên tỷ lệ phần trăm
Bằng cách tham gia vào Bollinger Bands breakouts và xác nhận với các ngọn nến, chiến lược này có thể xác định hiệu quả hướng xu hướng và có được các mục nhập tốt trong giai đoạn xu hướng ban đầu. Lợi nhuận được lấy trong xu hướng trung hạn.
Đây là một xu hướng điển hình sau chiến lược với những điểm mạnh sau:
Bollinger Bands thích nghi và có thể điều chỉnh phạm vi cho các cổ phiếu có biến động khác nhau
Chứng nhận nến lọc ra những sự đột phá sai
Việc nắm giữ trung hạn làm giảm tần suất giao dịch và giảm chi phí / trượt
Việc nắm bắt xu hướng trung hạn tránh tiếng ồn ngắn hạn và mang lại lợi nhuận rủi ro tốt
Kết quả backtest là mạnh mẽ và giao dịch thực tế là ổn định do hệ thống hóa
Chiến lược logic là rõ ràng và dễ hiểu, với chỗ cho cải tiến
Bằng cách xác định xu hướng với Bollinger Bands và nhập vào xác nhận nến, chiến lược này có hiệu quả nắm bắt đà tăng trung hạn do khối lượng.
Ngoài ra còn có một số rủi ro cần lưu ý cho chiến lược này:
Rủi ro phá vỡ thất bại. Breaking Bollinger Bands có bản chất xác suất và breakouts sai xảy ra
Rủi ro đảo ngược: xu hướng trung hạn cũng có thể đảo ngược, nên được thiết lập dừng hợp lý
Bollinger Bands tham số và dừng cần điều chỉnh cho các cổ phiếu khác nhau
Rủi ro quá phù hợp. Tối ưu hóa tham số quá mức gây ra phù hợp đường cong
Rủi ro thực thi: Sự khác biệt tồn tại giữa backtest và giao dịch thực tế
Để đối phó với những rủi ro này, những cải tiến sau đây có thể được thực hiện:
Tối ưu hóa các thông số và chiều rộng của Bollinger Bands để phù hợp hơn
Thêm thêm các yếu tố như khối lượng để xác nhận xu hướng
Sử dụng dừng động để ngăn ngừa tổn thất lớn trên đảo ngược
Áp dụng phân tích đi trước để tránh quá phù hợp
Cải thiện việc thực thi lệnh để tăng hiệu quả giao dịch thực tế
Chiến lược này có thể được tăng cường hơn nữa trong các khía cạnh sau:
Thêm thêm các chỉ số như KDJ, MACD để xác nhận tín hiệu và cải thiện độ chính xác
Sử dụng máy học để tối ưu hóa các tham số thay vì các giá trị cố định
Thiết lập các vùng giá xung quanh các điểm đột phá để tạo ra các tín hiệu chính xác hơn
Tối ưu hóa lối ra bằng cách dừng lại hoặc lấy lợi nhuận một phần
Thiết lập quy mô vị trí để quản lý rủi ro tốt hơn
Sử dụng các loại lệnh nâng cao để cải thiện kết quả thực thi
Thêm các bộ lọc chế độ thị trường để tắt chiến lược trong một số môi trường nhất định
Bằng cách giới thiệu nhiều kỹ thuật và tối ưu hóa hơn, sự ổn định và lợi nhuận của chiến lược này có thể được cải thiện hơn nữa để có kết quả backtest và giao dịch thực tế tốt hơn.
Đây là một chiến lược theo xu hướng điển hình sử dụng Bollinger Bands như các phạm vi năng động để xác định hướng xu hướng.
Lợi thế của chiến lược này bao gồm sử dụng Bollinger Bands cho xu hướng, nến để xác nhận nhập cảnh, tần suất giao dịch thấp và hệ thống hóa dễ dàng. Nó cũng có những rủi ro như đột phá sai, khó khăn tối ưu hóa dừng lỗ và chênh lệch thực thi. Nhiều chỉ số, tham số năng động và thực thi tiên tiến có thể tăng sự ổn định và hiệu suất giao dịch thực tế.
Nhìn chung, như một chiến lược theo xu hướng điển hình, nó có logic rõ ràng và dễ thực hiện với khả năng sống mạnh mẽ. Với tối ưu hóa liên tục và kiểm soát rủi ro nghiêm ngặt, nó có thể trở thành một mô-đun hiệu quả trong các hệ thống giao dịch định lượng.
/*backtest start: 2022-11-09 00:00:00 end: 2023-11-15 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("Noro's Bands Scalper Strategy v1.2", shorttitle = "Scalper str 1.2", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") takepercent = input(0, defval = 0, minval = 0, maxval = 1000, title = "take, %") needct = input(false, defval = false, title = "Counter-trend entry") len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period") needbb = input(true, defval = true, title = "Show Bands") needbg = input(true, defval = true, title = "Show Background") src = close //PriceChannel 1 lasthigh = highest(src, len) lastlow = lowest(src, len) center = (lasthigh + lastlow) / 2 //Distance dist = abs(src - center) distsma = sma(dist, len) hd = center + distsma ld = center - distsma hd1 = center + distsma / 2 ld1 = center - distsma / 2 //Trend trend = close < ld and high < center ? -1 : close > hd and low > center ? 1 : trend[1] //Lines colo = needbb == false ? na : black plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band") plot(center, color = colo, linewidth = 1, transp = 0, title = "center") plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band") //Background col = needbg == false ? na : trend == 1 ? lime : red bgcolor(col, transp = 80) //Body body = abs(close - open) smabody = sma(body, 100) //Signals bar = close > open ? 1 : close < open ? -1 : 0 up7 = trend == 1 and ((bar == -1 and bar[1] == -1) or (body > smabody and close < open)) ? 1 : 0 dn7 = trend == 1 and bar == 1 and bar[1] == 1 and close > strategy.position_avg_price * (100 + takepercent) / 100 ? 1 : 0 up8 = trend == -1 and bar == -1 and bar[1] == -1 and close < strategy.position_avg_price * (100 - takepercent) / 100 ? 1 : 0 dn8 = trend == -1 and ((bar == 1 and bar[1] == 1) or (body > smabody and close > open)) ? 1 : 0 if up7 == 1 or up8 == 1 strategy.entry("Long", strategy.long, needlong == false ? 0 : trend == -1 and needct == false ? 0 : na) if dn7 == 1 or dn8 == 1 strategy.entry("Short", strategy.short, needshort == false ? 0 : trend == 1 and needct == false ? 0 : na)