Mục lục bài viết
- Bằng chứng và phạm vi
- Hình minh họa
- Quy trình
- Nguồn gốc và phần có thể kiểm chứng
- Đặc tả thuật toán đề xuất
- Volume thêm thông tin ở đâu?
- Ví dụ số và trường hợp thất bại
- Thực thi và quản trị vị thế
- Kiểm định để tách câu chuyện khỏi kết quả
- Sai lầm thường gặp
- Checklist thực hành
- Câu hỏi thường gặp
- Nguồn nghiên cứu
Bằng chứng và phạm vi
Công thức nền được đối chiếu với tài liệu nền tảng và nhà cung cấp biểu đồ. Bộ lọc kết hợp, chuẩn hóa slope và ngưỡng percentile dưới đây do nhóm nghiên cứu đề xuất. Không có backtest mới hoặc tuyên bố lợi nhuận cho tổ hợp chỉ báo.
Quy trình thực hành
- Chuẩn hóa dữ liệuĐồng bộ OHLC, benchmark và thời điểm khả dụng.
- Tính featureATR, slope, ADX và RS theo công thức đã khóa.
- Kiểm tra warmupThiếu dữ liệu trả NA; không giả định bằng 0.
- Lọc bối cảnhDùng snapshot trước signal của detector gốc.
- Đo giá trị tăng thêmSo từng filter và tương tác volume ngoài mẫu.
Nguồn gốc và phần có thể kiểm chứng
ATR đo biên độ có xét gap và không mang hướng. [1] ADX đo độ mạnh xu hướng, còn +DI/−DI bổ sung hướng. [2] Relative strength ở đây là tỷ lệ một tài sản với benchmark. [3] RSI là oscillator tính từ biến động của chính tài sản, không phải phép so benchmark này.
Các feature trả lời những câu hỏi khác nhau: khoảng stop có lớn so với biến động thông thường; hướng dài hạn đang tăng hay giảm; thị trường có đang di chuyển có xu hướng; tài sản có vượt benchmark không. Không nên cộng chúng thành điểm “chắc thắng” nếu chưa kiểm tra tương quan và đóng góp riêng.
Đặc tả thuật toán đề xuất
TR[t]=max(H−L,|H−C[t−1]|,|L−C[t−1]|). ATR14 khởi tạo bằng mean 14 TR đầu, sau đó ATR[t]=(13ATR[t−1]+TR[t])/14. Đề xuất nATR=100ATR/C khi C>0. Percentile pATR so nATR hiện tại với 252 giá trị quá khứ trước nó; thiếu warmup thì trả NA, không lấp bằng 0.
MA slope đề xuất: s=(SMA50[t]−SMA50[t−10])/(10ATR14[t]); đơn vị là ATR mỗi nến. Với ATR=0 trả NA. Độ dốc dương không đảm bảo giá đang trên MA; giữ hai feature riêng. Một phép đo phần trăm MA thay ATR là biến thể khác.
DMI: UpMove=H[t]−H[t−1], DownMove=L[t−1]−L[t]. +DM=UpMove khi UpMove>DownMove và >0, ngược lại 0; −DM đối xứng. Làm trơn Wilder RMA14 cho DM và TR, +DI=100RMA(+DM)/ATR, −DI tương tự. DX=100|+DI−−DI|/(+DI+−DI), ADX=RMA14(DX). Khi mẫu số 0, đề xuất DX=0 sau warmup; giữ chính sách seed cố định.
RS[t]=P[t]/B[t], với B>0. Hiệu suất tương đối n phiên: rel_n=RS[t]/RS[t−n]−1. Không xếp hạng bằng RS tuyệt đối vì giá danh nghĩa khác nhau. Đồng bộ P và B tại timestamp đã có dữ liệu, không dùng close thị trường đóng muộn hơn để lọc lệnh ở thị trường đóng sớm.
Trong đặc tả đề xuất này, ATR bằng 0 hoặc chưa có dữ liệu thì DI, DX và ADX trả NA, không chia cho 0. Quy ước DX=0 chỉ áp khi đã warm-up hợp lệ, ATR dương và cả hai thành phần định hướng bằng 0.
after close t, save immutable feature snapshot:
nATR=100*ATR14[t]/C[t]
pATR=count(past_252_nATR<=nATR)/252
slope=(SMA50[t]-SMA50[t-10])/(10*ATR14[t])
rel20=(P[t]/B[t])/(P[t-20]/B[t-20])-1
# Bộ lọc LONG đề xuất, dùng snapshot t-1 cho setup phát ở close t:
context_ok = C[t-1]>SMA50[t-1] and slope[t-1]>0.02
context_ok &= ADX14[t-1]>=20 and rel20[t-1]>0
context_ok &= 0.20<=pATR[t-1]<=0.80
# Filter chỉ cho phép detector gốc xét signal; không tự phát lệnh.
Volume thêm thông tin ở đâu?
ATR và ADX không đo khối lượng. Khi thêm RVOL vào một breakout, hãy giữ lớp volatility/trend cố định để đo giá trị tăng thêm của volume. Volume lớn và ATR lớn có thể xuất hiện cùng một sự kiện, nên nhiều feature đồng ý chưa chắc là nhiều nguồn thông tin độc lập.
Một thiết kế gọn chạy detector giá, rồi thêm từng feature bối cảnh, sau đó mới thử tương tác với RVOL. Nếu lọc pATR loại toàn bộ phiên tin tức nhưng cũng bỏ các breakout lớn, cần báo cáo cả lợi ích giảm drawdown và phần lợi nhuận bỏ lỡ.
Ví dụ số và trường hợp thất bại
Ví dụ tự tạo: giá P tăng 100→110 trong 20 phiên, benchmark B tăng 200→210. RS đi từ 0,5 lên 0,52381; rel20=4,7619%, khác chênh lệch lợi suất 5 điểm phần trăm. ATR=2,5 cho nATR=2,273%. SMA50 tăng 103→105 trong 10 phiên nên slope=0,08 ATR/nến. Với ADX=28, pATR=0,60 và C=110>SMA50=105, bộ lọc đề xuất đạt.
Trường hợp dễ hiểu sai: P giảm 100→95 còn B giảm 200→180. rel20=5,5556% dương dù tài sản lỗ 5%. Nếu MA50=100 và slope âm, filter long từ chối. ADX cao trong một xu hướng giảm cũng không tạo tín hiệu mua. Hai ví dụ là kiểm tra công thức và logic, không phải giao dịch lời/lỗ thực tế.
Thực thi và quản trị vị thế
Bộ feature không có entry, stop hoặc exit độc lập. Khi ghép với hai đáy, VCP hay breakout, giữ nguyên quy tắc giao dịch của detector đó; filter chỉ quyết định đủ bối cảnh hay không. Muốn dùng ATR đặt stop 2ATR thì cần thêm một chiến lược cụ thể và kiểm định riêng.
Căn chỉnh dữ liệu quan trọng hơn tăng số chỉ báo: lưu timezone, phiên, updated_at, độ trễ feed và chính sách as-of join. Không forward-fill benchmark vô hạn qua ngày nghỉ khác lịch. Với relative strength dài hạn, chọn nhất quán price return hoặc total return; không trộn một bên có cổ tức với một bên không.
Kiểm định để tách câu chuyện khỏi kết quả
So sánh một baseline duy nhất với từng filter, giữ chi phí và sizing không đổi. Báo cáo thay đổi số lệnh, expectancy, drawdown và độ phủ theo regime. Ngưỡng ADX20, slope0,02 và percentile20–80 đều là tham số đề xuất; chọn trên tập phát triển và khóa trước tập cuối.
Đối chiếu ATR/ADX của thư viện với chuỗi tính tay có gap, inside bar, tied moves và warmup; khác seed có thể khác nhiều nến đầu. Kiểm tra thêm dữ liệu tương lai không đổi feature lịch sử. Với RS, thử một cặp thị trường có giờ đóng khác để phát hiện look-ahead trong phép ghép timestamp.
Sai lầm thường gặp
RS dương nghĩa giá tăng
Tài sản giảm ít hơn benchmark vẫn có relative strength tăng.
Chỉ báo chồng lấn được đếm như độc lập
MA slope, ADX và momentum có thể cùng phản ánh một nhịp giá.
Benchmark đóng cửa muộn
Dùng close chưa biết tại lúc quyết định tạo thông tin tương lai dù ngày trên lịch giống nhau.
Checklist trước khi dùng phương pháp
Tự đánh dấu khi đã kiểm tra trên dữ liệu của bạn. Trạng thái lưu trong trình duyệt này; đây không phải chứng nhận chiến lược có lãi.
Câu hỏi thường gặp
Có dùng nATR cho futures giá âm không?
Không theo công thức ATR/C này. Dùng ATR theo tick hoặc quy mô hợp đồng với định nghĩa riêng; không lấy trị tuyệt đối rồi coi ý nghĩa giống hệt.
Relative strength này có phải RS Rating của IBD không?
Không. Đây là tỷ lệ với một benchmark và thay đổi theo thời gian; một điểm xếp hạng proprietary hoặc percentile universe là phép đo khác.
Nguồn nghiên cứu
Các nguồn dưới đây hỗ trợ phần định nghĩa hoặc bằng chứng được ghi bên cạnh. Mã giả, ví dụ minh họa và tham số đề xuất trong bài cần được kiểm định riêng.
- Average True Range — TradingViewTradingView. Công thức True Range, làm trơn và ý nghĩa biến động. Đối chiếu: .
- Average Directional Index — TradingViewTradingView. ADX và thành phần directional movement; không cung cấp edge cho filter đề xuất. Đối chiếu: .
- Price Relative / Relative Strength — ChartSchoolStockCharts. Tỷ lệ giá tài sản/benchmark; không sao chép các chart ví dụ. Đối chiếu: .
Đọc tiếp theo phương pháp
Lưu ý rủi ro
Nội dung phục vụ giáo dục và thiết kế nghiên cứu, không phải lời khuyên tài chính. Backtest là mô phỏng lịch sử, không bảo đảm hiệu quả tương lai và không đặt lệnh giao dịch thật. Các phương pháp trong thư viện không mặc nhiên là tính năng đã có trong ứng dụng. Xem phương pháp tính và trung tâm học.
Kiểm tra quy tắc trước khi dùng vốn thật
Đối chiếu khả năng hỗ trợ của ứng dụng, dữ liệu và từng giao dịch mô phỏng; các detector nâng cao có thể cần triển khai riêng.
Tải Backtest trên App Store