Chiến lược này xây dựng một chiến lược giao dịch dựa trên chỉ số Bollinger Bands để đạt được giao dịch tự động trên giao dịch tương lai bitcoin trong khung thời gian 1 phút. Nó đi dài khi giá vượt qua ranh giới dưới của Bollinger Bands và đi ngắn khi giá vượt qua ranh giới trên của Bollinger Bands để kiếm lợi nhuận.
Chiến lược này sử dụng chỉ số Bollinger Bands với 55 giai đoạn và hệ số băng thông được thiết lập là 4. Đường giữa của Bollinger Bands là đường trung bình di chuyển đơn giản 55 ngày, và đường trên và đường dưới là đường giữa lần +4 lần độ lệch chuẩn và đường giữa lần -4 lần độ lệch chuẩn tương ứng. Khi giá giảm xuống dưới đường dưới, đi dài; khi giá tăng trên đường trên, đi ngắn.
Sau khi tín hiệu dài được kích hoạt, chiến lược sẽ đặt lệnh dừng lỗ ở mức giá của đường dưới. Sau khi tín hiệu ngắn được kích hoạt, chiến lược sẽ đặt lệnh dừng lỗ ở mức giá của đường trên. Không đặt lệnh lấy lợi nhuận.
Chiến lược này sử dụng khả năng của chỉ số Bollinger Bands để xác định các điều kiện mua quá mức và bán quá mức để xác định hợp lý thời gian nhập cảnh. Tỷ lệ băng thông được đặt thành 4 để tránh giao dịch quá thường xuyên. Kết quả kiểm tra lại cho thấy trên khung thời gian bitcoin 1 phút, chiến lược đạt được xác suất lợi nhuận trên 80%, với hiệu quả đáng kể.
So với các chỉ số khác, chỉ số Bollinger Bands thích nghi rất tốt với biến động thị trường và có thể tự động điều chỉnh băng thông để nắm bắt sự biến động trong các giai đoạn khác nhau.
Ngoài ra, chiến lược chỉ dựa trên chỉ số Bollinger Bands, rất đơn giản và đáp ứng các yêu cầu cho giao dịch định lượng.
Rủi ro chính của chiến lược này nằm ở thực tế là hiệu ứng của chỉ số Bollinger Bands đánh giá các điều kiện thị trường mua quá mức và bán quá mức có thể bị ảnh hưởng bởi các chuyển động thị trường lớn. Trong thị trường bò, giá cổ phiếu có thể tăng cao trong một thời gian dài, khiến cho đường ray trên khó hình thành kháng cự hiệu quả. Tương tự, trong thị trường gấu, giá cổ phiếu có thể ở mức thấp trong một thời gian dài, khiến cho đường ray dưới khó cung cấp hỗ trợ hiệu quả. Tất cả điều này có thể dẫn đến các tín hiệu giao dịch không hợp lệ được tạo ra bởi chiến lược.
Ngoài ra, việc thiết lập stop loss trực tiếp ở đường ray trên và dưới của Bollinger Bands có thể quá gần, không cho chiến lược đủ không gian và do đó bị đánh bại bởi biến động giá.
Chiến lược có thể được tối ưu hóa trong các khía cạnh sau:
Kết hợp với các chỉ số khác. Các chỉ số như KDJ và MACD có thể giúp đánh giá các điều kiện mua quá mức / bán quá mức để sửa đổi tín hiệu giao dịch.
Thiết lập lệnh dừng lỗ để khóa lợi nhuận. So với lệnh dừng lỗ tĩnh, lệnh dừng lỗ có thể điều chỉnh đúng vị trí lệnh dừng lỗ dựa trên biến động giá.
Tối ưu hóa các tham số. Các tham số băng thông và thời gian khác nhau của Bollinger Bands có thể được thử nghiệm để tìm ra sự kết hợp tham số tối ưu. Các thuật toán tối ưu hóa cũng có thể được sử dụng để tìm các tham số tối ưu.
Điều chỉnh các tham số theo điều kiện thị trường. Thị trường có ba trạng thái: tăng, gấu và giới hạn phạm vi. Vì vậy, các tham số có thể được thiết lập riêng biệt dựa trên điều kiện thị trường.
Thêm các chiến lược quản lý đòn bẩy tiên tiến.
Điểm mạnh nhất của chiến lược này là logic giao dịch đơn giản và rõ ràng của nó để có được tín hiệu mua quá mức / bán quá mức từ chỉ số Bollinger Bands. Nhìn chung, đây là một chiến lược định lượng ngắn hạn rất thực tế. Chúng ta có thể cải thiện nó hơn nữa bằng cách tối ưu hóa nó theo nhiều cách để đạt được lợi nhuận ổn định dài hạn.
/*backtest start: 2023-11-27 00:00:00 end: 2023-12-27 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Kozlod - BB Strategy - 1 minute", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100) // // author: Kozlod // date: 2019-05-29 // BB - XBTUDS - Bitmex - 1m // https://www.tradingview.com/u/Kozlod/ // https://t.me/quantnomad // source = close length = input(55, minval=1) mult = input(4, minval=0.001, maxval=50) basis = sma(source, length) dev = mult * stdev(source, length) upper = basis + dev lower = basis - dev plot(upper) plot(lower) buyEntry = crossover(source, lower) sellEntry = crossunder(source, upper) if (crossover(source, lower)) strategy.entry("BBandLE", strategy.long, stop=lower, oca_name="BollingerBands", comment="BBandLE") else strategy.cancel(id="BBandLE") if (crossunder(source, upper)) strategy.entry("BBandSE", strategy.short, stop=upper, oca_name="BollingerBands", comment="BBandSE") else strategy.cancel(id="BBandSE")