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

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

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[i] + 1);

   AMA[i] = Factor * Close[i] + (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

&nbsNguồn: https://phaisinh.online/2025/09/08/hieu-cach-thuc-hoat-dong-cua-afl-ngon-ngu-lap-trinh-trong-amibroker/