Chiến lược này là một chiến lược theo dõi xu hướng dựa trên chỉ số Bollinger Bands. Nó sử dụng sự phá vỡ của Bollinger Bands trên đường ray xuống để xác định hướng của xu hướng và mở một vị trí tương ứng. Khi giá bắt đầu quay trở lại, nó sử dụng các điểm dừng theo dõi với khoảng thời gian động để thoát khỏi vị trí giữ và thực hiện lợi nhuận.
Chiến lược này sử dụng các chỉ số Bollinger Bands để xác định xu hướng. Bollinger Bands được xây dựng bằng cách tính toán chênh lệch tiêu chuẩn của giá để tạo ra xu hướng lên xuống. Khi giá phá vỡ đường đua lên, xu hướng được cho là bắt đầu lên; khi giá phá vỡ đường đua xuống, xu hướng được cho là bắt đầu xuống.
Các giao dịch được thực hiện theo các logic sau:
Tính toán đường ray trung tâm, đường ray trên và đường ray dưới của dải Brin.
Khi giá phá vỡ đường mòn, mở nhiều lệnh; khi giá phá vỡ đường mòn, mở đơn trống.
Sử dụng tracking stop loss để kiểm soát rủi ro, dừng lỗ khi giá bắt đầu giảm trở lại.
Một lần nữa, nó đã phá vỡ quỹ đạo của Brin và trở lại xu hướng.
Sử dụng dây Brin để xác định hướng xu hướng, và kết hợp với việc theo dõi động của dừng lỗ, có thể kiểm soát rủi ro hiệu quả.
Chiến lược này có những ưu điểm sau:
Sử dụng chỉ số Brin để đánh giá xu hướng, đơn giản và hiệu quả.
Sự kết hợp của break entry và trailing stop loss có tính năng nắm bắt xu hướng và kiểm soát rủi ro.
Cấu trúc mã rõ ràng, đơn giản, dễ hiểu và sửa đổi.
Các tham số ít hơn để tối ưu hóa.
Có thể sử dụng cho các giống khác nhau, linh hoạt.
Các nhà nghiên cứu cho biết, các nhà nghiên cứu đã tìm ra một số cách để có thể sử dụng các công cụ này.
Những rủi ro chính của chiến lược này là:
Các vùng Brin chỉ dựa trên các đặc tính thống kê, có nguy cơ phù hợp với đường cong.
Không thể phân biệt được sự mở rộng phạm vi và xu hướng thực sự, có thể bị đánh giá sai.
Điểm dừng là quá dày và có thể bị ảnh hưởng bởi biến động giá bình thường.
Không tính đến chi phí giao dịch.
Có thể là quá phù hợp.
Giải pháp tương ứng:
Tối ưu hóa tham số hoặc giới thiệu các tín hiệu xác thực chỉ số khác.
Tăng khả năng nhận diện rung động và đường dẫn.
Điều chỉnh điểm dừng động theo các chỉ số như ATR
Thêm phí, tính điểm trượt.
Tăng phạm vi thời gian phản hồi, xác minh nhiều thị trường.
Chiến lược này có thể được tối ưu hóa bằng cách:
Kiểm tra kết hợp của các chỉ số khác nhau.
Tăng khả năng nhận diện các biến động xu hướng.
Giới thiệu các tham số tối ưu hóa động của phương pháp học máy.
Chiến lược tối ưu hóa dừng lỗ dựa trên phản hồi.
Đánh giá và thêm chi phí giao dịch.
Hoạt động tối ưu hóa tham số không gian, tìm tham số tối ưu Settings ◦
Tăng cường quản lý tiền để kiểm soát rủi ro vị trí
Chiến lược này đánh giá xu hướng theo các chỉ số Brinband và theo dõi các điểm dừng để kiểm soát rủi ro, logic giao dịch tổng thể đơn giản và rõ ràng. Chiến lược có hiệu quả nắm bắt xu hướng tốt, nhưng có thể được cải thiện bằng cách giới thiệu nhiều chỉ số kỹ thuật, tham số tối ưu hóa và tính toán chi phí để làm cho chiến lược trở nên ổn định và đáng tin cậy hơn.
/*backtest
start: 2022-09-15 00:00:00
end: 2023-09-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="Bollinger Band Breakout", shorttitle = "BB Strategy",initial_capital=1000, default_qty_type = strategy.percent_of_equity, default_qty_value = 10, commission_type = strategy.commission.percent, commission_value = 0.3, max_bars_back = 1000, overlay=true)
// Inputs //
sma = input(20, minval=1)
mult = input(1.2, minval=0.001, maxval=50)
src = input(close)
// alert msg //
message_long_entry = input("long entry")
message_short_entry = input("short entry")
// Calculations //
basis = sma(close, sma)
dev = mult * stdev(close, sma)
upper = basis + dev
lower = basis - dev
// Backtest //
fromyear = input(2019, defval = 2019, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(1, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")
leverage = input(1, "Leverage")
term = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))
// PLOT //
plot(basis, color = color.gray, linewidth = 2)
lu = plot(upper, color = color.green, linewidth = 2)
ll = plot(lower, color = color.red, linewidth = 2)
fill(lu, ll, color = color.gray)
// Signals //
long = crossover(close, upper)
short = crossunder(close, lower)
// Strategy entry //
strategy.initial_capital = 50000
if (long and term)
strategy.entry("long", strategy.long, qty=strategy.initial_capital/close*leverage, when = long and barstate.isconfirmed, alert_message = message_long_entry)
if (short and term)
strategy.entry("short", strategy.short, qty=strategy.initial_capital/close*leverage, when = short and barstate.isconfirmed, alert_message = message_short_entry)
// strategy exit //
strategy.exit("long tsl", "long", loss = close*0.075 / syminfo.mintick, trail_points = close*0.05 / syminfo.mintick, trail_offset = close*0.005 / syminfo.mintick)
strategy.exit("short tsl", "short", loss = close*0.075 / syminfo.mintick, trail_points = close*0.05 / syminfo.mintick, trail_offset = close*0.005 / syminfo.mintick)