Chiến lược Breakout Double Bollinger Bands là một chiến lược theo xu hướng. Nó sử dụng các dải trên và dưới của Dải Bollinger để đánh giá xu hướng giá và thiết lập các vị trí dài khi giá vượt qua Dải Bollinger bên trong và đóng các vị trí khi giá giảm xuống dưới Dải Bollinger bên ngoài.
Chiến lược đầu tiên tính toán trung bình động và độ lệch chuẩn trong một khoảng thời gian nhất định. Sau đó nó xây dựng hai Bollinger Bands bằng cách sử dụng trung bình động ± một độ lệch chuẩn cho các dải bên trong và trung bình động ± 1,5 độ lệch chuẩn cho các dải bên ngoài.
Khi giá phá vỡ trên dải bên trong trên, nó cho thấy rằng thị trường đang bắt đầu một cuộc chạy tăng và đi dài. Khi giá giảm xuống dưới dải bên trong dưới, nó cho thấy sự khởi đầu của một thị trường gấu và đi ngắn.
Lợi nhuận thoát ra cho các vị trí dài là khi giá giảm xuống dưới dải bên ngoài dưới. Lợi nhuận thoát ra cho các vị trí ngắn là khi giá vượt qua dải bên ngoài trên.
Chiến lược cũng thiết lập lệnh dừng lỗ, lấy lợi nhuận và lệnh dừng lỗ sau.
Chiến lược Breakout Double Bollinger Bands có những lợi thế sau:
Chiến lược Breakout Double Bollinger Bands cũng có một số rủi ro:
Để giải quyết những rủi ro này, các thông số có thể được điều chỉnh, thêm các bộ lọc bổ sung hoặc theo dõi các vụ đột phá theo tay để giảm rủi ro.
Chiến lược Breakout Double Bollinger Bands có thể được tối ưu hóa theo nhiều cách:
Chiến lược Breakout Double Bollinger Bands tổng thể đánh giá những thay đổi về giá so với Bollinger Bands đối với các mục nhập thời gian trong một cách tiếp cận theo xu hướng điển hình. Chiến lược đặt mục tiêu lợi nhuận bằng cách sử dụng các băng tần kép và các cơ chế thoát khoa học để kiểm soát rủi ro. Với các thông số tối ưu và kiểm soát rủi ro, nó có thể đạt được kết quả tốt.
/*backtest start: 2023-12-17 00:00:00 end: 2023-12-24 00:00:00 period: 15m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("BB Strat",default_qty_type = strategy.percent_of_equity, default_qty_value = 100,currency="USD",initial_capital=100, overlay=true) l=input(title="length",defval=100) pbin=input(type=float,step=.1,defval=.25) pbout=input(type=float,step=.1,defval=1.5) ma=sma(close,l) sin=stdev(ma,l)*pbin sout=stdev(ma,l)*pbout inu=sin+ma inb=-sin+ma outu=sout+ma outb=-sout+ma plot(inu,color=lime) plot(inb,color=lime) plot(outu,color=red) plot(outb,color=yellow) inpTakeProfit = input(defval = 0, title = "Take Profit", minval = 0) inpStopLoss = input(defval = 0, title = "Stop Loss", minval = 0) inpTrailStop = input(defval = 0, title = "Trailing Stop Loss", minval = 0) inpTrailOffset = input(defval = 0, title = "Trailing Stop Loss Offset", minval = 0) useTakeProfit = inpTakeProfit >= 1 ? inpTakeProfit : na useStopLoss = inpStopLoss >= 1 ? inpStopLoss : na useTrailStop = inpTrailStop >= 1 ? inpTrailStop : na useTrailOffset = inpTrailOffset >= 1 ? inpTrailOffset : na longCondition = close>inu and rising(outu,1) exitlong = (open[1]>outu and close<outu) or crossunder(close,ma) shortCondition = close<inb and falling(outb,1) exitshort = (open[1]<outb and close>outb) or crossover(close,ma) strategy.entry(id = "Long", long=true, when = longCondition) strategy.close(id = "Long", when = exitlong) strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitlong) strategy.entry(id = "Short", long=false, when = shortCondition) strategy.close(id = "Short", when = exitshort) strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset, when=exitshort)