Vnstock Logo

Cấp quyền và xử lý lỗi

Mở rộng

Mục lục

Tính năng đang thử nghiệm

Tính năng trên trang này đang trong giai đoạn phát triển thử nghiệm và chưa ổn định. Bạn dùng được để tìm hiểu và chạy thử, nhưng tên hàm hay công cụ, tham số và cấu trúc kết quả có thể còn đổi giữa các bản phát hành, cách tính và cách xử lý cũng có thể còn được hiệu chỉnh.

Hãy đối chiếu kết quả với một cách tính độc lập trước khi đưa vào quy trình nghiên cứu, và ghim phiên bản thư viện trong dự án để mã đang chạy không tự đổi theo bản mới.

Kiểm tra trạng thái quyền

vq.entitlement() chạy trên máy, không trừ lượt. Khoá backtest là phần riêng của mô-đun này:

Python
import vnstock_quant as vq

state = vq.entitlement()
print(state["tier"], state["features"])      # features gồm bt_basic, bt, bt_portfolio, bt_optimize khi được mở
print(state["backtest"]["trial"])           # None nếu cấp của bạn không bị đếm lượt backtest riêng
print(state["backtest"]["quota"])           # quy mô tối đa của một lần chạy
KhoáÝ nghĩa
featuresNhóm tính năng đang mở của cả thư viện; phần backtest là bt_basic, bt, bt_portfolio, bt_optimize
backtest.trialLượt backtest trong ngày: daily, used, remaining, max_symbols, resets_at
backtest.quotaQuy mô một lần chạy: portfolio_symbols, sweep_tasks, monte_carlo_paths
backtest.budgetMã hạn mức riêng của mô-đun backtest trên máy chủ; chỉ dùng để đối chiếu khi cần hỗ trợ

Bản Cộng đồng và các cấp quyền sử dụng

Từ Bronze, bạn dùng được mọi tính năng của mô-đun. Các cấp quyền sử dụng chỉ khác nhau ở số lượt mỗi ngày và quy mô một lần chạy.

Chưa đăng nhậpCộng đồngBronzeSilverGoldenDiamond
Backtest một mã, bảng quy tắc, kiểm tra nhìn trước tương laicócócócócócó
Chỉ báo dùng được trong bảng quy tắc101056565656
Danh mục nhiều mã, dò tham số, walk-forward, Monte Carlo——cócócócó
Lượt tính mỗi ngày352001.0005.000không đếm riêng
Số mã mỗi lần chạy danh mục111030100400
Số tổ hợp mỗi lần dò tham số hoặc walk-forward——1001.00010.00050.000
Số đường mỗi lần chạy Monte Carlo——1.0005.00020.000100.000

Bản Cộng đồng dùng được 10 chỉ báo trong bảng quy tắc, cùng nhóm chỉ báo mở cho bản Cộng đồng của vnstock_quant: sma, ema, rsi, macd, stoch, bbands, atr, obv, vwap, pivots. Bảng quy tắc dùng chỉ báo khác thì bị từ chối với QUANT_TIER_REQUIRED trước khi chạy, và không bị trừ lượt. Tín hiệu bạn tự tính bằng thư viện khác rồi đưa vào qua signals hay entries/exits thì không bị giới hạn này.

Cách đếm:

  • Số lượt phụ thuộc vào hàm và quy mô lần chạy. run tính một lượt; run_portfolio tính một lượt mỗi mã; sweep và walk_forward tính theo số tổ hợp. Các hàm tính toán khác gồm monte_carlo, eval_rule_dsl, check_rule_dsl_causality và detect_limit_events. Xem số lượt còn lại trong vq.entitlement()["backtest"] trước khi chạy.
  • Các hàm chỉ đọc không trừ lượt: list_brokers, list_profiles, list_presets, list_indicators, catalog, schema, vq.entitlement, vq.build_info.
  • check_causality (kiểm tra hàm tín hiệu Python của bạn) và deflated_sharpe_ratio không trừ lượt.
  • Lượt làm mới mỗi ngày theo giờ Việt Nam. trial["resets_at"] ghi thời điểm làm mới.
  • Lượt backtest là dòng ngân sách riêng do máy chủ đặt cho mô-đun này, không trừ vào 30 phép tính mỗi ngày của chỉ báo và chỉ số tài chính. Với tài khoản đã đăng nhập, mọi lần chạy còn được tính vào hạn mức sử dụng chung của tài khoản, như các thư viện khác của Vnstock.
  • Diamond không bị đếm lượt riêng cho mô-đun này, chỉ tính vào hạn mức sử dụng chung.

Số lượt mỗi ngày có thể được điều chỉnh mà không cần phát hành lại thư viện. Số đúng cho máy của bạn là số trong vq.entitlement()["backtest"].

Khi hết lượt, thư viện báo QUANT_TRIAL_EXHAUSTED. Khi một lần chạy vượt quy mô của cấp, thư viện báo QUANT_QUOTA_LIMIT kèm cấp chạy được quy mô đó.


Xử lý lỗi

Mọi lỗi của mô-đun thuộc cây VnstockQuantError của vnstock_quant (xem Cài đặt và thiết lập). Mỗi lỗi có:

  • code: mã ổn định, dùng để rẽ nhánh trong mã của bạn;
  • message: thông điệp tiếng Việt;
  • kind: nhóm lỗi;
  • retryable: có nên thử lại không;
  • action: việc nên làm tiếp (nếu có).
Python
from vnstock_quant import backtest as bt
from vnstock_quant.errors import EntitlementError, VnstockQuantError

try:
    res = bt.sweep(df, tasks, symbol="FPT")
except EntitlementError as e:          # TierRequiredError, QuotaExceededError
    print(e.code, e.message, e.action)
except VnstockQuantError as e:
    print(e.code, e.message)

Lớp ngoại lệ

LớpKhi nào
InputDataErrorDữ liệu nến, tín hiệu hoặc cột theo phiên sai
CausalityViolationError (con của InputDataError)Bảng quy tắc dùng chỉ báo đọc dữ liệu tương lai
InvalidParameterErrorTham số, hồ sơ, biểu phí, chế độ khớp lệnh không hợp lệ
TierRequiredErrorCấp chưa mở tính năng, hoặc bảng quy tắc dùng chỉ báo ngoài bản Cộng đồng
QuotaExceededErrorHết lượt backtest trong ngày, hoặc một lần chạy vượt quy mô của cấp
AuthError, UnsupportedErrorKhoá, thiết bị, máy chủ cấp quyền; bản đã hết hạn hoặc bị ngừng

Mã lỗi

codeÝ nghĩaCách xử lý
QUANT_INPUT_DATADữ liệu thiếu cột ngày, ngày không đọc được, số phần tử tín hiệu hoặc cột theo phiên (entry_limit, entry_stop, exit_stop, exit_tags, target_weights) khác số phiên, các mã của danh mục lệch ngàySửa dữ liệu đầu vào
QUANT_INVALID_PARAMETERTham số không hỗ trợ, giá trị không hợp lệ, chọn nhiều cách tính khối lượng, chế độ khớp lệnh đã gỡ (tradingview, amibroker), khai corporate_actions trên giá đã điều chỉnh hoặc thiếu symbol trong danh mục nhiều mã, risk_per_trade_pct mà không có mức dừng, rebalance dùng với hồ sơ phái sinhĐọc message, sửa tham số
QUANT_UNKNOWN_PROFILEprofile không có trong list_profiles()Dùng một hồ sơ có sẵn
QUANT_UNKNOWN_BROKERbroker không có trong list_brokers()Dùng một mã có sẵn, hoặc khai fee
QUANT_CAUSALITY_VIOLATIONBảng quy tắc dùng ichimoku hoặc vpChọn chỉ báo khác
QUANT_TIER_REQUIREDCấp hiện tại chưa mở nhóm tính năng này (ví dụ Cộng đồng gọi sweep), hoặc bảng quy tắc dùng chỉ báo ngoài 10 chỉ báo của bản Cộng đồngXem cấp cần có trong message, hoặc đăng ký gói ở cấp phù hợp
QUANT_TRIAL_EXHAUSTEDĐã dùng hết lượt trong ngàyChờ tới thời điểm làm mới (vq.entitlement()["backtest"]["trial"]["resets_at"])
QUANT_QUOTA_LIMITMột lần chạy vượt quy mô của cấp: số mã, số tổ hợp, số đường Monte CarloGiảm quy mô, hoặc dùng cấp ghi trong message

Lỗi từ lớp xác thực dùng chung của hệ sinh thái mang mã VNSTOCK_AUTH_..., ví dụ khi khoá API không hợp lệ hoặc thiết bị vượt giới hạn. Các lỗi này thuộc EntitlementError và có action hướng dẫn cụ thể.

Đừng chia nhỏ việc để tránh hạn mức

Khi gặp QUANT_QUOTA_LIMIT hay QUANT_TRIAL_EXHAUSTED, đừng chia một lần dò tham số thành nhiều lần nhỏ để chạy tiếp. Nếu bạn dùng trợ lý AI, hãy yêu cầu nó báo lại lỗi cho bạn thay vì tự tìm đường vòng.