Chiến lược theo dõi xu hướng đường băng Bollinger hai đường trung bình động

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

img

Tổng quan

Chiến lược này sử dụng sự kết hợp của Bollinger Bands và đường trung bình động để xác định xu hướng và nhập cảnh. Nó tận dụng khả năng nhận dạng xu hướng của Bollinger Bands và hiệu ứng lọc của đường trung bình động để xác định hiệu quả các hướng xu hướng thị trường để nhập vào thị trường xu hướng.

Chiến lược logic

  1. Tính toán kênh Bollinger để xác định hướng xu hướng thị trường

    • Sử dụng cao nhất cao nhất và thấp nhất thấp để tính các băng tần kênh
    • Phạm vi giữa kênh là trung bình của cao và thấp
    • Xác định hướng xu hướng dựa trên vị trí giá trong kênh
  2. Tính toán kích thước cơ thể nến tăng cho tín hiệu dừng lỗ và đảo ngược

    • Cơ thể nến tăng là giá trị tuyệt đối của đóng trừ mở
    • Tính toán trung bình thời gian N của các cơ thể nến, so sánh với cơ thể hiện tại để dừng lỗ và đảo ngược
  3. Nhập giao dịch theo hướng kênh khi xác nhận xu hướng

    • Các mục nhập dài gần dải dưới trong xu hướng tăng
    • Các mục nhập ngắn gần dải trên trong xu hướng giảm
  4. Sử dụng trung bình động để lọc để tránh tín hiệu sai

    • Tính toán giá trung bình động N-period
    • Tạo tín hiệu chỉ trên các bước đột phá trung bình động

Ưu điểm

  1. Xác định xu hướng có hệ thống kết hợp các dải và đường trung bình động

    Các dải xác định rõ ràng các kênh giá và hướng xu hướng. Đường trung bình động lọc tiếng ồn. Sự kết hợp cho phép phát hiện xu hướng mạnh mẽ miễn nhiễm với các cú sốc thị trường lẻ tẻ.

  2. Kiểm soát rủi ro hiệu quả thông qua việc dừng mất mát cơ thể nến

    So sánh cơ thể nến hiện tại với mức trung bình lịch sử phát hiện sự đảo ngược xu hướng để dừng lỗ và giảm vị trí.

  3. Các quy tắc nhập lượng và dừng lỗ rõ ràng

    Các yêu cầu nghiêm ngặt về đường dẫn và đường dẫn chuyển động để nhập. quy tắc dừng mất mát kích thước thân nến. làm cho toàn bộ hệ thống nhập và ra rõ ràng và có hệ thống.

Phân tích rủi ro

  1. Mức lỗ tiềm năng trên thị trường giới hạn phạm vi

    Giá dao động xung quanh các dải có thể gây ra tổn thất nhỏ lặp đi lặp lại.

  2. Stop loss sớm trong xu hướng mạnh

    Việc khôi phục ngắn hạn có thể kích hoạt dừng trong xu hướng tăng / giảm mạnh.

  3. tín hiệu sai từ điều chỉnh tham số kém

    Các thông số trung bình di chuyển và băng tần không tối ưu có thể gây ra tín hiệu giả.

Cơ hội gia tăng

  1. Tối ưu hóa thời gian xem lại trung bình di chuyển

    Điều chỉnh thời gian để giảm mượt để phát hiện thay đổi xu hướng nhanh hơn.

  2. Kiểm tra các cơ chế dừng lỗ thay thế

    Đánh giá các điểm dừng phía sau, dừng ATR v.v. để tìm ra hệ thống tối ưu.

  3. Kết hợp các mô hình học máy

    Đào tạo các mô hình trên dữ liệu lịch sử rộng rãi để tăng dự đoán xu hướng và tín hiệu.

Kết luận

Chiến lược này cân bằng việc xác định xu hướng và kiểm soát rủi ro bằng cách sử dụng Bollinger Bands và đường trung bình động. Cách tiếp cận định lượng có hệ thống với các quy tắc nhập / ra rõ ràng cho phép nắm bắt phần thưởng hiệu quả với rủi ro được kiểm soát.


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


//@version=2
strategy("Noro's Bands Scalper Strategy v1.3", shorttitle = "Scalper str 1.3", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
takepercent = input(0, defval = 0, minval = 0, maxval = 1000, title = "take, %")
needct = input(false, defval = false, title = "Counter-trend entry")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period")
needbb = input(true, defval = true, title = "Show Bands")
needbg = input(true, defval = true, title = "Show Background")
src = close

//PriceChannel 1
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

//Distance
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma
hd1 = center + distsma / 2
ld1 = center - distsma / 2

//Trend
trend = close < ld and high < center ? -1 : close > hd and low > center ? 1 : trend[1]

//Lines
colo = needbb == false ? na : black
plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band")
plot(center, color = colo, linewidth = 1, transp = 0, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band")

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)

//Body
body = abs(close - open)
smabody = ema(body, 30)
candle = high - low

//Engulfing
min = min(open, close)
max = max(open, close)
bar = close > open ? 1 : close < open ? -1 : 0
upeng = bar == 1 and bar[1] == -1 and min >= min[1] and max <= max[1] ? 1 : 0
dneng = bar == -1 and bar[1] == 1 and min >= min[1] and max <= max[1] ? 1 : 0

//Signals
up7 = trend == 1 and ((bar == -1 and bar[1] == -1) or (body > smabody and close < open)) ? 1 : 0
dn7 = trend == 1 and bar == 1 and bar[1] == 1 and close > strategy.position_avg_price * (100 + takepercent) / 100 ? 1 : 0
up8 = trend == -1 and bar == -1 and bar[1] == -1 and close < strategy.position_avg_price * (100 - takepercent) / 100 ? 1 : 0
dn8 = trend == -1 and ((bar == 1 and bar[1] == 1) or (body > smabody and close > open)) ? 1 : 0

if up7 == 1 or up8 == 1 
    strategy.entry("Long", strategy.long, needlong == false ? 0 : trend == -1 and needct == false ? 0 : na)

if dn7 == 1 or dn8 == 1
    strategy.entry("Short", strategy.short, needshort == false ? 0 : trend == 1 and needct == false ? 0 : na)

Thêm nữa