• 24ºC, Clear
  • Wednesday, 21st January, 2026
  • Trang Chủ
  • Bộ Lọc
  • Nhận Định Thị Trường
  • Phân Tích Doanh Nghiệp
  • Amibroker
    • Code AFL
    • Tự học Amibroker
  • Kiến Thức Đầu Tư
    • Chỉ Báo Kỹ Thuật
    • Phân Tích Cơ Bản
    • Phương Pháp Sóng Elliot
    • Phương Pháp Wyckoff/VSA
    • Vĩ Mô Liên Thị Trường
  • Liên hệ
  • Giới Thiệu
Mới Nhất
  • Phân tích VN-Index ngày 11/08
  • Phân tích HAH
  • Bài 46: Trở thành nhà giao dịch chuyên nghiệp
  • Bài 45: GFX Functions – Bảng trạng thái giao dịch Amibroker
  1. Trang chủ
  2. Amibroker
  3. Tự học Amibroker
  4. Bài 26: User Defined Functions – Global Local variables Amibroker
Bài 26: User Defined Functions – Global Local variables Amibroker

Xem nhanh:

  • Biến Cục Bộ và Biến Toàn Cục Trong Amibroker AFL: Quản Lý Phạm Vi Biến Hiệu Quả
  • 1. Biến Cục Bộ (Local Variables)
  • 2. Biến Toàn Cục (Global Variables)
  • 3. Từ Khóa global: Chuyển Đổi Biến Cục Bộ Thành Toàn Cục

Tuyệt vời! Dưới đây là bài viết chuẩn SEO được biên soạn dựa trên nội dung bạn cung cấp, tập trung vào khái niệm biến cục bộ (local variables), biến toàn cục (global variables) và từ khóa global trong AFL.

Biến Cục Bộ và Biến Toàn Cục Trong Amibroker AFL: Quản Lý Phạm Vi Biến Hiệu Quả

Chào các bạn! Khi làm việc với hàm tự định nghĩa (User-Defined Functions – UDF) trong Amibroker Formula Language (AFL), một trong những thách thức phổ biến mà các lập trình viên thường gặp là hiểu và quản lý phạm vi của biến (variable scope). Việc nắm vững khái niệm biến cục bộ (local variables) và biến toàn cục (global variables), cùng với cách sử dụng từ khóa global, sẽ giúp bạn viết code sạch hơn, dễ debug hơn và tránh được những lỗi không mong muốn.

1. Biến Cục Bộ (Local Variables)

Biến cục bộ là các biến được khai báo và khởi tạo bên trong một hàm (function). Phạm vi của chúng chỉ giới hạn trong khối lệnh của hàm đó. Điều này có nghĩa là:

  • Bạn chỉ có thể truy cập và sử dụng biến cục bộ từ bên trong hàm mà nó được khai báo.
  • Biến cục bộ không thể được truy cập từ bên ngoài hàm.
  • Nếu bạn khai báo một biến có cùng tên bên ngoài hàm (biến toàn cục), chúng sẽ là hai biến hoàn toàn riêng biệt, không liên quan gì đến nhau.

Ví dụ về biến cục bộ:

function MyFunction(x)
{
    local_var = 3; // Đây là biến cục bộ
    return x * local_var;
}

// Bên ngoài hàm
result = MyFunction(5); // result sẽ là 5 * 3 = 15
// Plot(local_var, "Bien Cuc Bo"); // LỖI: Không thể truy cập local_var từ bên ngoài hàm

2. Biến Toàn Cục (Global Variables)

Biến toàn cục là các biến được khai báo bên ngoài bất kỳ hàm nào. Phạm vi của chúng là toàn bộ chương trình (script AFL). Điều này có nghĩa là:

  • Bạn có thể truy cập và sử dụng biến toàn cục từ bất kỳ đâu trong code AFL của bạn, bao gồm cả bên trong các hàm.
  • Nếu một hàm cần sử dụng một giá trị mà không muốn truyền qua tham số, nó có thể lấy giá trị từ một biến toàn cục.

Ví dụ về biến toàn cục:

global_K = 4; // Đây là biến toàn cục

function MyFunction(x)
{
    // Hàm có thể truy cập global_K
    return x * global_K; 
}

// Bên ngoài hàm
result = MyFunction(3); // result sẽ là 3 * 4 = 12
Plot(global_K, "Bien Toan Cuc"); // Có thể truy cập global_K từ bên ngoài hàm

Quan trọng: Khi một hàm sử dụng một biến mà không khai báo nó cục bộ, Amibroker sẽ tìm kiếm một biến toàn cục có cùng tên. Nếu tìm thấy, nó sẽ sử dụng giá trị của biến toàn cục đó.

3. Từ Khóa global: Chuyển Đổi Biến Cục Bộ Thành Toàn Cục

Theo mặc định, các biến được khai báo bên trong một hàm là biến cục bộ. Tuy nhiên, có những trường hợp bạn muốn một biến được tạo ra hoặc thay đổi bên trong hàm lại có thể được truy cập từ bên ngoài hàm. Lúc này, bạn sử dụng từ khóa global.

Khi bạn đặt từ khóa global trước một biến bên trong một hàm, biến đó sẽ trở thành biến toàn cục, và mọi thay đổi đối với nó bên trong hàm sẽ ảnh hưởng đến giá trị của biến đó trên phạm vi toàn bộ script AFL.

Cú pháp sử dụng global:

function MyFunction()
{
    global myGlobalVariable; // Khai báo myGlobalVariable là biến toàn cục
    myGlobalVariable = 100; // Gán giá trị, giá trị này sẽ có hiệu lực bên ngoài hàm
}

// Bên ngoài hàm
MyFunction(); // Gọi hàm để gán giá trị cho myGlobalVariable
Plot(myGlobalVariable, "Bien Toan Cuc Tu Ham"); // myGlobalVariable giờ có giá trị 100

Ví dụ tổng hợp để minh họa rõ hơn:

// Khởi tạo biến toàn cục Z_Global_Outside
Z_Global_Outside = 5; 
K_Global = 4;

function CalculateAndModify(x)
{
    // Z_Local là biến cục bộ của hàm này
    Z_Local = 3; 

    // Biến Temp được khai báo là toàn cục bên trong hàm
    global Temp_Global_Inside; 
    Temp_Global_Inside = 10; // Giá trị này sẽ được thấy bên ngoài hàm sau khi gọi hàm

    // Hàm trả về Z_Local * x * K_Global
    // Z_Local lấy giá trị 3
    // x lấy giá trị truyền vào (tham số)
    // K_Global lấy giá trị 4 từ biến toàn cục bên ngoài
    return Z_Local * x * K_Global;
}

// Gọi hàm
Result_From_Function = CalculateAndModify(1); // Result_From_Function = 3 * 1 * 4 = 12

// Plot các biến để quan sát
Plot(Result_From_Function, "Ket Qua Tu Ham", colorGreen, styleLine);
Plot(Z_Global_Outside, "Z Toan Cuc Ben Ngoai", colorRed, styleLine); 
// Plot(Z_Local, "Z Cuc Bo", colorBlue, styleLine); // LỖI: Không truy cập được Z_Local
Plot(Temp_Global_Inside, "Temp Toan Cuc Tu Ben Trong Ham", colorYellow, styleLine); // Sau khi hàm được gọi, Temp_Global_Inside có giá trị 10
Ví dụ

Ví dụ

Kết quả

Kết quả

Những điểm cần nhớ:

  • Ưu tiên phạm vi: Khi một biến được sử dụng bên trong một hàm, Amibroker sẽ ưu tiên tìm kiếm biến cục bộ trước. Nếu không tìm thấy, nó sẽ tìm kiếm biến toàn cục.
  • Tránh xung đột: Đặt tên biến cục bộ và biến toàn cục khác nhau là một thực hành tốt để tránh nhầm lẫn và lỗi không mong muốn, trừ khi bạn cố ý muốn biến cục bộ ghi đè lên biến toàn cục hoặc muốn một biến được thay đổi toàn cục bên trong hàm.
  • Debug dễ hơn: Hiểu rõ phạm vi biến sẽ giúp bạn xác định nguyên nhân lỗi khi một biến không có giá trị mong muốn hoặc thay đổi không kiểm soát.

Việc quản lý hiệu quả biến cục bộ và biến toàn cục là một kỹ năng quan trọng trong lập trình AFL, giúp bạn xây dựng các công thức mạnh mẽ, dễ bảo trì và hoạt động ổn định hơn.

  • trancotam
❮ Prev Next ❯
Chia sẻ: Facebook WhatsApp Twitter
Chia sẻ với ứng dụng khác

Tin Xem Nhiều

Bài 1: Chiến Lược Bảo Vệ Vốn Hiệu Quả Khi Đầu Tư (Phần 1)
Chỉ Báo Kỹ Thuật
Bài 1: Chiến Lược Bảo Vệ Vốn Hiệu Quả Khi Đầu Tư…
21 Tháng 5, 2025
Phân tích BFC
Phân Tích Doanh Nghiệp
Phân tích BFC
14 Tháng 7, 2025
Bài 46: Trở thành nhà giao dịch chuyên nghiệp
Tự học Amibroker
Bài 46: Trở thành nhà giao dịch chuyên nghiệp
22 Tháng 6, 2025
Phân tích HAH
Phân Tích Doanh Nghiệp
Phân tích HAH
15 Tháng 7, 2025
Bảng công cụ phân tích thị trường
Chưa phân loại
Bảng công cụ phân tích thị trường
13 Tháng 5, 2025
Donation
Phóng to ảnh

TADOSO là nền tảng chia sẻ kiến thức và kinh nghiệm đầu tư tài chính, đặc biệt trong lĩnh vực chứng khoán, nhằm kết nối và nâng cao tư duy cho nhà đầu tư cá nhân tại Việt Nam. Với triết lý "Tạo dựng – Đồng hành – Sở hữu", TADOSO hướng đến xây dựng cộng đồng học hỏi minh bạch, trung lập, không bị chi phối bởi tổ chức tài chính nào.

Newsletter

Hãy để lại mail để chúng tôi có thể phục vụ bạn tốt hơn

Donation - Buy me a coffee

Donation

Copyright © All rights reserved | This template is made with by Tran Co Tam

  • Terms of use
  • Privacy Policy
  • Contact
Zalo Messenger
×

Liên hệ