Câu Lệnh Mẫu
Cập nhật lần cuối:
Thảo luậnMục lục
Giới thiệu
Trang này cung cấp các lệnh và đoạn mã mẫu sẵn sàng sử dụng cho các tác vụ thường gặp. Kể từ phiên bản v2.3.1, vnstock_pipeline cung cấp giao diện dòng lệnh (CLI) mạnh mẽ, thay thế cho việc viết script Python khởi tạo các lớp dữ liệu thủ công như trước đây.
Hai chế độ tải dữ liệu:
- Chế độ dòng lệnh (CLI) - Chạy trực tiếp từ Terminal/Command Prompt. Phù hợp cho kiểm thử nhanh hoặc các tác vụ lập lịch đơn giản.
- Chế độ chạy script (Python) - Dùng Python (
subprocess+sys.executable) để điều phối chạy liên tiếp nhiều lệnh CLI, bắt lỗi và ghi nhật ký tự động. Phù hợp cho vận hành thực tế.
Dữ liệu tải về sẽ được tự động lưu trữ tại vị trí do bạn thiết lập trong Config Hub (pipeline.toml). Mặc định là thư mục ~/.vnstock/stock_db/ (trên Mac/Linux) hoặc %USERPROFILE%\.vnstock\stock_db\ (trên Windows). Xem hướng dẫn Lưu trữ dữ liệu tối ưu để cấu hình.
1. Dữ liệu Giá Lịch Sử (OHLCV)
Tải dữ liệu giá cổ phiếu theo chu kỳ ngày kết thúc phiên. Dữ liệu bao gồm giá mở, cao, thấp, đóng, và khối lượng giao dịch.
Bằng Lệnh CLI
Lấy dữ liệu OHLCV hàng ngày (EOD) cho toàn bộ rổ cổ phiếu (ví dụ: HOSE).
# Lấy dữ liệu ngày gần nhất cho sàn HOSE
python -m vnstock_pipeline.cli run ohlcv --group HOSE --mode daily
# Khởi tạo dữ liệu lịch sử cực dài (bù lấp khoảng trống nếu có)
python -m vnstock_pipeline.cli run ohlcv --group VN30 --mode init
# Chỉ chạy lại các mã bị lỗi (đứt mạng) ở lần chạy trước
python -m vnstock_pipeline.cli run ohlcv --retry-errors2. Dữ liệu Khớp Lệnh (Trades)
Dữ liệu giao dịch thực tế xảy ra trong phiên giao dịch: từng lệnh khớp, thời gian, giá, khối lượng (dữ liệu Tick).
Bằng Lệnh CLI
Lưu dữ liệu khớp lệnh bằng định dạng Parquet để tối ưu dung lượng.
# Lấy dữ liệu khớp lệnh cuối ngày cho danh sách tự chọn
python -m vnstock_pipeline.cli run trades --tickers ACB,FPT,TCB --mode daily3. Bảng Giá (Quote)
Trạng thái giá của tất cả mã tại thời điểm hiện tại.
Bằng Lệnh CLI
# Chạy một lần duy nhất để lấy trạng thái hiện tại
python -m vnstock_pipeline.cli run quote --group VN100 --mode eod
# Cập nhật dữ liệu liên tục trong phiên giao dịch (mỗi 60s)
python -m vnstock_pipeline.cli run quote --group VN30 --mode live --interval 604. Dữ liệu Báo Cáo Tài Chính & Thống Kê
Lấy BCTC hoặc dòng tiền tổ chức (khối ngoại, tự doanh).
Bằng Lệnh CLI
# Lấy Báo cáo tài chính mới nhất cho rổ VN30
python -m vnstock_pipeline.cli run financial --group VN30
# Lấy thống kê giao dịch cuối ngày (thay thế trading_stats)
python -m vnstock_pipeline.cli run session-stats --group HOSE5. Mẫu script điều phối tự động
Khi bạn muốn kết hợp chạy tất cả các luồng dữ liệu (OHLCV, Trades, Financial, News) theo thứ tự hằng ngày một cách tự động, an toàn và không bị dừng tiến trình khi một phần tử gặp lỗi. Hãy lưu đoạn mã sau thành sync_market_data.py.
"""
Script điều phối - Chạy tự động nhiều tác vụ CLI hằng ngày.
Cách chạy: python sync_market_data.py
"""
import sys
import subprocess
import logging
from datetime import datetime
# Cấu hình logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger(__name__)
# Danh sách các tác vụ cần chạy cuối ngày
TASKS = [
("Build Rổ Thanh Khoản", ["universe", "build-liquidity", "--days", "50", "--top", "300"]),
("Đồng bộ OHLCV", ["run", "ohlcv", "--watchlist", "liquidity_auto", "--mode", "daily"]),
("Đồng bộ Khớp Lệnh Tick", ["run", "trades", "--watchlist", "liquidity_auto", "--mode", "daily"]),
("Đồng bộ Thống kê Giao dịch", ["run", "session-stats", "--watchlist", "liquidity_auto", "--mode", "daily"])
]
def run_cli_command(task_name: str, args: list):
"""Sử dụng subprocess để gọi lệnh CLI qua sys.executable (để giữ nguyên môi trường ảo)"""
cmd = [sys.executable, "-m", "vnstock_pipeline.cli"] + args
logger.info(f"Đang chạy tác vụ: {task_name}")
logger.info(f"Lệnh: {' '.join(cmd)}")
try:
# Chạy lệnh CLI
result = subprocess.run(cmd, check=True, capture_output=True, text=True)
logger.info(f"✅ Hoàn thành: {task_name}")
return True
except subprocess.CalledProcessError as e:
logger.error(f"❌ Lỗi ở tác vụ {task_name} (Exit code: {e.returncode})")
logger.error(f"Error Log: {e.stderr}")
return False
if __name__ == "__main__":
logger.info("=== BẮT ĐẦU ĐỒNG BỘ DỮ LIỆU CUỐI NGÀY ===")
success_count = 0
for name, args in TASKS:
if run_cli_command(name, args):
success_count += 1
logger.info("=== TỔNG KẾT ĐỒNG BỘ ===")
logger.info(f"Thành công: {success_count}/{len(TASKS)}")
if success_count < len(TASKS):
# Tùy chọn: Tự động chạy lại cho các tác vụ lỗi
logger.info("Đang kích hoạt chạy lại tác vụ lỗi...")
run_cli_command("Retry OHLCV Error", ["run", "ohlcv", "--retry-errors"])Chỉ cần cấu hình tiện ích Crontab (trên Linux/VPS) chạy file sync_market_data.py trên vào lúc 16:00 mỗi ngày để tự động chạy tiến trình cập nhật dữ liệu.
Thảo luận