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

ha.anh
6 Min Read

✅ 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:

    • Dựa trên chỉ báo

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

    • 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
PositionScore Lọc tín hiệu BUY/SELL ưu tiên Tích hợp sẵn, siêu nhanh, ít tốn bộ nhớ
AddRankColumn Xếp hạng trong bảng báo cáo Gọn nhẹ, trực quan
StaticVarGenerateRanks Ranking toàn danh mục tùy chỉnh Linh 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:

    • Chọn top cổ phiếu mạnh nhất? → dùng PositionScore + ranking

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

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

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

    • Dùng Status(“stocknum”)==0 để tránh rank quá nhiều lần

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

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

    • Ranking theo RSI, ROC, v.v.

    • 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!

TAGGED:
Share This Article
Leave a Comment