Chuyển đổi từ vnstock_ta
Mục lục
Khuyên dùng: Nên ưu tiên sử dụng Agent Guide để nạp môi trường cho AI Agent trên máy tính cục bộ. Tránh viết code thủ công hoặc dùng AI phiên bản web/Google Colab vì AI không có thông tin mới nhất về thư viện nên dễ viết sai cú pháp.
Tổng quan
Kể từ thế hệ 5 của hệ sinh thái Vnstock, thư viện vnstock_quant gộp và thay thế vnstock_ta. Việc chuyển đổi đơn giản: bạn chỉ cần đổi tên thư viện khi import. Lớp Indicator giữ nguyên cú pháp gọi của vnstock_ta: tên 58 phương thức chỉ báo, tên và giá trị mặc định của tham số, và tên cột đầu ra (trừ cột ADXR của adx, nay là ADXR_14). Tuy vậy, kết quả số không trùng hoàn toàn: một số chỉ báo cho số khác bản cũ vì đã sửa lỗi công thức hoặc đổi cách khởi tạo (xem mục 2), và tham số không hợp lệ nay báo lỗi thay vì bị thay bằng giá trị mặc định. Tốc độ xử lý cũng nhanh hơn nhờ lõi Rust (xem mục 3).
1. Thay đổi lệnh cài đặt và đường dẫn Import
Cài đặt gói mới
Gỡ bỏ gói cũ và cài đặt vnstock_quant từ kho phân phối chính thức của Vnstock:
# Gỡ bỏ bản cũ (nếu có)
pip uninstall -y vnstock-ta
# 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
Chỉ cần thay đổi một dòng duy nhất ở đầu tệp mã kịch bản của bạn:
# Cách viết cũ (thế hệ 4)
from vnstock_ta import Indicator
# Cách viết mới chuẩn mực (thế hệ 5)
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. Khắc phục lỗi công thức và kiểm định độ chính xác
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ỳ.
Trong vnstock_quant, toàn bộ thuật toán đã được viết lại bằng Rust và hiệu chỉnh chính xác:
- 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. So sánh hiệu năng thực tế (Benchmarks)
Kiểm thử đo lường thời gian thực thi 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 thực thi | 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 giao tính năng vẽ đồ thị
Trong phiên bản vnstock_ta 1.x, thư viện từng chứa lớp Plotter để vẽ biểu đồ tương tác. Tính năng này đã chính thức ngừng hỗ trợ (deprecated) từ ngày 31/08/2026 để giảm thiểu dung lượng gói cài đặt và tránh xung đột phụ thuộc môi trường.
Toàn bộ tác vụ trực quan hoá biểu đồ kỹ thuật được chuyển giao cho thư viện chuyên trách vnstock_ezchart:
from vnstock_ezchart import Chart
# Tạo biểu đồ phân tích kỹ thuật chuẩn mực từ DataFrame kết quả
chart = Chart(df)
chart.add_candlestick()
chart.add_indicator(macd, name="MACD")
chart.show()5. Danh mục kiểm tra chuyển đổi
- Cài đặt môi trường mới: Cài đặt
vnstock_quantvào môi trường ảo của dự án. - Cập nhật Import: Đổi
from vnstock_ta import Indicatorthànhfrom vnstock_quant import Indicator. - Kiểm tra tham số: Rà soát các tham số truyền vào hàm chỉ báo (thư viện mới sẽ phát hiện và báo lỗi ngay nếu có tham số lạ).
- Kiểm tra kết quả: Nếu mã của bạn dùng 16 chỉ báo đã sửa lỗi, chạy lại trên dữ liệu lịch sử để ghi nhận các ngưỡng mới.
- Dọn dẹp môi trường: Gỡ bỏ phụ thuộc
vnstock-takhỏi tệprequirements.txthoặcpyproject.toml.
Đọ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á 99 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.