Chiến lược đột phá dao động Bollinger Bands

Tác giả:ChaoZhang, Ngày: 2023-11-01 16:45:54
Tags:

img

Tổng quan

Chiến lược này kết hợp Bollinger Bands và chỉ số Aroon để kiếm lợi nhuận từ dao động và đột phá trong thị trường biến động. Nó hoạt động tốt trong thị trường xu hướng dao động, có thể vào kịp thời sau khi đột phá và đặt dừng lỗ và lấy điều kiện lợi nhuận để thoát khỏi các vị trí đúng cách.

Chiến lược logic

Chiến lược chủ yếu sử dụng hai chỉ số để xác định các cơ hội giao dịch và điểm thoát.

Đầu tiên, Bollinger Bands. Nó bao gồm một dải giữa, một dải trên và một dải dưới. Dải giữa là một trung bình di chuyển đơn giản của giá đóng trong n giai đoạn. Dải trên là dải giữa + k độ lệch chuẩn. Dải dưới là dải giữa - k độ lệch chuẩn. Một bước đột phá lên của dải giữa từ dải dưới báo hiệu bước vào dài. Một bước đột phá xuống của dải giữa từ dải trên báo hiệu bước vào ngắn. Chiến lược sử dụng Bollinger Bands để xác định các điểm cơ hội giữa xu hướng dao động, đi vào xung quanh các bước đột phá của dải giữa.

Thứ hai, chỉ số Aroon. Nó phản ánh sức mạnh tương đối của giá cao nhất và thấp nhất trong n giai đoạn. Aroon có thể xác định xu hướng và cơ hội. Khi Aroon Up line cao hơn ngưỡng, nó chỉ ra xu hướng tăng. Khi Aroon Down line cao hơn ngưỡng, nó chỉ ra xu hướng giảm. Chiến lược sử dụng Aroon Up để xác nhận xu hướng tăng và Aroon Down để xác định dừng lỗ.

Kết hợp hai chỉ số, chiến lược đi dài khi Bollinger đột phá xảy ra và Aroon Up cao hơn ngưỡng. Nó đóng vị trí khi dừng lỗ được kích hoạt hoặc Aroon Up giảm xuống dưới giá trị đặt.

Ưu điểm

  1. Kết hợp nhiều chỉ số cải thiện độ chính xác. Chỉ số duy nhất dễ bị nhiễu thị trường. Sự kết hợp của Bollinger Bands và Aroon có thể lọc ra các tín hiệu sai.

  2. Bollinger Bands có khả năng xác định xu hướng mạnh mẽ và có thể phát hiện các cơ hội đột phá ngắn hạn. Aroon đánh giá xu hướng dài hạn để tránh giao dịch quá mức trong các thị trường khác nhau.

  3. Kiểm soát rủi ro thích hợp. Đặt lỗ dừng và Aroon Down kiểm soát rủi ro giảm giá. Định kích thước vị trí cũng giới hạn mỗi lỗ giao dịch.

  4. So với các chiến lược theo xu hướng, chiến lược này hoạt động tốt hơn trong các thị trường dao động.

Rủi ro

  1. Bollinger Bands có thể không chính xác. Các sự kiện thị trường đột ngột có thể vô hiệu hóa Bollinger Bands.

  2. Các thông số Aroon cần tối ưu hóa. Các thị trường khác nhau cần điều chỉnh các thông số Aroon để có kết quả tốt nhất.

  3. Stop loss quá chặt gây ra các kích hoạt lặp đi lặp lại.

  4. Tránh thị trường xu hướng mạnh. Chiến lược phù hợp với thị trường dao động. Nó hoạt động kém trong thị trường xu hướng mạnh.

Tối ưu hóa

  1. Tối ưu hóa các thông số Bollinger, sử dụng adaptive Bollinger Bands. Cho phép điều chỉnh động các thông số để linh hoạt hơn.

  2. Tối ưu hóa các thông số Aroon động. Các tài sản và khung thời gian khác nhau cần các thông số Aroon khác nhau. Nghiên cứu tối ưu hóa động.

  3. Thêm các bộ lọc như RSI để tránh mua quá mức / bán quá mức.

  4. Sử dụng máy học để tối ưu hóa dừng lỗ. Đào tạo thuật toán có thể tìm ra các phương pháp dừng lỗ tốt hơn để giảm thiểu các kích hoạt lặp lại.

  5. Kết hợp với khối lượng như OBV để tránh đột phá sai. Các chỉ số khối lượng có thể ngăn chặn các tín hiệu đột phá Bollinger sai.

Kết luận

Nhìn chung, đây là một chiến lược giao dịch dao động điển hình. Nó xác định các cơ hội giao dịch bằng cách kết hợp Bollinger Bands và Aroon, có khả năng tận dụng các dao động thị trường ngắn hạn. Với việc dừng lỗ, quản lý rủi ro và tối ưu hóa tham số thích hợp, nó phù hợp với các thị trường dao động. Nhưng tối ưu hóa và kiểm soát rủi ro là cần thiết để tránh áp dụng nó trong thị trường xu hướng. Với những cải tiến hơn nữa, nó có thể trở thành một chiến lược lượng rất thực tế.


/*backtest
start: 2023-10-24 00:00:00
end: 2023-10-28 21:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © relevantLeader16058

//@version=4
// strategy(shorttitle='Bollinger bands And Aroon Scalping',title='Bollinger bands And Aroon Scalping (by Coinrule)', overlay=true, initial_capital = 1000, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 30, commission_type=strategy.commission.percent, commission_value=0.1)

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2020, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false       // create function "within window of time"


// BB inputs and calculations
lengthBB = input(20, minval=1)
src = input(close, title="Source")
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
basis = sma(src, lengthBB)
dev = mult * stdev(src, lengthBB)
upper = basis + dev
lower = basis - dev
offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)


lengthAr = input(288, minval=1)
AroonUP = 100 * (highestbars(high, lengthAr+1) + lengthAr)/lengthAr
AroonDown = 100 * (lowestbars(low, lengthAr+1) + lengthAr)/lengthAr


Confirmation = input(90, "Aroon Confirmation")
Stop = input(70, "Aroon Stop")

Bullish = crossunder (close, basis)
Bearish = crossunder (close, upper)

//Entry 

strategy.entry(id="long", long = true, when = Bullish and AroonUP > Confirmation and window())

//Exit

strategy.close("long", when = Bearish or AroonUP < Stop and window())




Thêm nữa