Vnstock Logo

Tích hợp AmiBroker

Cập nhật lần cuối:

Thảo luận

Mục lục

Minh hoạ khả năng nạp dữ liệu từ Vnstock Pipeline cho AmibrokerMinh hoạ khả năng nạp dữ liệu từ Vnstock Pipeline cho Amibroker

Tích Hợp AmiBroker

Lưu ý: Khả năng trích xuất và tích hợp AmiBroker bắt đầu được hỗ trợ từ phiên bản vnstock_pipeline v2.3.2 (phát hành ngày 01/08/2026).

Hệ thống cung cấp cơ chế trích xuất toàn bộ cơ sở dữ liệu ra định dạng chuẩn tương thích hoàn toàn với AmiBroker, hỗ trợ khung thời gian ngày và phút. Đặc biệt, tính năng nạp tự động sẽ tự động hoá 100% quá trình tạo cấu hình và nạp dữ liệu thông qua giao thức OLE1 vào thẳng phần mềm AmiBroker.

Yêu cầu bắt buộc để nạp dữ liệu tự động
  • Phiên bản AmiBroker: Hoạt động ổn định trên AmiBroker 6.0 trở lên. Bắt buộc phải cài đặt bản 32-bit vì thư viện giao tiếp của Windows chỉ tương thích với kiến trúc 32-bit của phần mềm này.
  • Hệ Điều Hành: Tính năng nạp tự động chỉ hoạt động trên hệ điều hành Windows.
  • Thư viện Python: Cần cài đặt gói pywin32 bằng lệnh: pip install pywin32.
  • Trạng thái phần mềm: Ứng dụng AmiBroker phải đang được mở sẵn trên máy tính.

1. Thiết Lập Cơ Sở Dữ Liệu Ban Đầu (Bắt Buộc)

Dù bạn sử dụng tính năng nạp tự động (OLE) hay nhập liệu thủ công, bạn đều cần phải tạo sẵn một cơ sở dữ liệu (Database) trong AmiBroker. Đặc biệt đối với dữ liệu khung phút (Intraday), bạn phải thiết lập đúng thông số thời gian, nếu không biểu đồ sẽ hiển thị sai (ví dụ: gộp tất cả nến phút thành 1 nến ngày duy nhất).

Bước 1: Tạo cơ sở dữ liệu mới Vào menu File -> Database... Mở thiết lập Database trong AmiBrokerMở thiết lập Database trong AmiBroker

Bước 2: Cấu hình thông số thời gian cơ sở Nhấn nút Create để tạo mới (ví dụ thư mục AmiBroker_VN30_5M).

Lưu ý quan trọng: Tại mục Base time interval, bạn bắt buộc phải chọn 1 Minute nếu muốn xem dữ liệu phút. Tạo Database mới và thiết lập Base time intervalTạo Database mới và thiết lập Base time interval

Sau khi tạo xong, hãy để nguyên phần mềm AmiBroker đang mở để các câu lệnh ở bước tiếp theo có thể giao tiếp và nạp dữ liệu.


2. Bảng Thông Số Lệnh Cấu Hình

Để tối ưu hóa quá trình xuất và nạp dữ liệu, bạn có thể tùy chỉnh lệnh thông qua các cờ lệnh sau:

Tùy chọnMô tả & Cách dùngVí dụ
--auto-importKích hoạt nạp dữ liệu tự động thẳng vào AmiBroker (Yêu cầu AmiBroker đang mở).--auto-import
--amibroker-dirĐường dẫn gốc tới thư mục cài đặt phần mềm AmiBroker. Hệ thống tự động tìm ở thư mục mặc định, chỉ dùng cờ này khi bạn cài ở vị trí khác.--amibroker-dir "D:\AmiBroker"
--amibroker-dbĐường dẫn chính xác tới cơ sở dữ liệu muốn nạp. Bắt buộc dùng nếu bạn mở nhiều cơ sở dữ liệu cùng lúc để tránh nạp nhầm.--amibroker-db "C:\Users\admin\AmiBroker_VN30"
--intervalKhung thời gian xuất dữ liệu (VD: 1D, 1m, 5m, 15m). Mặc định là ngày (1D). Cần đồng bộ với khoảng thời gian cơ sở trong AmiBroker.--interval 5m
--export-typesChỉ định các loại dữ liệu phụ muốn xuất, phân tách bằng dấu phẩy. Hỗ trợ: adjusted, raw, index, foreign, proprietary.--export-types "adjusted,foreign"
--outputĐổi thư mục chứa các tệp dữ liệu xuất ra. Mặc định là AmibrokerData.--output ./MyData
--fullLệnh quét toàn bộ lịch sử giá trị từ trước đến nay để thiết lập cơ sở dữ liệu mới.--full
--start-date / --end-dateTrích xuất giới hạn trong một khoảng thời gian nhất định theo định dạng năm-tháng-ngày.--start-date 2024-01-01

3. Các Tình Huống Sử Dụng Cụ Thể

Chỉ với một cờ --auto-import, hệ thống sẽ tự động thực hiện 3 bước:

  1. Sinh dữ liệu theo cấu trúc chuẩn.
  2. Tự động khởi tạo tệp định dạng chuẩn của vnstock và chép thẳng vào thư mục cài đặt định dạng của AmiBroker.
  3. Bơm trực tiếp dữ liệu vào AmiBroker đang mở, biểu đồ sẽ cập nhật ngay lập tức.

Lệnh cập nhật dữ liệu hàng ngày:

Shell
python -m vnstock_pipeline.cli export amibroker --auto-import

Lệnh cập nhật dữ liệu phút: Yêu cầu đã tải trước dữ liệu bằng lệnh tải theo phút.

Shell
python -m vnstock_pipeline.cli export amibroker --interval 5m --auto-import

Lệnh chỉ định cụ thể thư mục cài đặt và cơ sở dữ liệu: Trong trường hợp bạn có nhiều cơ sở dữ liệu hoặc cài đặt phần mềm ở ổ đĩa khác, bạn nên dùng các tham số chỉ định thư mục để tránh lỗi nạp nhầm.

Shell
python -m vnstock_pipeline.cli export amibroker --interval 1m --auto-import --amibroker-dir "D:\AmiBroker" --amibroker-db "C:\Users\thinh-vu\AmiBroker_VN30"

4. Xuất Các Loại Dữ Liệu Nâng Cao

Mặc định, lệnh xuất chỉ đẩy dữ liệu giá đã điều chỉnh và chỉ số thị trường để tránh làm nhiễu dữ liệu. Nếu bạn muốn đẩy thêm dữ liệu giá chưa điều chỉnh, giao dịch khối ngoại hay tự doanh, hãy dùng tham số --export-types.

Hệ thống sử dụng kỹ thuật mã ảo2 để bảo toàn dữ liệu. Khối ngoại được gán hậu tố _F, tự doanh gán _P, và dữ liệu chưa điều chỉnh gán _RAW.

  • Cột mua được nạp vào giá cao nhất.
  • Cột bán nạp vào giá thấp nhất.
  • Cột mua/bán ròng nạp vào giá đóng cửa.
  • Khối lượng tổng nạp vào khối lượng giao dịch.
Shell
python -m vnstock_pipeline.cli export amibroker --export-types "adjusted,foreign,proprietary" --auto-import

5. Trích Xuất Và Nạp Thủ Công

Nếu tính năng nạp tự động (OLE) bị lỗi (thường do vấn đề phân quyền Administrator trên Windows), hoặc bạn chạy máy chủ (Ubuntu/Mac) để copy dữ liệu sang máy tính khác, bạn sẽ cần thao tác nạp dữ liệu thủ công.

Trước tiên, chạy lệnh xuất dữ liệu nhưng bỏ cờ --auto-import:

Shell
# Trích xuất toàn bộ lịch sử giá nhiều năm để thiết lập cơ sở dữ liệu mới:
python -m vnstock_pipeline.cli export amibroker --full --output ./AmibrokerData

# Trích xuất theo khoảng ngày tùy chọn:
python -m vnstock_pipeline.cli export amibroker --start-date 2024-01-01 --end-date 2026-07-29 --output ./AmibrokerData

Sau khi xuất dữ liệu thành công, bạn tiến hành nạp thủ công vào AmiBroker theo trình tự sau:

Bước 1: Chọn tính năng nạp dữ liệu Vào menu File -> Import ASCII... Chọn tính năng Import ASCIIChọn tính năng Import ASCII Bước 2: Chọn tệp và định dạng vnstock Điều hướng tới thư mục chứa dữ liệu vừa xuất ra (VD: AmibrokerData). Tại mục Files of type, hãy chọn đúng định dạng của vnstock (ví dụ: vnstock Intraday (*.csv) hoặc vnstock OHLCV (*.csv)) đã được chép tự động vào thư mục Formats của AmiBroker, sau đó chọn các tệp CSV cần nạp. Chọn file CSV xuất ra từ Vnstock và định dạng vnstock tương ứngChọn file CSV xuất ra từ Vnstock và định dạng vnstock tương ứng

6. Chế Độ Theo Dõi Trực Tiếp

Dựa trên nhu cầu theo dõi thị trường trong phiên, hệ thống cung cấp tính năng theo dõi trực tiếp. Đây là một quá trình chạy ẩn, liên tục tải dữ liệu phút của một danh sách mã cố định và nạp thẳng vào phần mềm với độ trễ tối ưu.

Cách 1: Định nghĩa danh sách bằng tệp văn bản Tạo một tệp văn bản với mỗi mã chứng khoán trên một dòng:

Text
ACB
TCB
MBB
FPT

Cách 2: Định nghĩa danh sách trong tệp cấu hình

TOML
[watchlists]
my_list = ["ACB", "TCB", "MBB", "FPT"]

Kích hoạt theo dõi trực tiếp:

Shell
# Dùng tệp văn bản (với chu kỳ cập nhật mỗi 60 giây, dữ liệu 1 phút)
python -m vnstock_pipeline.cli run live_amibroker --watchlist file:my_watchlist.txt --interval 1m --refresh-rate 60

# Dùng danh sách trong cấu hình
python -m vnstock_pipeline.cli run live_amibroker --watchlist my_list --interval 1m --refresh-rate 60
Lưu ý khi chạy trực tiếp
  • 🚀 Khuyên dùng: Không nên theo dõi toàn thị trường bằng chế độ này vì sẽ gây quá tải tài nguyên máy tính và phần mềm bị treo. Hãy duy trì danh sách dưới 50 mã để đảm bảo phần mềm không bị giật lag mỗi khi làm mới dữ liệu.
  • Nhấn Ctrl+C trên cửa sổ dòng lệnh để thoát khỏi chế độ theo dõi một cách an toàn.

7. Khắc Phục Sự Cố

Dưới đây là các lỗi thường gặp và cách xử lý:

  1. Lỗi Quyền Truy Cập: Hệ thống in cảnh báo vàng do không thể ghi tệp định dạng vào thư mục cài đặt của AmiBroker.

    • Giải pháp thủ công: Tìm các tệp định dạng (có đuôi .format) được sinh ra cùng với dữ liệu trong thư mục xuất. Chép thủ công chúng vào thư mục Formats của AmiBroker. Các lần sau hệ thống sẽ vẫn hoạt động bình thường.
  2. Lỗi Kết Nối OLE: Xảy ra khi phần mềm đang được chạy bằng quyền quản trị viên cao nhất, nhưng dòng lệnh của bạn lại chạy bằng người dùng thường.

    • Giải pháp: Mở cửa sổ dòng lệnh bằng quyền quản trị viên cao nhất (Run as Administrator), hệ thống mới có thể giao tiếp được với AmiBroker. Hoặc xem Mục 5 để tiến hành Import thủ công.
  3. Lỗi Chỉ Hiện Một Nến Dữ Liệu: Nếu dữ liệu tải phút báo thành công nhưng AmiBroker chỉ hiển thị một nến duy nhất với thời gian 00:00:00.

    • Giải pháp: Làm theo hướng dẫn ở Mục 1 để cấu hình lại khoảng thời gian cơ sở về 1 phút. Trong phần thiết lập trong ngày (Intraday settings), bỏ chọn mục lọc ngoài giờ giao dịch (Filter outside trading hours). Cuối cùng, bắt buộc phải tắt hoàn toàn phần mềm AmiBroker và mở lại để xóa bộ nhớ đệm.

Footnotes

  1. OLE (Object Linking and Embedding): Một công nghệ của Microsoft cho phép các ứng dụng trên Windows giao tiếp và điều khiển lẫn nhau tự động.

  2. Mã ảo (Pseudo-Tickers): Kỹ thuật tạo ra các mã chứng khoán giả mạo để mượn cấu trúc biểu đồ giá của phần mềm nhằm biểu diễn các dữ liệu khác biệt như khối lượng giao dịch hoặc thống kê tự doanh.

Thảo luận

Đang tải bình luận...