Tính Toán Thống Kê Cho Nhiều Chứng Khoán Với Hàm AddToComposite

ha.anh
6 Min Read

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()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.

 

TAGGED:
Share This Article
Leave a Comment