Hiểu Cách Thức Hoạt Động của AFL – Ngôn Ngữ Lập Trình trong AmiBroker

Chủ đề trong 'Thị trường chứng khoán' bởi AmiX, 08/09/2025.

746 người đang online, trong đó có 298 thành viên. 09:04 (UTC+07:00) Bangkok, Hanoi, Jakarta
  1. 1 người đang xem box này (Thành viên: 0, Khách: 1)
Chủ đề này đã có 475 lượt đọc và 0 bài trả lời
  1. AmiX

    AmiX Thành viên rất tích cực

    Tham gia ngày:
    17/01/2025
    Đã được thích:
    34
    [​IMG]
    AFL (AmiBroker Formula Language)
    là ngôn ngữ lập trình cốt lõi của AmiBroker – một phần mềm phân tích kỹ thuật được sử dụng rộng rãi bởi nhà đầu tư cá nhân và tổ chức. Để tận dụng tối đa sức mạnh của AmiBroker, nhà đầu tư cần hiểu rõ cách mà AFL xử lý dữ liệu và tạo ra tín hiệu giao dịch.
    1. AFL là ngôn ngữ xử lý mảng
    Khác với các ngôn ngữ lập trình tuần tự như C hay Python, AFL hoạt động theo mô hình
    vectorized
    – tức là
    xử lý toàn bộ dữ liệu lịch sử dưới dạng mảng (array)
    cùng một lúc.
    Trong AmiBroker, mỗi loại dữ liệu như Open, High, Low, Close, Volume, Open Interest… đều được lưu thành
    một mảng
    , với mỗi phần tử tương ứng với một cây nến (bar) trong biểu đồ.
    Ví dụ:
    afl
    Copy code
    MyVar = (High + Low) / 2;
    Câu lệnh trên không phải chỉ thực hiện tại 1 thời điểm, mà là
    thực hiện đồng thời trên toàn bộ các thanh giá
    , tạo thành một mảng mới.
    2. Các hàm cơ bản trong AFL
    Một số hàm thường gặp khi viết chiến lược:
    MA(array, period)
    : Trung bình động đơn giản
    Ref(array, shift)
    : Dịch mảng lên hoặc xuống
    IIF(condition, truePart, falsePart)
    : Câu lệnh điều kiện trả về mảng
    SelectedValue
    ,
    BeginValue
    ,
    EndValue
    ,
    LastValue
    : Trích xuất 1 giá trị cụ thể trong mảng
    AFL cũng hỗ trợ các toán tử logic và số học như
    AND
    ,
    OR
    ,
    >
    ,
    <
    ,
    +
    ,

    ,
    *
    ,
    /
    … có thể áp dụng trực tiếp lên toàn mảng.
    3. Tạo tín hiệu giao dịch: Ví dụ đơn giản
    afl
    Copy code
    Cond1 = Close > MA(Close, 3);
    Cond2 = Volume > Ref(Volume, -1);
    Buy = Cond1 AND Cond2;
    Sell = High > 1.30;
    Giải thích:
    Buy
    xảy ra khi giá đóng cửa lớn hơn trung bình động 3 ngày

    khối lượng tăng so với ngày hôm trước.
    Sell
    xảy ra khi giá cao nhất trong phiên vượt 1.30
    4. Vòng lặp và logic nâng cao
    Từ phiên bản 4.40, AmiBroker cho phép sử dụng vòng lặp
    for
    ,
    while
    ,
    if…else
    để xử lý tùy biến – thích hợp cho các chiến lược phức tạp như:
    afl
    Copy code
    for(i = 1; i < BarCount; i++) {
    Factor = 2 / (Period + 1);
    AMA = Factor * Close + (1 – Factor) * AMA[i – 1];
    }
    Tuy nhiên, với đa số chiến lược phổ biến,
    xử lý mảng vẫn là cách tối ưu về tốc độ và đơn giản hóa code.
    5. AMA – Adaptive Moving Average
    Hàm
    AMA(array, factor)
    được sử dụng để tạo đường trung bình động hàm mũ điều chỉnh theo điều kiện thị trường (tức là hệ số làm mịn thay đổi). AMA là ví dụ điển hình cho cách AFL xử lý đệ quy.
    Đây là một công cụ mạnh mẽ để phát triển chiến lược “đu bám xu hướng” nhưng hạn chế tín hiệu nhiễu trong giai đoạn sideway.
    Kết luận
    AFL không khó nếu bạn quen với tư duy mảng và hiểu cách nó thao tác dữ liệu như Excel.
    Việc học và viết AFL giúp nhà đầu tư chủ động xây dựng hệ thống giao dịch, kiểm thử chiến lược, và tự động hóa quá trình đầu tư.
    Nền tảng như
    phái sinh
    ,
    chứng khoán cơ sở
    , hay
    ETF
    đều có thể tận dụng AFL để tạo edge (lợi thế) phân tích.
    Gợi ý cho nhà đầu tư mới:
    Bạn có thể kết hợp AFL với
    Ami X
    – công cụ cung cấp dữ liệu thời gian thực miễn phí và hỗ trợ đẩy lệnh trực tiếp tới DNSE & Entrade.
    Tải Ami X tại:
    https://www.dnse.com.vn/san-pham/ami-x
    Nguồn tài liệu gốc
    : Cảm ơn Geoff Mulhall với bài viết nền tảng cho hướng dẫn này.
    Biên soạn & Việt hóa bởi phaisinh.online | Fireant Blog | DNSE Learn
    &nbs
    Nguồn: https://phaisinh.online/2025/09/08/...g-cua-afl-ngon-ngu-lap-trinh-trong-amibroker/
    ChangNo thích bài này.

Chia sẻ trang này