Thứ Năm, 05/11/202605/11/2026

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

thumbnail (16)
thumbnail (16)
Mục lục
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ả
atcFlagResetValues1Xóa dữ liệu cũ trước khi thêm mới
atcFlagCompositeGroup2Đưa mã tổng hợp vào nhóm 253, tránh lặp dữ liệu
atcFlagTimeStamp4Ghi chú thời gian quét cuối vào trường FullName
atcFlagEnableInBacktest8Cho phép dùng trong backtest
atcFlagEnableInExplore16Cho phép dùng trong chế độ Exploration
atcFlagEnableInPortfolio64Cho phép trong kiểm tra danh mục tùy chỉnh
atcFlagDefaults7Kế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.

Nguyễn Hà Anh

Biên tập viên mảng thị trường phái sinh, theo dõi VN30F1M và dòng tiền khối ngoại hằng ngày.

AMI X BY DNSE
100 CHIẾN THUẬTmiễn phí khi tải Ami X

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.