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.
Tính toán kênh Bollinger để xác định hướng xu hướng thị trường
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
Nhập giao dịch theo hướng kênh khi xác nhận xu hướng
Sử dụng trung bình động để lọc để tránh tín hiệu sai
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ẻ.
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í.
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.
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.
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.
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ả.
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.
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.
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.
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)