• 24ºC, Clouds
  • 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 18: Flow Control Statements – Indexing & null arrays
Bài 18: Flow Control Statements – Indexing & null arrays

Xem nhanh:

  • Khám Phá Sức Mạnh Của Array Indexing và Xử Lý Null Values Trong Amibroker AFL
  • Array Indexing: Truy Cập Dữ Liệu Từng Thanh Nến
  • Null Values: Hiểu Về Giá Trị Rỗng Trong AFL

Khám Phá Sức Mạnh Của Array Indexing và Xử Lý Null Values Trong Amibroker AFL

Chào các bạn! Trong các video trước, chúng ta đã tìm hiểu về cách các câu lệnh điều khiển luồng hoạt động theo cơ chế “thanh nến theo thanh nến” và tầm quan trọng của BarCount và BarIndex. Giờ đây, chúng ta sẽ đi sâu vào hai khái niệm nền tảng khác trong Amibroker Formula Language (AFL), cực kỳ quan trọng để bạn có thể truy xuất và xử lý dữ liệu một cách chính xác: Array Indexing (Truy cập phần tử mảng) và Null Values (Giá trị rỗng).


Array Indexing: Truy Cập Dữ Liệu Từng Thanh Nến

Như chúng ta đã biết, các biến như Open, High, Low, Close trong AFL là các mảng dữ liệu (arrays), nghĩa là chúng chứa một chuỗi các giá trị tương ứng với từng thanh nến trên biểu đồ. Để truy cập giá trị của một thanh nến cụ thể trong mảng này, chúng ta sử dụng kỹ thuật Array Indexing.

Cú pháp Array Indexing:

Để truy cập một phần tử (giá trị) cụ thể trong một mảng, bạn sẽ sử dụng dấu ngoặc vuông [] và đặt chỉ số của thanh nến (BarIndex) bên trong.

Ten_Mang[BarIndex_Cua_Thanh_Nen_Can_Truy_Cap]

Ví dụ:

  • Truy cập giá đóng cửa của thanh nến đầu tiên: Thanh nến đầu tiên trong dữ liệu có BarIndex là 0. Do đó, để lấy giá đóng cửa của nó, chúng ta viết:

    FirstBarClose = Close[0];
    
  • Truy cập giá cao nhất của thanh nến thứ hai: Thanh nến thứ hai có BarIndex là 1. Để lấy giá cao nhất, chúng ta viết:

    SecondBarHigh = High[1];
    
  • Truy cập giá đóng cửa của thanh nến cuối cùng: Chúng ta không biết chính xác có bao nhiêu thanh nến, nhưng chúng ta biết rằng BarIndex của thanh nến cuối cùng luôn là BarCount - 1. Vì vậy, để lấy giá đóng cửa của thanh nến cuối cùng, chúng ta viết:

    LastBarClose = Close[BarCount - 1];
    

Ví dụ thực tế: Tính giá trung bình của thanh nến cuối cùng

Giả sử bạn muốn tính giá trung bình ((High + Low) / 2) của chỉ thanh nến cuối cùng:

// Tính giá trung bình của thanh nến cuối cùng
AvgPriceLastBar = (High[BarCount - 1] + Low[BarCount - 1]) / 2;

// Plot lên biểu đồ để kiểm tra (sẽ là một đường thẳng ở mức giá đó)
Plot(AvgPriceLastBar, "Gia TB Thanh Cuoi", colorBlue, styleLine);

Tại sao Array Indexing quan trọng?

Array Indexing là cực kỳ quan trọng khi bạn làm việc với các câu lệnh điều khiển luồng (If-Else, For, While), bởi vì các câu lệnh này hoạt động “thanh nến theo thanh nến” và không chấp nhận toàn bộ mảng làm đối số. Khi đó, bạn cần phải truy cập từng giá trị cụ thể tại mỗi BarIndex để thực hiện các phép tính hoặc kiểm tra điều kiện.


Null Values: Hiểu Về Giá Trị Rỗng Trong AFL

Khi làm việc với các chỉ báo hoặc tính toán trên mảng, bạn sẽ thường xuyên gặp phải khái niệm Null Values (giá trị rỗng).

Null Value là gì?

Null Value không phải là 0 hay một số nào đó; nó là một giá trị đặc biệt biểu thị rằng không có dữ liệu hợp lệ tại một điểm cụ thể trong mảng. Điều này thường xảy ra ở đầu các chỉ báo yêu cầu dữ liệu lịch sử.

Ví dụ: Nếu bạn tính đường trung bình động 20 kỳ (MA(Close, 20)), thì 19 thanh nến đầu tiên sẽ không có giá trị trung bình vì không đủ dữ liệu để tính toán. Tại những điểm này, Amibroker sẽ trả về Null Values.

Tại sao Null Values quan trọng và không phải là 0?

  • Phân biệt rõ ràng: 0 là một số có nghĩa, trong khi Null nghĩa là “không tồn tại”. Nếu Amibroker thay thế Null bằng 0, biểu đồ chỉ báo sẽ bị “bẻ cong” xuống 0 ở đầu, gây sai lệch hình ảnh và khó phân tích.
  • Tính toán: Bất kỳ phép toán nào (cộng, trừ, nhân, chia, so sánh) với một Null Value đều sẽ trả về Null Value. Điều này rất quan trọng vì nó ngăn chặn các lỗi tính toán khi dữ liệu không đầy đủ. Ví dụ: Null + 10 sẽ vẫn là Null.

Kiểm tra Null Values với hàm IsNull()

Amibroker cung cấp hàm IsNull() để kiểm tra xem một giá trị trong mảng có phải là Null hay không. Hàm này trả về True (1) nếu giá trị là Null, và False (0) nếu giá trị là hợp lệ.

Cú pháp: IsNull(Array)

Ví dụ:

// Tính đường trung bình động 20 kỳ
MyMA = MA(Close, 20);

// Kiểm tra xem giá trị tại mỗi bar có phải là Null hay không
IsValueNull = IsNull(MyMA);

// Plot lên biểu đồ để trực quan hóa
// (Sẽ là 1 (True) ở đầu biểu đồ nơi có Null Values, và 0 (False) khi có giá trị hợp lệ)
Plot(IsValueNull, "Co phai Null khong?", colorBlue, styleNoTitle | styleLine);

Trong một số chiến lược giao dịch hoặc điều kiện phức tạp, việc kiểm tra Null Values là cần thiết để đảm bảo tính toán chính xác và tránh các tín hiệu không mong muốn. Amibroker tự động xử lý tốt hầu hết các trường hợp Null, nhưng việc hiểu và sử dụng IsNull() sẽ giúp bạn kiểm soát hoàn toàn code của mình.


Nắm vững Array Indexing và hiểu rõ về Null Values là những bước quan trọng giúp bạn trở thành một lập trình viên AFL thành thạo. Chúng ta sẽ áp dụng các kiến thức này thường xuyên trong các video và chiến lược sắp tới!

  • 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ệ