Thứ Năm, 05/11/202605/11/2026

Hỗ trợ Component Object Model (COM) và Plugin trong AFL

thumbnail (19)
thumbnail (19)
Mục lục
Mục lục

I. Giới thiệu về COM và Plugin trong AFL

AmiBroker Formula Language (AFL) là ngôn ngữ kịch bản mạnh mẽ được thiết kế để tạo chỉ báo, chiến lược, bộ lọc và các công cụ phân tích kỹ thuật. Tuy nhiên, AFL không phải lúc nào cũng đủ để xử lý những tác vụ phức tạp hoặc tương tác trực tiếp với hệ thống bên ngoài. Đó là lý do tại sao AmiBroker hỗ trợ hai công nghệ mở rộng cực kỳ hữu ích:

  • Component Object Model (COM)

  • DLL Plugin

Hai cơ chế này cho phép bạn sử dụng ngôn ngữ lập trình khác (như VBScript, JScript, C/C++, Visual Basic…) để tăng khả năng mở rộng và hiệu năng cho hệ thống giao dịch của bạn.

II. Hỗ trợ COM trong AFL

1. COM là gì?

COM (Component Object Model) là một tiêu chuẩn của Microsoft cho phép các phần mềm và đối tượng phần mềm có thể tương tác với nhau dù viết bằng ngôn ngữ khác nhau. Trong AmiBroker, COM giúp bạn:

  • Gọi các hàm tùy chỉnh từ ngôn ngữ ngoài (như VBScript hoặc JScript)

  • Tận dụng các thư viện hệ thống hoặc của bên thứ ba như Excel, Word, hoặc các thư viện tính toán chuyên sâu

  • Viết mã tính toán ngoài AFL, nhưng có thể gọi trực tiếp trong AFL

Tính năng COM được giới thiệu từ phiên bản AmiBroker 3.75 beta.

2. Gọi hàm COM từ kịch bản (Script)

✅ Cách cũ – Truyền biến giữa AFL và Script

afl

Copy code

EnableScript(“jscript”); 

x = (High + Low) / 2;

f0 = 0.2;

f1 = 1.2;

f2 = -0.4;

<%

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

f0 = AFL(“f0”);

f1 = AFL(“f1”);

f2 = AFL(“f2”);

y = new Array();

y[0] = x[0];

y[1] = x[1];

for (i = 2; i < x.length; i++) {

y[i] = f0 * x[i] + f1 * y[i - 1] + f2 * y[i - 2];

}

AFL.Var(“y”) = y;

%>

Graph1 = y;

👉 Nhược điểm: Cồng kềnh, khó tái sử dụng, không phù hợp với hàm lặp lại nhiều lần.

✅ Cách mới – Gọi hàm trực tiếp bằng COM

afl

Copy code

EnableScript(“jscript”);

<%

function IIR2(x, f0, f1, f2) {

x = VBArray(x).toArray(); 

y = new Array();

y[0] = x[0];

y[1] = x[1];

for (i = 2; i < x.length; i++) {

y[i] = f0 * x[i] + f1 * y[i - 1] + f2 * y[i - 2];

}

return y;

}

%>

script = GetScriptObject();

Graph0 = script.IIR2((High + Low)/2, 0.2, 1.2, -0.4);

👉 Ưu điểm:

  • Tái sử dụng hàm

  • Rút gọn code AFL

  • Tăng tốc độ và khả năng bảo trì

3. Gọi các đối tượng COM/ActiveX bên ngoài

Bạn có thể sử dụng Visual Basic hoặc các ngôn ngữ hỗ trợ COM để viết lớp xử lý riêng.

✅ Ví dụ trong Visual Basic:

vb

Copy code

Public Function IIR2(InputArray() As Variant, f0 As Variant, f1 As Variant, f2 As Variant) As Variant

Dim Result()

ReDim Result(UBound(InputArray))

Result(0) = InputArray(0)

Result(1) = InputArray(1)

For i = 2 To UBound(InputArray)

Result(i) = f0 * InputArray(i) + f1 * Result(i - 1) + f2 * Result(i - 2)

Next

IIR2 = Result

End Function

👉 Cách sử dụng:

  • Tạo dự án mới trong Visual Basic → ActiveX DLL

  • Gắn hàm xử lý vào Class

  • Biên dịch thành DLL

  • Gọi trong AFL thông qua COM

III. Plugin trong AFL

1. Plugin là gì?

Plugin trong AmiBroker là các
DLL
mở rộng, có thể viết bằng:

  • C/C++

  • Delphi

  • Các ngôn ngữ hỗ trợ tạo thư viện động (.DLL)

Khác với COM (tập trung vào tương tác đối tượng), plugin chạy trực tiếp như một phần của AmiBroker, với hiệu năng cực cao.

2. Ưu điểm khi dùng Plugin

  • Chạy
    rất nhanh
    vì mã đã được biên dịch

  • Có thể
    gọi lại hàm AFL
    , đọc và gán
    biến AFL

  • Hỗ trợ
    highlight cú pháp
    trong trình soạn AFL

  • Có thể tạo
    chức năng cực kỳ phức tạp
    không thể viết bằng AFL

3. Cấu trúc Plugin (khái quát)

Một plugin gồm:

  • Tập tin DLL được biên dịch

  • Hàm khởi tạo (plugin startup)

  • Các hàm bạn tự định nghĩa, được AmiBroker nhận diện

  • Có thể có giao diện riêng (nếu viết plugin UI)

Mọi plugin cần tuân theo
AmiBroker Developer Kit (ADK)
– chỉ dành cho người dùng đăng ký.

4. Cách sử dụng Plugin của bên thứ ba

Bước 1:

Tải plugin tại:

👉

https://www.amibroker.net/3rdparty.php

Bước 2:

Sao chép file DLL vào thư mục:

📂

AmiBroker\Plugins

Bước 3:

Mở AmiBroker, vào menu:

🛠 Tools → Plugins → Kiểm tra danh sách plugin

Bước 4:

Gọi các hàm của plugin như hàm nội bộ trong AFL.

5. Lưu ý khi dùng Plugin bên ngoài

  • Một số plugin có thể gây crash hệ thống nếu không tương thích.

  • AmiBroker không chịu trách nhiệm với plugin bên thứ ba.

  • Luôn đọc kỹ tài liệu và kiểm thử trước khi dùng vào giao dịch thực.

IV. So sánh COM vs Plugin

Tiêu chíCOMPlugin DLL
Viết bằngVBScript, JScript, VB, C#, v.v.C/C++, Delphi
Tốc độ thực thiTrung bìnhRất cao
Mức độ tương tác AFLCao (truyền biến, gọi hàm)Rất cao (gọi hàm, biến, callback)
Mức độ dễ triển khaiDễKhó hơn (yêu cầu biên dịch)
Hỗ trợ tích hợp hệ thốngRất tốtTốt (nếu lập trình tốt)
Tính mở rộngCaoRất cao

V. Kết luận

COM và Plugin là hai công cụ mạnh mẽ giúp mở rộng khả năng xử lý của AFL vượt xa ngôn ngữ gốc. Tùy vào nhu cầu – từ đơn giản (dùng VBScript) đến phức tạp (viết hàm tính toán tốc độ cao bằng C++) – bạn có thể lựa chọn công nghệ phù hợp:

  • COM
    phù hợp với xử lý logic, tính toán có liên kết với hệ thống Windows hoặc tái sử dụng script đã viết

  • Plugin
    dành cho những ai cần tối ưu tốc độ, tính toán nặng hoặc muốn tạo các hàm có khả năng mở rộng cao, dùng cho toàn bộ hệ thống

Bằng việc hiểu rõ và ứng dụng COM và Plugin đúng cách, bạn có thể biến AmiBroker thành một nền tảng giao dịch vô cùng mạnh mẽ, linh hoạt, và tùy biến tối đa theo nhu cầu của riêng bạn.

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.