Công cụ AFL – Phân tích kỹ thuật tự động trong AmiBroker

ha.anh
7 Min Read

1. Giới thiệu

Kể từ phiên bản 2.5, AmiBroker đã tích hợp các công cụ phân tích kỹ thuật tự động, hỗ trợ mạnh mẽ cho các nhà giao dịch trong việc đánh giá thị trường, kiểm tra hệ thống giao dịch, mô phỏng hiệu suất, và đưa ra các quyết định đầu tư sáng suốt.

Đặc biệt, từ phiên bản 3.0, AmiBroker giới thiệu AFL (AmiBroker Formula Language) – ngôn ngữ công thức mạnh mẽ, chuyên biệt cho việc xây dựng các hệ thống giao dịch, chỉ báo tùy chỉnh, bình luận kỹ thuật và các tín hiệu đồ họa.

2. Ngôn ngữ công thức AmiBroker (AFL)

AFL là nền tảng trung tâm cho các công cụ phân tích kỹ thuật của AmiBroker. Với AFL, bạn có thể:

  • Viết quy tắc mua/bán cho hệ thống giao dịch

  • Tạo chỉ báo tùy chỉnh

  • Viết bình luận Guru (Advisor Commentary)

  • Kiểm tra, tối ưu hóa và khám phá hệ thống giao dịch

Ví dụ quy tắc mua/bán:

afl

Copy code

buy  = Cross(EMA(Close, 9), EMA(Close, 15));

sell = Cross(EMA(Close, 15), EMA(Close, 9));

 

Ngoài ra, bạn có thể sử dụng các chỉ báo phổ biến như MACD, RSI, Ultimate Oscillator:

afl

Copy code

buy  = Cross(MACD(), 0);

sell = Cross(0, MACD());

 

buy  = Cross(RSI(), 30);

sell = Cross(70, RSI());

 

buy  = Cross(Ultimate(), 50);

sell = Cross(50, Ultimate());

 

3. Cửa sổ Phân tích Tự động (Automatic Analysis Window)

Đây là công cụ trung tâm trong việc kiểm tra và mô phỏng hệ thống giao dịch. Bạn có thể:

  • Kiểm tra tín hiệu mua/bán trong một khung thời gian cụ thể

  • Tối ưu hóa các tham số trong chiến lược

  • Thực hiện kiểm tra hiệu suất qua mô phỏng giao dịch

Giao diện bao gồm:

  • Trình nhập công thức: Gõ quy tắc mua/bán

  • Nút chạy kiểm tra (Backtest), tối ưu hóa (Optimize), và khám phá (Explore)

  • Kết quả báo cáo: Cho thấy các giao dịch giả định và hiệu suất tương ứng

4. Trình chỉnh sửa công thức (Formula Editor)

Công cụ này cho phép bạn:

  • Soạn thảo và lưu các công thức AFL

  • Làm việc với các mẫu có sẵn

  • Chạy thử ngay trên biểu đồ

Nó hỗ trợ gợi ý mã, kiểm tra lỗi cú pháp và đánh dấu cú pháp giúp lập trình dễ dàng hơn.

5. Cửa sổ Bình luận Cố vấn Guru (Advisor Commentary)

Cho phép hiển thị bình luận kỹ thuật trực tiếp lên biểu đồ, dựa trên logic AFL. Cũng có thể đặt các tín hiệu đồ họa như mũi tên mua/bán trên biểu đồ.

Lưu ý:

  • Các công thức phức tạp có thể làm chậm quá trình hiển thị

  • Tính năng hữu ích cho việc mô tả chiến lược bằng ngôn ngữ tự nhiên

6. Máy chủ Kịch bản AFL (AFL Scripting Server)

Từ phiên bản 4.40, AFL hỗ trợ tốt hơn các cấu trúc điều khiển như if, while, for, do đó việc sử dụng JScript/VBScript trở nên ít cần thiết. Tuy nhiên, kịch bản vẫn có thể được dùng để:

  • Xử lý logic phức tạp không thực hiện được với AFL nguyên thủy

  • Tương tác sâu với dữ liệu (ví dụ: dừng lợi nhuận, quản lý lệnh tùy chỉnh)

  • Làm việc với các API hoặc nguồn ngoài (trong một số trường hợp mở rộng)

Cách kích hoạt:

afl

Copy code

EnableScript(“jscript”); // hoặc “vbscript”

 

Kết hợp mã kịch bản và AFL:

afl

Copy code

EnableScript(“vbscript”);

 

buy  = Cross(MACD(), 0);

sell = Cross(0, MACD());

 

<%

  ‘ Mã VBScript ở đây

%>

 

buy  = ExRem(buy, sell);

 

Truy cập biến:

Dùng đối tượng AFL(“varname”) để lấy/gán dữ liệu từ AFL:

vbscript

Copy code

<%

buyArray = AFL(“buy”)

AFL(“sell”) = buyArray

%>

 

Lặp qua mảng trong VBScript:

vbscript

Copy code

<%

arr = AFL(“close”)

sum = 0

For i = 0 To UBound(arr)

    sum = sum + arr(i)

Next

%>

 

7. Ví dụ nâng cao

a) Chỉ báo trung bình động lũy thừa:

afl

Copy code

EnableScript(“jscript”);

<%

close = VBArray(AFL(“close”)).toArray(); 

output = new Array();

output[0] = close[0];

factor = 0.05;

 

for (i = 1; i < close.length; i++) {

    output[i] = factor * close[i] + (1 – factor) * output[i – 1];

}

 

AFL(“graph0”) = close; 

AFL(“graph1”) = output;

%>

 

b) Dừng mục tiêu lợi nhuận (Take-profit Stop):

afl

Copy code

EnableScript(“vbscript”);

 

buy  = Close == HHV(Close, 250); // khi giá đạt đỉnh mới

sell = 0;

 

<%

close = AFL(“close”);

buy = AFL(“buy”);

sell = AFL(“sell”);

 

lastBuyPrice = 0;

 

For i = 0 To UBound(close)

    sell(i) = 0

    If lastBuyPrice > 0 Then buy(i) = 0

    If lastBuyPrice = 0 And buy(i) = 1 Then lastBuyPrice = close(i)

    If lastBuyPrice > 0 And close(i) > (1.1 * lastBuyPrice) Then 

        sell(i) = 1

        lastBuyPrice = 0

    End If

Next

 

AFL(“buy”) = buy

AFL(“sell”) = sell

%>

 

8. Kết luận

AFL và các công cụ phân tích kỹ thuật của AmiBroker không chỉ giúp bạn đánh giá thị trường, mà còn cung cấp nền tảng vững chắc để xây dựng, thử nghiệm và tối ưu hóa chiến lược giao dịch của riêng bạn. Từ những chỉ báo đơn giản cho đến các logic kiểm tra phức tạp, bạn đều có thể thực hiện trong một môi trường duy nhất.

9. Tài nguyên hữu ích

 

TAGGED:
Share This Article
Leave a Comment