Chiến lược hành động giá dựa trên dải Bollinger

Tác giả:ChaoZhang, Ngày: 2023-12-20 14:03:52
Tags:

img

Tổng quan

Tên của chiến lược này là Bollinger Band-based Price Action Strategy. Nó tích hợp phân tích hành động giá và Bollinger Bands để tạo ra các tín hiệu giao dịch dựa trên đánh giá điều kiện hợp chất.

Nguyên tắc chiến lược

Chiến lược này đầu tiên tính toán các đường ray trên và dưới của Bollinger Bands, và sau đó đánh giá liệu đường K cuối cùng có phá vỡ đường ray trên hoặc dưới không. Đồng thời, nó cũng đánh giá liệu thực thể của đường K cuối cùng chỉ là một nửa thực thể đường K trước đó. Khi cả hai điều kiện được đáp ứng, một tín hiệu giao dịch được phát hành.

Cụ thể, chiến lược sử dụng tình huống khi các thực thể đường K màu đỏ trở nên nhỏ hơn, chỉ đạt đến một nửa của thực thể đường K trước đó trong một xu hướng giảm, cùng với giá đóng cửa cuối cùng của đường K phá vỡ đường sắt dưới Bollinger Band như một tín hiệu mua. Ngược lại, nó sử dụng tình huống khi các thực thể đường K màu xanh trở nên nhỏ hơn, chỉ đạt đến một nửa của thực thể đường K trước đó trong một xu hướng tăng, cùng với giá đóng cửa cuối cùng của đường K phá vỡ đường sắt trên Bollinger Band như một tín hiệu bán.

Phân tích lợi thế

Chiến lược này kết hợp các chỉ số kỹ thuật và phân tích hành vi giá, có thể lọc hiệu quả các đột phá sai. Đồng thời, nó chỉ phát ra tín hiệu tại các điểm uốn cong, tránh giao dịch lặp đi lặp lại trong thời gian xu hướng. Ngoài ra, chiến lược sử dụng các đặc điểm của sự co lại của thực thể đường K để khóa điểm uốn cong sau khi điều chỉnh nhỏ. Những lợi thế này có thể cải thiện sự ổn định và lợi nhuận của chiến lược.

Phân tích rủi ro

Rủi ro chính của chiến lược này nằm trong việc cài đặt tham số không đúng của Bollinger Bands và thất bại đột phá. Nếu các tham số của Bollinger Bands được đặt quá lớn hoặc quá nhỏ, sẽ xảy ra những đánh giá sai. Ngoài ra, ngay cả khi giá vượt qua các đường ray trên hoặc dưới của Bollinger Bands, nó có thể là một đột phá sai và không thể hình thành một sự đảo ngược xu hướng thực sự. Tất cả những rủi ro này đều có thể dẫn đến thua lỗ giao dịch của chiến lược. Để giảm rủi ro này, các tham số của Bollinger Bands có thể được điều chỉnh phù hợp, hoặc các chỉ số khác có thể được thêm vào để xác minh kết hợp.

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

Chiến lược này có thể được tối ưu hóa trong các khía cạnh sau:

  1. Tối ưu hóa các tham số Bollinger Band để nắm bắt xu hướng và biến động hiệu quả hơn.

  2. Thêm stop loss di chuyển để khóa lợi nhuận và quản lý rủi ro.

  3. Kết hợp các chỉ số khác như MACD, RSI để xác minh để lọc các tín hiệu sai.

  4. Thêm các thuật toán học máy, đào tạo mô hình với dữ liệu lớn, và tối ưu hóa các thông số chiến lược và trọng lượng chỉ số một cách năng động.

Kết luận

Chiến lược này kết hợp thành công hành động giá và Bollinger Bands, đạt được lợi nhuận tương đối cao với rủi ro thấp. Nó chỉ phát ra tín hiệu tại các điểm chính, tránh sự can thiệp của tiếng ồn. Thông qua tối ưu hóa liên tục các tham số và tiêu chí lọc, chiến lược này dự kiến sẽ đạt được alpha ổn định hơn. Nó cung cấp một mẫu đáng tin cậy cho thực hành giao dịch định lượng.


/*backtest
start: 2022-12-13 00:00:00
end: 2023-12-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// main codebody taken from Trader Noro - Noro's Crypto Pattern for H1
// Intraday strategy- Exit at EOD at all cost

strategy(title = "Price Action + Bollinger Strategy ",overlay=true)
bar = close > open ? 1 : close < open ? -1 : 0
body = abs(close - open)
avgbody = sma(body, 100)

//calculate simple moving average bollinger bands
b_sma = input(21,minval=1,title=" SMA candle")
b_sma_no_of_deviations = 2.1
b_sma_signal = sma(close, b_sma)
b_sma_deviation = b_sma_no_of_deviations * stdev(close, b_sma)
b_sma_upper= b_sma_signal + b_sma_deviation
b_sma_lower= b_sma_signal - b_sma_deviation

up1 = body < body[1] / 2 and bar[1]==1 and bar == -1 and close[1] > b_sma_upper   
dn1 = body < body[1] / 2 and bar[1]==-1 and bar == 1 and close[1] < b_sma_lower  
up2 = false
dn2 = false
up2 := (up1[1] or up2[1]) and close < close[1]
dn2 := (dn1[1] or dn2[1]) and close > close[1]
plotarrow(up1 or up2 ? 1 : na, colorup = color.black, colordown = color.black, transp = 0)
plotarrow(dn1 or dn2 ? -1 : na, colorup = color.black, colordown = color.black, transp = 0)

strategy.entry("Buy", true, when = dn1)
strategy.exit("exit", "Buy", profit = 3, loss = 1.5)

strategy.entry("Short", false, when = up1)
strategy.exit("exit", "Short", profit = 3, loss = 1.5)



Thêm nữa