Từ vnstock_ta
Mục lục
Tổng quan
vnstock_quant kế tục vnstock_ta từ thế hệ 5. Với mã dùng lớp Indicator, bạn đổi tên thư viện trong câu lệnh import; tên hàm và phần lớn tên cột vẫn giữ nguyên. Sau đó, hãy chạy lại các phép tính: một số chỉ báo đã đổi công thức hoặc cách khởi tạo, cột ADXR của adx đổi thành ADXR_14, và tham số không hợp lệ nay báo lỗi.
1. Cài gói mới và đổi import
Cài đặt gói mới
Cài vnstock_quant từ kho phát hành của Vnstock. Chỉ gỡ vnstock_ta khi môi trường này không còn mã cần dùng gói cũ:
# Cài đặt thư viện định lượng thế hệ mới
pip install -U --extra-index-url https://vnstocks.com/api/packages vnstock_quantĐổi tên Import trong mã nguồn
Đổi câu lệnh import trong các tệp đang dùng Indicator:
# Cách viết cũ (thế hệ 4)
from vnstock_ta import Indicator
# Cách viết với vnstock_quant
from vnstock_quant import IndicatorMọi đoạn mã gọi hàm bên dưới như ta = Indicator(df), ta.trend.sma(), ta.macd() hay ta.momentum.rsi() giữ nguyên cú pháp. Riêng kết quả số của một số chỉ báo sẽ khác bản cũ, xem mục 2.
2. Những kết quả có thể thay đổi
Trong phiên bản 1.x, vnstock_ta phụ thuộc vào gói Python pta_reload (fork từ pandas-ta). Qua quá trình đối chiếu với TA-Lib C 0.8.1 và nền tảng QuantConnect LEAN, dự án phát hiện nhiều chỉ báo trong phiên bản cũ bị sai lệch công thức hoặc khởi tạo sai chu kỳ.
Khi so sánh với vnstock_ta 1.x, các chỉ báo rơi vào ba nhóm sau:
- 32 chỉ báo không đổi: giá trị trùng
vnstock_ta1.x (sai lệch dưới 1e-9), trừ vài trường hợp đặc biệt như phiên có khoảng giá bằng 0 hoặc không có khối lượng:sma,ema,wma,hma,smma,alma,vwma,ichimoku,linreg,aroon,stoch,mom,roc,ao,willr,uo,bbands,kc,donchian,ui,true_range,cmf,ad,eom,mad,vwap,hl2,hlc3,ohlc4,midprice,increasing,decreasing. - 10 chỉ báo chỉ khác ở giai đoạn khởi động (warm-up period), sau đó trùng dần:
rsi,atr,adx,stochrsi,tsi,macd,fisher,massi,pvo,efi. Nguyên nhân là bản cũ khởi tạo đường trung bình khác cách của Wilder và TA-Lib. Ở đầu chuỗi, mức lệch có thể lớn (RSI lệch khoảng 18 điểm), rồi giảm dần: với chu kỳ 14, còn khoảng 1e-6 sau 200 phiên. Riêngadx, cột ADXR đổi độ trễ và đổi tên thànhADXR_14. - 16 chỉ báo đã sửa lỗi công thức, nên giá trị khác hẳn bản cũ:
cci: bản cũ thiếu ngoặc trong công thức nên giá trị mang độ lớn của giá; mọi ngưỡng ±100/±200 đặt trên CCI cũ cần đặt lại.kst: bản cũ nhân thừa 100.cg: bản cũ đảo ngược trọng số.nvi: bản cũ cộng phần trăm thay vì nhân.vp: bản cũ chia theo thời gian thay vì theo giá.pivots: sửa các kiểutraditional,woodie,demark; mức S3, S4, R3, R4 thay đổi.psar: bản cũ bỏ qua tham sốafvà khởi tạo bằng giá đóng cửa.supertrend: logic dải và hướng nay khớp TradingView.dm: bản cũ trả trung bình Wilder thay vì tổng Wilder (giá trị mới xấp xỉ giá trị cũ nhân chu kỳ).cmo: theo đúng định nghĩa của Chande.squeeze,squeeze_pro: cột động lượng khác; cờ ON/OFF/NO không đổi.obv: bản cũ lệch một hằng số bằng khối lượng phiên đầu.mfi: bản cũ tính phiên giá không đổi là dòng tiền âm.stdev,variance: nay chia cho n (tổng thể) thay vì n − 1 (mẫu).
Nếu mã phân tích của bạn đang so sánh số liệu với các kết quả xuất ra từ vnstock_ta 1.x, số liệu mới từ vnstock_quant có thể có sự khác biệt ở 16 chỉ báo nêu trên. Số liệu mới từ vnstock_quant đã được đối chiếu với TA-Lib C, dữ liệu kiểm thử LEAN hoặc định nghĩa gốc của tác giả chỉ báo.
3. Số đo hiệu năng tham khảo
Kiểm thử đo lường tốc độ xử lý toàn bộ 58 chỉ báo kỹ thuật trên chuỗi dữ liệu 5.000 phiên giao dịch:
| Tiêu chí đánh giá | vnstock_ta 1.x (Python) | vnstock_quant 0.1.x (Rust Core) | Mức độ cải thiện |
|---|---|---|---|
| Thời gian xử lý | 138,5 ms | 5,3 ms | Nhanh hơn 25,9 lần |
| Quản lý bộ nhớ | Tạo nhiều đối tượng DataFrame tạm | Sử dụng Flat Buffer vùng đệm liên tục | Ít đối tượng tạm hơn |
| Đa luồng (Concurrency) | Bị khoá bởi Python GIL | Nhả GIL trong lõi Rust | Phần dựng kết quả pandas vẫn giữ GIL; chuỗi ngắn chạy nhiều luồng chưa nhanh hơn |
| Độ ổn định tham số | Âm thầm thay đổi khi sai tham số | Báo lỗi kèm mã lỗi rõ ràng | Tránh lỗi ngầm trong thuật toán |
Số đo thời gian là số tham khảo, đo trên máy Apple M4 (10 nhân, 16 GB RAM), một luồng, ngày 06/10/2026; máy khác cho số khác.
4. Chuyển phần vẽ biểu đồ
vnstock_ta 1.x từng có lớp Plotter. vnstock_quant tập trung vào tính toán; để vẽ kết quả ở thế hệ 5, dùng thư viện vnstock_chart. Cách gọi hàm vẽ khác Plotter, nên hãy xem các loại biểu đồ và ví dụ kết hợp với vnstock thế hệ 5 trước khi sửa mã.
5. Danh mục kiểm tra chuyển đổi
- Cài
vnstock_quanttrong môi trường bạn dùng để kiểm tra mã. - Đổi
from vnstock_ta import Indicatorthànhfrom vnstock_quant import Indicator. - Chạy lại mã và sửa các tham số bị báo không hợp lệ.
- So sánh kết quả của những chỉ báo đã thay đổi trước khi tiếp tục dùng các ngưỡng cũ.
- Nếu không còn dùng gói cũ, gỡ
vnstock-takhỏi môi trường và tệp phụ thuộc của dự án.
Đọc tiếp
- Chỉ báo kỹ thuật — Hướng dẫn chi tiết 58 chỉ báo kỹ thuật.
- Chỉ số tài chính — Khám phá 100 chỉ số tài chính BCTC VAS mới được bổ sung.
- Đo lường rủi ro và hiệu suất — Đo lường rủi ro danh mục và thanh khoản Amihud.
- Kiểm định chất lượng & hiệu năng — Báo cáo đo kiểm hiệu năng và đối chứng số học với TA-Lib C.
