Vnstock Logo

Chuyển đổi từ vnstock_ta

Mở rộng

Mục lục

Agent Guide Notebook minh hoạ

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:

Shell
# 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:

Python
# 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 Indicator

Mọ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_ta 1.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êng adx, cột ADXR đổi độ trễ và đổi tên thành ADXR_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ểu traditional, woodie, demark; mức S3, S4, R3, R4 thay đổi.
    • psar: bản cũ bỏ qua tham số af và 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).
Lưu ý đối chiếu hệ thống

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 thi138,5 ms5,3 msNhanh hơn 25,9 lần
Quản lý bộ nhớTạo nhiều đối tượng DataFrame tạmSử 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 GILNhả GIL trong lõi RustPhầ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àngTrá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:

Python
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

  1. Cài đặt môi trường mới: Cài đặt vnstock_quant vào môi trường ảo của dự án.
  2. Cập nhật Import: Đổi from vnstock_ta import Indicator thành from vnstock_quant import Indicator.
  3. 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ạ).
  4. 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.
  5. Dọn dẹp môi trường: Gỡ bỏ phụ thuộc vnstock-ta khỏi tệp requirements.txt hoặc pyproject.toml.

Đọc tiếp