Chiến lược Bollinger Breakout Stop-loss

Tác giả:ChaoZhang, Ngày: 2023-10-27 16:50:24
Tags:

img

Tổng quan

Chiến lược này tạo ra các tín hiệu giao dịch dựa trên chỉ số Bollinger Bands và quản lý các vị trí bằng cách sử dụng stop-loss / take-profit. Nó theo dõi sự đột phá của các dải Bollinger Bands trên và dưới, đi dài khi giá vượt qua dải trên, đi ngắn khi giá vượt qua dải dưới và thoát khi giá vượt qua các dải ngược lại bằng lệnh stop-loss.

Chiến lược logic

Chiến lược này sử dụng các dải giữa, trên và dưới từ chỉ số Bollinger Bands. Dải giữa là đường trung bình động, dải trên là dải giữa cộng với 2 độ lệch chuẩn, và dải dưới là dải giữa trừ 2 độ lệch chuẩn.

Đầu tiên nó tính toán các dải Bollinger giữa, trên và dưới. Sau đó nó kiểm tra xem giá có phá vỡ trên dải trên hoặc dưới dải dưới. Nếu giá phá vỡ trên dải trên, nó sẽ dài. Nếu giá phá vỡ dưới dải dưới, nó sẽ ngắn. Ngoài ra nếu giá phá vỡ các dải ngược lại, nó sẽ thoát khỏi vị trí bằng lệnh dừng lỗ.

Cụ thể, chiến lược logic là:

  1. Tính toán Bollinger Bands giữa, trên và dưới
  2. Nếu giá phá vỡ trên dải trên, đi dài
  3. Nếu giá phá vỡ dưới dải dưới, đi ngắn
  4. Nếu đã mua, đóng mua khi giá phá vỡ dưới dải dưới
  5. Nếu đã mua ngắn, đóng ngắn khi giá vượt qua dải trên

Điều này cho phép bắt được xu hướng khi giá di chuyển lớn, trong khi hạn chế lỗ bằng cách sử dụng stop-loss.

Ưu điểm

  • Sử dụng Bollinger Bands cho tín hiệu nhập cảnh bắt được xu hướng sau khi phá vỡ
  • Các tín hiệu dài/ngắn rõ ràng, các quy tắc đơn giản
  • Chiến lược dừng lỗ giới hạn lỗ tối đa cho mỗi giao dịch
  • Parameter tunable để tối ưu hóa chiến lược

Rủi ro

  • Các giao dịch dừng lỗ nhỏ thường xuyên có thể ảnh hưởng đến tổng số P/L
  • Điều chỉnh tham số kém có thể gây ra quá nhiều tín hiệu hoặc bỏ lỡ giao dịch
  • Chỉ xem xét giá cả, không có chỉ số khác để xác nhận
  • Không có điều chỉnh stop-loss gần breakout có thể làm tăng lỗ

Có thể tối ưu hóa thông qua kết hợp các chỉ số, điều chỉnh các đơn vị dừng lỗ v.v.

Cơ hội gia tăng

  • Kết hợp các chỉ số khác như khối lượng, trung bình động để xác nhận tín hiệu
  • Tối ưu hóa các thông số Bollinger cho các thị trường khác nhau
  • Điều chỉnh khoảng cách dừng lỗ gần breakout để tránh quá nhạy cảm
  • Giao dịch chỉ sau khi xu hướng phát triển, giống như các quy tắc giao dịch rùa
  • Tự động tối ưu hóa các tham số thông qua các thuật toán học máy

Kết luận

Đây là một xu hướng tương đối đơn giản sau chiến lược dựa trên Bollinger Bands. Nó có thể nhanh chóng nắm giữ vị trí khi giá phá vỡ và sử dụng stop-loss để kiểm soát rủi ro. Nhưng chỉ dựa vào giá có thể gây ra những đánh giá sai, trong khi stop-loss nhạy cảm có thể làm tăng tần suất giao dịch. Chúng ta có thể cải thiện nó hơn nữa thông qua điều chỉnh tham số, kết hợp các chỉ số, điều chỉnh stop vv. Nhìn chung nó cung cấp một khuôn khổ giao dịch lượng đơn giản và đáng tin cậy.


/*backtest
start: 2023-09-26 00:00:00
end: 2023-10-26 00:00:00
period: 1h
basePeriod: 15m
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/
// © ROBO_Trading

//@version=5
strategy(title = "Bollinger Stop Strategy", shorttitle = "BBStop", overlay = true, default_qty_type = strategy.percent_of_equity, initial_capital = 10000, default_qty_value = 100, commission_value = 0.1)

//Settings
long = input(true)
short = input(true)
length = input.int(20, minval=1)
mult = input.float(2.0, minval=0.001, maxval=50)
source = input(close)
showbb = input(true, title = "Show Bollinger Bands")
showof = input(true, title = "Show Offset")
startTime = input(defval = timestamp("01 Jan 2000 00:00 +0000"), title = "Start Time", inline = "time1")
finalTime = input(defval = timestamp("31 Dec 2099 23:59 +0000"), title = "Final Time", inline = "time1")

//Bollinger Bands
basis = ta.sma(source, length)
dev = mult * ta.stdev(source, length)
upper = basis + dev
lower = basis - dev

//Show indicator
offset = showof ? 1 : 0
colorBasis = showbb ? color.gray : na
colorUpper = showbb ? color.blue : na
colorLower = showbb ? color.blue : na
colorBands = showbb ? color.blue : na
p0 = plot(basis, "Basis", color = colorBasis, offset = offset)
p1 = plot(upper, "Upper", color = colorUpper, offset = offset)
p2 = plot(lower, "Lower", color = colorLower, offset = offset)
fill(p1, p2, title = "Background", color = colorBands, transp = 90)

//Trading
truetime = true
if basis > 0 and truetime
    if long
        strategy.entry("Long", strategy.long, stop = upper, when = truetime)
    if short
        strategy.entry("Short", strategy.short, stop = lower, when = truetime)
    if long == false
        strategy.exit("Exit", "Short", stop = upper)
    if short == false
        strategy.exit("Exit", "Long", stop = lower)
if time > finalTime
    strategy.close_all()

Thêm nữa