• 31ºC, Clouds
  • Saturday, 13th December, 2025
  • 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 16: Flow Control Statements – Barcount & Barindex
Bài 16: Flow Control Statements – Barcount & Barindex

Xem nhanh:

  • Hiểu Cách Các Câu Lệnh Điều Khiển Luồng AFL Hoạt Động: “Bar by Bar” với BarCount và BarIndex
  • Sự Khác Biệt Của Câu Lệnh Điều Khiển Luồng: “Không Chấp Nhận Mảng Dữ Liệu”
  • Cơ Chế Hoạt Động “Bar by Bar” (Thanh Nến Theo Thanh Nến)
  • BarCount và BarIndex: Chìa Khóa Để Hiểu “Bar by Bar”
  • 1. BarCount
  • 2. BarIndex
  • Thực Hành: Trực Quan Hóa BarCount và BarIndex bằng Plot()
  • Tầm Quan Trọng của BarIndex trong Flow Control Statements

Hiểu Cách Các Câu Lệnh Điều Khiển Luồng AFL Hoạt Động: “Bar by Bar” với BarCount và BarIndex

Chào mừng các bạn! Trước khi đi sâu vào cách sử dụng các câu lệnh điều khiển luồng (Flow Control Statements) trong Amibroker Formula Language (AFL), điều quan trọng là phải nắm rõ cách chúng hoạt động khác biệt như thế nào so với các hàm AFL thông thường. Đây là một khái niệm cơ bản nhưng rất quan trọng, đặc biệt đối với những bạn mới bắt đầu lập trình.

Sự Khác Biệt Của Câu Lệnh Điều Khiển Luồng: “Không Chấp Nhận Mảng Dữ Liệu”

Một điểm mấu chốt cần nhớ về các câu lệnh điều khiển luồng là:

Các câu lệnh điều khiển luồng không bao giờ chấp nhận mảng dữ liệu (arrays) làm đối số (arguments) trực tiếp.

Điều này khác biệt hoàn toàn với hầu hết các hàm AFL mà chúng ta đã học (ví dụ: EMA(), RSI(), ROC()), vốn được thiết kế để xử lý toàn bộ mảng dữ liệu cùng một lúc.

Vậy tại sao lại có sự khác biệt này? Bởi vì các câu lệnh điều khiển luồng không thực hiện “phân tích theo mảng” (array-by-array analysis). Thay vào đó, chúng hoạt động theo cơ chế “thanh nến theo thanh nến” (bar by bar).

Cơ Chế Hoạt Động “Bar by Bar” (Thanh Nến Theo Thanh Nến)

Hãy hình dung Amibroker đang duyệt qua biểu đồ giá của bạn từng thanh nến một:

  1. Nó sẽ xem xét thanh nến đầu tiên trên biểu đồ.
  2. Kiểm tra điều kiện của câu lệnh điều khiển luồng tại thanh nến đó.
  3. Nếu điều kiện đúng, nó sẽ thực hiện khối lệnh tương ứng.
  4. Sau đó, nó mới chuyển sang thanh nến thứ hai, và lặp lại quá trình.
  5. Cứ như vậy, Amibroker sẽ đi qua từng thanh nến cho đến hết dữ liệu.

Cơ chế “thanh nến theo thanh nến” này là nền tảng để hiểu cách các vòng lặp (For, While) và câu lệnh điều kiện (If-Else) hoạt động trong AFL khi bạn muốn xử lý dữ liệu một cách tuần tự và có điều kiện.

BarCount và BarIndex: Chìa Khóa Để Hiểu “Bar by Bar”

Để kiểm soát và hiểu rõ cơ chế “thanh nến theo thanh nến”, chúng ta cần làm quen với hai khái niệm quan trọng: BarCount và BarIndex.

1. BarCount

  • Định nghĩa: Là tổng số thanh nến có sẵn trong khung thời gian hiện tại của biểu đồ.
  • Loại dữ liệu: Là một giá trị số đơn lẻ (scalar value), không phải là một mảng. Nó đại diện cho tổng số lượng thanh nến.
  • Ví dụ: Nếu biểu đồ của bạn có 1000 thanh nến, BarCount sẽ trả về 1000.

2. BarIndex

  • Định nghĩa: Là một mảng dữ liệu (array) chứa chỉ số (index) của từng thanh nến.
  • Giá trị: Nó bắt đầu từ 0 cho thanh nến đầu tiên và tăng dần lên 1, 2, 3,… cho đến thanh nến cuối cùng.
  • Giá trị của thanh nến cuối cùng: Chỉ số của thanh nến cuối cùng sẽ là BarCount - 1. Ví dụ: nếu có 1000 thanh nến, chỉ số của thanh nến cuối cùng sẽ là 999.
  • Ý nghĩa: BarIndex cho phép chúng ta “nhận diện” và “truy cập” từng thanh nến riêng lẻ trong quá trình xử lý “thanh nến theo thanh nến”.

Thực Hành: Trực Quan Hóa BarCount và BarIndex bằng Plot()

Để hiểu rõ hơn, hãy thử trực quan hóa BarCount và BarIndex trên biểu đồ của bạn:

// Trực quan hóa BarCount (là một giá trị đơn, nên sẽ là một đường thẳng)
Plot(BarCount, "Tong So Thanh Nen", colorGreen, styleLine);

// Trực quan hóa BarIndex (là một mảng, nên sẽ tăng dần theo từng thanh nến)
Plot(BarIndex(), "Chi So Thanh Nen", colorBlue, styleLine);

// Để dễ nhìn hơn khi kiểm tra giá trị, bạn có thể thêm vào Exploration
// Filter = 1; // Lọc tất cả để xem
// AddColumn(BarIndex, "Chi so Nen", 1.0);
// AddColumn(BarCount, "Tong so Nen", 1.0);
Ví dụ

Ví dụ

Kết quả

Kết quả

Khi bạn chạy code này trên biểu đồ:

  • Đường BarCount sẽ là một đường thẳng nằm ngang, hiển thị tổng số thanh nến.
  • Đường BarIndex sẽ là một đường tăng dần từ 0 (thanh nến đầu tiên bên trái) đến BarCount - 1 (thanh nến cuối cùng bên phải).
  • Nếu bạn rê chuột qua từng thanh nến, bạn sẽ thấy giá trị của BarIndex thay đổi (tăng lên 1) với mỗi thanh nến, trong khi BarCount vẫn giữ nguyên.

Tầm Quan Trọng của BarIndex trong Flow Control Statements

Vì các câu lệnh điều khiển luồng hoạt động “thanh nến theo thanh nến”, chúng ta thường sử dụng BarIndex để:

  • Xác định thanh nến hiện tại: Biết mình đang ở thanh nến thứ bao nhiêu trong chuỗi dữ liệu.
  • Đặt điều kiện cho một thanh nến cụ thể: “Nếu BarIndex là 100, thì làm điều này.”
  • Xác định phạm vi lặp: “Lặp từ BarIndex 0 đến BarCount - 1.”

Việc nắm vững khái niệm về hoạt động “thanh nến theo thanh nến” cùng với vai trò của BarCount và BarIndex là nền tảng vững chắc để bạn có thể sử dụng hiệu quả các câu lệnh điều khiển luồng và xây dựng những chiến lược giao dịch phức tạp hơn trong AFL.

  • 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
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 BFC
Phân Tích Doanh Nghiệp
Phân tích BFC
14 Tháng 7, 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ệ