Ngoài AmiBroker, AmiQuote cũng hỗ trợ mô hình đối tượng OLE giúp bạn có thể tự động hóa các thao tác như tải dữ liệu, thêm/xóa mã chứng khoán, và nhập dữ liệu vào AmiBroker. AmiQuote hoạt động theo kiến trúc SDI (Single Document Interface) nên chỉ có một lớp chính là Document.
Contents
Tạo đối tượng AmiQuote.Document
Bạn có thể khởi tạo đối tượng bằng một trong các cách sau:
js
Copy code
- // JScript
- AQ = new ActiveXObject(“AmiQuote.Document”);
- // VB/VBScript
- Set AQ = CreateObject(“AmiQuote.Document”);
- // AFL (trong AmiBroker, dùng với caution)
- AQ = CreateObject(“AmiQuote.Document”);
Cấu trúc Đối tượng AmiQuote.Document
Phương pháp (Methods):
| Phương thức | Chức năng |
| AddSymbols(symbols) | Thêm danh sách mã vào danh sách tải (dạng chuỗi, cách nhau bằng dấu phẩy) |
| RemoveSymbols(symbols) | Xóa mã khỏi danh sách tải |
| RemoveAllSymbols() | Xóa toàn bộ danh sách |
| GetSymbolsFromAmiBroker() | Tự động lấy mã từ AmiBroker |
| Download() | Bắt đầu tải dữ liệu |
| Import() | Nhập dữ liệu đã tải vào AmiBroker |
| Open(fileName) | Mở tệp dự án AmiQuote (.aqh) |
| Save() | Lưu dự án hiện tại |
| SaveAs(fileName) | Lưu dự án với tên khác |
| MoveWindow(x, y, width, height) | Di chuyển cửa sổ AmiQuote |
Thuộc tính (Properties):
| Thuộc tính | Mô tả |
| DownloadInProgress | True nếu quá trình tải đang diễn ra |
| ImportInProgress | True nếu đang nhập dữ liệu |
| Source | Nguồn dữ liệu (ví dụ: Yahoo, Google, v.v.) |
| From | Ngày bắt đầu tải (dưới dạng số nguyên: YYYYMMDD) |
| To | Ngày kết thúc tải (dưới dạng số nguyên: YYYYMMDD) |
| AutoImport | True nếu được thiết lập để tự động nhập dữ liệu sau khi tải |
| AllSessions | True để bao gồm cả phiên giao dịch ngoài giờ |
| Interval | Khoảng thời gian: 1 – daily, 2 – weekly, 3 – monthly,… |
| RunEvery | Tần suất chạy tự động (nếu có lập lịch) |
| TargetFolder | Thư mục đích để lưu dữ liệu tải xuống |
Ví dụ tự động tải dữ liệu và nhập vào AmiBroker
js
Copy code
- AQ = new ActiveXObject(“AmiQuote.Document”);
- AQ.RemoveAllSymbols();
- AQ.AddSymbols(“AAPL,MSFT,GOOG”);
- AQ.Source = 0; // 0: Yahoo Finance (tuỳ vào thiết lập hệ thống)
- AQ.From = 20230101;
- AQ.To = 20250701;
- AQ.AutoImport = true;
- if (AQ.Download()) {
- while (AQ.DownloadInProgress) WScript.Sleep(500);
- if (!AQ.ImportInProgress) AQ.Import();
- }
Ghi chú quan trọng
- AmiQuote không hỗ trợ đa tài liệu như AmiBroker, nên không có tập hợp Documents.
- Các thao tác thường được sử dụng trong script theo lô (batch) để tự động tải và nhập dữ liệu hàng ngày.
- Chỉ nên điều khiển AmiQuote từ bên ngoài, không nhúng trong AFL.
Kết luận
Với mô hình OLE Automation, bạn có thể:
- Lập lịch tải dữ liệu tự động mỗi ngày
- Viết script để thực hiện kiểm tra ngược sau khi nhập dữ liệu
- Tích hợp vào quy trình xử lý dữ liệu tài chính phức tạp