Tính Toán Thống Kê Cho Nhiều Chứng Khoán Với Hàm AddToComposite
Amibroker
Mục lục
1. Giới thiệu
Phần lớn các hàm AFL trong AmiBroker được thiết kế để thao tác trên một chứng khoán tại một thời điểm. Tuy nhiên, trong thực tế, nhiều nhà phân tích kỹ thuật lại cần tính toán trên toàn bộ thị trường hoặc một nhóm lớn mã chứng khoán. Khi đó, hai hàm đặc biệt như
RelStrength()
và
Foreign()
có thể giúp trích xuất dữ liệu từ mã chứng khoán khác, nhưng cách sử dụng này không hiệu quả khi cần thao tác với hàng trăm mã.
Giải pháp là sử dụng hàm
AddToComposite()
– một công cụ mạnh mẽ cho phép bạn tổng hợp dữ liệu từ nhiều mã chứng khoán vào một biểu tượng tổng hợp duy nhất, từ đó phân tích sâu hơn, xây dựng chỉ số tùy chỉnh, đo lường độ mạnh/yếu tương đối, hoặc thống kê các điều kiện thị trường.
2. Cơ chế hoạt động
2.1 Vấn đề truyền thống
Sử dụng
Foreign()
cho mỗi mã chứng khoán sẽ yêu cầu liệt kê từng tên mã một cách thủ công:
afl
Copy code
a = Foreign(“ABC”, “C”);
b = Foreign(“XYZ”, “C”);
// … lặp lại hàng trăm lần
Cách này vừa không linh hoạt vừa khó bảo trì.
2.2 Giải pháp với AddToComposite
Ý tưởng của AddToComposite rất đơn giản: bạn
tạo một mã chứng khoán tổng hợp
, lưu trữ kết quả tính toán vào đó qua
Scan
, và sau đó dùng biểu tượng này để hiển thị hoặc phân tích tiếp.
3. Cú pháp
afl
Copy code
AddToComposite(array, “ticker”, “field”, flags = atcFlagDefaults)
-
array
: Mảng giá trị muốn thêm vào mã tổng hợp. -
ticker
: Biểu tượng của mã tổng hợp (nên có dấu ~ phía trước, ví dụ:“~MyIndex”
).
-
field
: Trường để lưu dữ liệu, có thể là“C”
,
“O”
,
“H”
,
“L”
,
“V”
,
“I”
,
“X”
,
“1”
,
“2”
.
-
flags
: Cờ để điều chỉnh hành vi hàm (giải thích chi tiết dưới đây).
4. Các giá trị flags
| Cờ | Giá trị | Mô tả |
| atcFlagResetValues | 1 | Xóa dữ liệu cũ trước khi thêm mới |
| atcFlagCompositeGroup | 2 | Đưa mã tổng hợp vào nhóm 253, tránh lặp dữ liệu |
| atcFlagTimeStamp | 4 | Ghi chú thời gian quét cuối vào trường FullName |
| atcFlagEnableInBacktest | 8 | Cho phép dùng trong backtest |
| atcFlagEnableInExplore | 16 | Cho phép dùng trong chế độ Exploration |
| atcFlagEnableInPortfolio | 64 | Cho phép trong kiểm tra danh mục tùy chỉnh |
| atcFlagDefaults | 7 | Kết hợp 3 cờ: ResetValues, CompositeGroup, TimeStamp |
5. Ứng dụng và ví dụ thực tiễn
Ví dụ 1: Trung bình giá đóng cửa của nhiều mã
afl
Copy code
// Phần chạy trong chế độ Scan
AddToComposite(Close, “~MyIndex”, “X”);
AddToComposite(1, “~MyIndex”, “I”); // Đếm số lượng mã
// Phần vẽ chỉ số trung bình
graph0 = Foreign(“~MyIndex”, “C”) / Foreign(“~MyIndex”, “I”);
➡ Kết quả: tạo một chỉ số trung bình từ giá đóng cửa của nhiều mã chứng khoán.
Ví dụ 2: Đếm số mã RSI < 30 (quá bán)
afl
Copy code
values = RSI() < 30;
AddToComposite(values, “~RSIBelow30”, “V”);
// Vẽ chỉ số thống kê số lượng mã quá bán
graph0 = Foreign(“~RSIBelow30”, “V”);
➡ Đây là một chỉ số đo lường mức độ “quá bán” của thị trường theo thời gian.
Ví dụ 3: Đếm số vị thế đang mở trong hệ thống
afl
Copy code
buy = Cross(MACD(), Signal());
sell = Cross(Signal(), MACD());
in_trade = Flip(buy, sell);
AddToComposite(in_trade, “~OpenPosCount”, “V”);
graph0 = Foreign(“~OpenPosCount”, “V”);
➡ Cho biết tại mỗi thời điểm hệ thống đang có bao nhiêu lệnh mở.
6. Ghi chú quan trọng
-
AddToComposite
chỉ hoạt động trong chế độ Analysis → Scan
, trừ khi bạn bật cờ cho phép sử dụng trong chế độ khác. -
Dữ liệu được ghi vào các mã tổng hợp nằm trong nhóm 253.
-
Nếu dữ liệu thay đổi, cần Scan lại để cập nhật.
-
Các mã bắt đầu bằng dấu ngã
~
là mã nhân tạo, không bị ảnh hưởng bởi dữ liệu thị trường bên ngoài.
7. Kết luận
Hàm
AddToComposite()
là một trong những công cụ mạnh mẽ nhất trong AFL khi bạn muốn tổng hợp, thống kê, hoặc tạo chỉ số từ nhiều mã chứng khoán. Thay vì bị giới hạn trong phạm vi một mã, giờ đây bạn có thể tiếp cận toàn bộ thị trường, tạo ra các chỉ số tùy chỉnh phục vụ cho chiến lược giao dịch, phát hiện tín hiệu sớm từ các điều kiện tổng thể, và trực quan hóa dữ liệu tập trung.
Thông tin trong bài chỉ mang tính tham khảo, không phải khuyến nghị mua bán. Giao dịch phái sinh có rủi ro cao do sử dụng đòn bẩy; nhà đầu tư tự chịu trách nhiệm với quyết định của mình.
Tự động đặt lệnh theo tín hiệu AmiBroker thẳng vào tài khoản chứng khoán.
* Phần mềm chạy trên máy tính Windows. Giao dịch tự động vẫn có rủi ro mất vốn.



