Vnstock Logo

Từ vnstock_ta

Cộng đồng

Mục lục

Trang dùng chung với v0.5.0

Nội dung trang này giữ nguyên từ bản v0.5.0, chưa viết riêng cho free: ví dụ chạy được nếu tên hàm không đổi. Bản gốc: /docs/vnstock_quant/chuyen-doi/tu-vnstock-ta.

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ũ:

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

Python
# 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 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. 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_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. 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 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 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

  1. Cài vnstock_quant trong môi trường bạn dùng để kiểm tra mã.
  2. Đổi from vnstock_ta import Indicator thành from vnstock_quant import Indicator.
  3. Chạy lại mã và sửa các tham số bị báo không hợp lệ.
  4. 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ũ.
  5. Nếu không còn dùng gói cũ, gỡ vnstock-ta khỏi môi trường và tệp phụ thuộc của dự án.

Đọc tiếp