Chiến lược giao thoa giữa Bollinger Bands và chỉ số Hull

Tác giả:ChaoZhang, Ngày: 2023-12-08 11:58:07
Tags:

img

Tóm lại

Chiến lược này tạo ra các tín hiệu giao dịch dựa trên sự chéo chéo giữa Bollinger Bands và chỉ số Hull. Nó đi dài khi chỉ số Hull vượt qua trên dải dưới của Bollinger Bands, và đi ngắn khi chỉ số Hull vượt qua dưới dải trên của Bollinger Bands. Chiến lược kết hợp chiến lược đột phá của Bollinger Bands và chiến lược theo xu hướng của chỉ số Hull để sử dụng lợi thế của cả hai.

Nguyên tắc

Chiến lược chủ yếu sử dụng sự chéo chéo giữa Bollinger Bands và chỉ số Hull để tạo ra các tín hiệu giao dịch.

Bollinger Bands bao gồm ba đường: đường giữa, đường trên và đường dưới. Đường giữa là đường trung bình động N ngày, trong khi đường trên và đường dưới là đường giữa ± độ lệch chuẩn. Nếu giá vượt qua đường trên, nó cho thấy cơ hội đột phá; nếu giá vượt qua đường dưới, nó cho thấy cơ hội gọi lại.

Chỉ số Hull là một chỉ số theo xu hướng. Nó sử dụng sự khác biệt giữa hai đường trung bình động cân của các giai đoạn khác nhau để xác định xu hướng hiện tại. Nếu đường trung bình động ngắn hơn đường trung bình dài, nó chỉ ra xu hướng tăng, và ngược lại.

Chiến lược này kết hợp các điểm mạnh của cả hai chỉ số. Khi chỉ số Hull vượt qua trên dải dưới của Bollinger Bands, giá cổ phiếu có thể đi vào xu hướng tăng, vì vậy đi dài. Khi chỉ số Hull vượt qua dưới dải trên, giá cổ phiếu có thể đi xuống, vì vậy đi ngắn.

Ưu điểm

  1. Kết hợp các điểm mạnh của Bollinger Bands và chỉ số Hull để làm cho tín hiệu giao dịch đáng tin cậy hơn.

  2. Sử dụng chỉ số Hull để xác định hướng xu hướng và Bollinger Bands để xác định mức hỗ trợ / kháng cự, tạo ra các tín hiệu chéo để cải thiện lợi nhuận.

  3. Các tham số của cả hai chỉ số có thể được tối ưu hóa cho các cổ phiếu của các chu kỳ khác nhau để mở rộng khả năng áp dụng.

Rủi ro và giải pháp

  1. Chiến lược này có thể tạo ra nhiều tín hiệu sai hơn trong các chuyển động giới hạn phạm vi, gây ra tổn thất. Các tham số có thể được tối ưu hóa hoặc các bộ lọc có thể được thêm để giảm tín hiệu sai.

  2. Giá có thể dao động mạnh mẽ, khiến cả hai chỉ số phát ra tín hiệu cùng một lúc. Đảm bảo trình tự tín hiệu để tránh đánh giá tín hiệu chéo sai. Xem xét thêm stop loss vào các lỗ kiểm soát.

  3. Chiến lược thiết lập kích thước vị trí trực tiếp đến 100%. Trong triển khai thực tế, kích thước vị trí cần phải được điều chỉnh để tránh tổn thất phóng đại do mở toàn bộ vị trí.

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

  1. Kiểm tra và tối ưu hóa các tham số của cả hai chỉ số để thích nghi với nhiều chu kỳ cổ phiếu hơn.

  2. Thêm các bộ lọc như khối lượng giao dịch hoặc biến động để tránh các tín hiệu sai trong quá trình hợp nhất.

  3. Tối ưu hóa chiến lược dừng lỗ bằng cách đặt lệnh dừng lỗ hoặc lệnh dừng giới hạn.

  4. Điều chỉnh các quy tắc định kích thước vị trí bằng cách thêm các điều kiện nhập lại để tránh gia tăng mất mát.

Kết luận

Chiến lược này kết hợp chiến lược breakout của Bollinger Bands và chiến lược theo xu hướng của chỉ số Hull bằng cách sử dụng các tín hiệu chéo giữa chúng để đạt được cả các hiệu ứng theo xu hướng và breakout. Chiến lược có khả năng thích nghi mạnh mẽ với cổ phiếu trung hạn và ngắn hạn do không có thay đổi cơ bản lớn. Nhưng các thông số, kích thước vị trí, chiến lược dừng lỗ vẫn cần tối ưu hóa trong quá trình triển khai thực tế để làm cho chiến lược mạnh mẽ hơn.


/*backtest
start: 2023-11-30 00:00:00
end: 2023-12-07 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=3
strategy(title="Strategy Hull Bollinger", shorttitle="Hull bollinger",overlay=true, calc_on_order_fills=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, overlay=false)

n=input(title="period",defval=3)


n2ma=2*wma(close,round(n/2))
nma=wma(close,n)
diff=n2ma-nma
sqn=round(sqrt(n))


n2ma1=2*wma(close[1],round(n/2))
nma1=wma(close[1],n)
diff1=n2ma1-nma1
sqn1=round(sqrt(n))


n1=wma(diff,sqn)
n2=wma(diff1,sqn)
c=n1>n2?green:red

i = input(1)
PP = close[i]

length1 = input(20, minval=1)
src = input(close, title="Source")
mult = input(2.0, minval=0.001, maxval=10, step=0.2)
basis = sma(src, length1)
dev = mult * stdev(src, length1)
upper = basis + dev
lower = basis - dev


TP = input(500) * 10
SL = input(500) * 10
TS = input(20) * 10
TO = input(10) * 10
CQ = 100

TPP = (TP > 0) ? TP : na
SLP = (SL > 0) ? SL : na
TSP = (TS > 0) ? TS : na
TOP = (TO > 0) ? TO : na

longCondition = crossover(n1,lower)
if (longCondition)
    strategy.entry("Long", strategy.long)


shortCondition = crossunder(n1,upper)
if (shortCondition)
    strategy.entry("Short", strategy.short)

strategy.exit("Close Short", "Short", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP, trail_offset=TOP)
strategy.exit("Close Long", "Long", qty_percent=CQ, profit=TPP, loss=SLP, trail_points=TSP, trail_offset=TOP)

Thêm nữa