Thứ Năm, 12/11/202612/11/2026

CẢI THIỆN CHIẾN LƯỢC CỦA BẠN VỚI CHỨC NĂNG XẾP HẠNG (Ranking) TRONG AMIBROKER

thumbnail (2)
thumbnail (2)
Mục lục
Mục lục

✅ 1. Xếp hạng là gì và tại sao hữu ích?

  • Xếp hạng
    là một phép so sánh giữa các mục (cổ phiếu, hợp đồng, tín hiệu…), theo ba trạng thái:
    cao hơn – thấp hơn – bằng
    .

  • Cách đơn giản nhất để xếp hạng là gán điểm (ví dụ: mức tăng/giảm giá sau 100 phiên) rồi sắp xếp:

  • Giá cao → xếp hạng cao

  • Giá thấp → xếp hạng thấp

  • Ứng dụng thực tế
    : bạn có thể nhanh chóng chọn ra top cổ phiếu tăng nóng hoặc phát hiện nhóm kém tiềm năng bằng cách xếp hạng thông minh!

🏆 2. 3 dạng xếp hạng mạnh mẽ trong AmiBroker

2.1 PositionScore (Xếp hạng tín hiệu BUY/SELL)

  • Khi hệ thống giao dịch tạo nhiều tín hiệu
    mua/bán khống
    vượt quá giới hạn vị thế, AmiBroker sẽ ưu tiên thực hiện lệnh bằng
    PositionScore
    .

  • Cách hoạt động
    :

  • Trong AFL, gán

    PositionScore = <điểm ưu tiên>

  • AmiBroker sẽ tự động xếp hạng và chọn tín hiệu tốt nhất theo giá trị tuyệt đối

Ứng dụng

: cực kỳ hiệu quả khi backtest danh mục đầu tư, tối ưu hóa vốn sử dụng, hoặc khi hệ thống đưa ra quá nhiều tín hiệu cùng lúc.

2.2 Xếp hạng trong bảng Exploration

  • Dùng khi bạn muốn tạo report dạng danh sách và hiển thị thứ hạng trực tiếp bằng bảng.

Cách làm

:

afl

CopyEdit

Filter = 1;

AddColumn(Close, “Close”);

AddColumn(Volume, “Volume”);

SetSortColumns(-4); AddRankColumn(); // xếp hạng theo cột thứ 4 giảm dần

SetSortColumns(-3); AddRankColumn(); // xếp hạng theo cột thứ 3 tăng dần

  • Kết quả
    :

  • Xuất ra bảng có thêm cột
    Rank
    , giúp bạn dễ dàng lọc ra top/bottom mong muốn

2.3 Xếp hạng theo mã (Symbol Ranking) – mục đích chung

  • Dành cho người dùng nâng cao cần tạo điểm và xếp hạng ngoài PositionScore.

  • Sử dụng biến tĩnh (

    StaticVar

    ) và hàm

    StaticVarGenerateRanks

    :

    1. Tạo biến static lưu điểm của từng mã

    2. Chạy

      StaticVarGenerateRanks

      để tạo thứ hạng tương ứng

Ví dụ đầy đủ

:

afl

CopyEdit

symlist = “AAPL,MSFT,GOOG,AMZN”;

for(i=0; (sym = StrExtract(symlist,i)) != ""; i++){

SetForeign(sym);

score = ROC(C,10);

RestorePriceArrays();

StaticVarSet(“Score”+sym, score);

}

// Tạo thứ hạng toàn danh sách

StaticVarGenerateRanks(“Rank”,“Score”,0,1224);

// Lấy và hiển thị thứ hạng

for(i=0; (sym=StrExtract(symlist,i)) != ""; i++){

r = StaticVarGet(“RankScore”+sym);

Plot(r, sym, colorCustom10+i);

}

  • Chế độ “top-N”
    : nếu bạn chỉ muốn danh sách top 3

  • Chế độ “bottom-N”
    : nếu muốn bottom 3 mã yếu nhất

⚠️ 3. Lưu ý khi dùng StaticVarGenerateRanks

  • Tốn tài nguyên
    : mất ~20 ms cho 15k bar – nên
    CHỈ chạy 1 lần/lần scan
    , không làm cho mỗi mã.

  • Khuyến khích
    sử dụng khi:

  • Cần xếp hạng
    nhiều mã cùng lúc

  • Khó hoặc không thể dùng PositionScore để “chọn tín hiệu”

  • Cách tối ưu hóa
    :

  • Dùng

    if( Status(“stocknum”)==0 )

    để chạy thuật toán ranking chỉ đối với ký hiệu đầu tiên

  • Loại bỏ biến static cũ bằng

    StaticVarRemove(“Score*”)

    trước mỗi lần ranking mới

🚦 4. Kết hợp cả 3 công cụ để nâng cấp hệ thống

Bạn có thể:

  1. Dùng

    PositionScore

    để
    quản lý tín hiệu ưu tiên
    trong backtest

  2. Sử dụng

    AddRankColumn

    trong bảng khám phá để
    hiển thị “top” mã theo điểm mạnh

  3. Dùng

    StaticVarGenerateRanks

    khi cần
    xếp hạng tùy biến
    , chẳng hạn:

  4. Dựa trên chỉ báo

  5. Kết hợp điểm kỹ thuật và cơ bản

  6. Kết hợp nhiều tiêu chí đa chiều

✅ Tổng kết – Thêm chiều sâu chiến lược với xếp hạng

Công cụỨng dụngĐiểm mạnh
PositionScoreLọc tín hiệu BUY/SELL ưu tiênTích hợp sẵn, siêu nhanh, ít tốn bộ nhớ
AddRankColumnXếp hạng trong bảng báo cáoGọn nhẹ, trực quan
StaticVarGenerateRanksRanking toàn danh mục tùy chỉnhLinh hoạt, đa chiều – nhưng cần tối ưu

👉 Hướng dẫn áp dụng thực tế

  1. Mục tiêu rõ ràng
    :

  2. Chọn top cổ phiếu mạnh nhất? → dùng

    PositionScore

    + ranking

  3. Muốn khảo sát thị trường nhanh? → dùng

    AddRankColumn

  4. Cần ranking phức tạp (đa tiêu chí)? → dùng

    StaticVarGenerateRanks

  5. Hiệu suất phải đảm bảo
    :

  6. Dùng

    Status(“stocknum”)==0

    để tránh rank quá nhiều lần

  7. Xóa các biến static cũ trước khi xếp hạng mới

  8. Kết hợp xu hướng và xếp hạng
    :

  9. Ranking theo RSI, ROC, v.v.

  10. Dùng kết quả rank để tạo tín hiệu hoặc filter mã

🎯 Kết luận

Xếp hạng trong AmiBroker không chỉ là một tính năng – đó là
vũ khí mạnh mẽ
để tối ưu hóa hệ thống giao dịch theo cách linh hoạt, đa chiều và hiệu quả.

👉
Thử áp dụng Ranking ngay hôm nay
– bạn sẽ bất ngờ về khả năng lựa chọn tín hiệu, lọc cổ phiếu và tối ưu hóa hệ thống!

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.

Cộng đồng