• 29º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 21: Flow Control Statements – Vòng lặp while và do-while AFL
Bài 21: Flow Control Statements – Vòng lặp while và do-while AFL

Xem nhanh:

  • Vòng Lặp While và Do-While Trong Amibroker AFL: Kiểm Soát Luồng Lặp Linh Hoạt
  • Vòng Lặp While: Lặp Chừng Nào Điều Kiện Còn Đúng
  • Vòng Lặp Do-While: Đảm Bảo Thực Thi Ít Nhất Một Lần
  • Khi Nào Sử Dụng While hoặc Do-While?

Vòng Lặp While và Do-While Trong Amibroker AFL: Kiểm Soát Luồng Lặp Linh Hoạt

Chào các bạn! Sau khi đã làm chủ vòng lặp For – công cụ đa năng nhất để duyệt qua dữ liệu “thanh nến theo thanh nến”, chúng ta sẽ khám phá hai loại vòng lặp khác trong Amibroker Formula Language (AFL): vòng lặp While và vòng lặp Do-While. Mặc dù không được sử dụng phổ biến bằng For, nhưng chúng cung cấp sự linh hoạt độc đáo trong các tình huống cụ thể.


Vòng Lặp While: Lặp Chừng Nào Điều Kiện Còn Đúng

Vòng lặp While là một câu lệnh điều khiển luồng cho phép bạn thực hiện một khối lệnh lặp đi lặp lại chừng nào một điều kiện cụ thể còn đúng (True).

Cú pháp cơ bản của vòng lặp While trong AFL:

initialization; // Khởi tạo biến đếm hoặc biến điều kiện
while (condition)
{
    statement(s); // Các câu lệnh sẽ được thực thi lặp lại
    // Cập nhật biến điều kiện để vòng lặp có thể kết thúc
}

Giải thích các thành phần:

  • initialization (Khởi tạo): Giống như For loop, bạn cần khởi tạo biến đếm hoặc bất kỳ biến nào mà điều kiện vòng lặp sẽ dựa vào. Điều này phải được thực hiện trước khi vòng lặp while bắt đầu. Ví dụ: i = 0;.
  • while: Từ khóa bắt đầu vòng lặp.
  • (condition): Đây là một biểu thức logic (Boolean expression). Vòng lặp sẽ tiếp tục thực thi chừng nào biểu thức này còn trả về True. Nếu điều kiện là False ngay từ đầu, khối lệnh bên trong while sẽ không bao giờ được thực thi.
  • statement(s) (Các câu lệnh): Khối code sẽ được thực thi trong mỗi lần lặp.
  • Cập nhật biến điều kiện: Cực kỳ quan trọng! Trong khối lệnh của while, bạn phải có một câu lệnh nào đó làm thay đổi giá trị của biến điều kiện để cuối cùng condition trở thành False. Nếu không, bạn sẽ rơi vào tình trạng vòng lặp vô hạn (infinite loop), khiến Amibroker bị treo. Ví dụ: i++;

Cách hoạt động của While loop:

  1. Khởi tạo biến.
  2. Kiểm tra condition.
  3. Nếu True:
    • Thực thi statement(s).
    • Cập nhật biến điều kiện.
    • Quay lại bước 2.
  4. Nếu False: Dừng vòng lặp và tiếp tục thực thi các dòng code sau vòng lặp.

Ví dụ thực tế: Tính toán giá trung bình của mỗi thanh nến bằng While

SetBarsRequired(0); // Đảm bảo BarIndex bắt đầu từ 0
AverageValues = Null; // Khởi tạo mảng rỗng

i = 0; // Khởi tạo biến đếm

while (i < BarCount) // Lặp chừng nào i còn nhỏ hơn tổng số bar (BarCount-1 là BarIndex cuối cùng)
{
    AverageValues[i] = (High[i] + Low[i]) / 2; // Tính toán và gán giá trị
    i++; // Tăng biến đếm để chuyển sang thanh nến tiếp theo
}

Plot(AverageValues, "Gia TB voi While", colorBlue, styleLine);
Ví dụ

Ví dụ

Kết quả

Kết quả


Vòng Lặp Do-While: Đảm Bảo Thực Thi Ít Nhất Một Lần

Vòng lặp Do-While tương tự như While, nhưng có một điểm khác biệt then chốt: khối lệnh bên trong Do-While luôn được thực thi ít nhất một lần, bất kể điều kiện ban đầu có đúng hay sai. Điều kiện chỉ được kiểm tra sau khi khối lệnh đã được thực thi một lần.

Cú pháp cơ bản của vòng lặp Do-While trong AFL:

initialization; // Khởi tạo biến
do
{
    statement(s); // Các câu lệnh sẽ được thực thi
    // Cập nhật biến điều kiện
} while (condition); // Điều kiện được kiểm tra ở cuối, CẦN DẤU CHẤM PHẨY Ở ĐÂY!

Giải thích các thành phần:

  • initialization (Khởi tạo): Tương tự như While và For.
  • do: Từ khóa bắt đầu khối lệnh.
  • statement(s) (Các câu lệnh): Khối code được thực thi trong mỗi lần lặp.
  • Cập nhật biến điều kiện: Phải có bên trong khối do.
  • while (condition);: Từ khóa while và điều kiện được đặt ở cuối khối lệnh, và bắt buộc phải có dấu chấm phẩy ; sau điều kiện.

Cách hoạt động của Do-While loop:

  1. Khởi tạo biến.
  2. Thực thi statement(s).
  3. Cập nhật biến điều kiện.
  4. Kiểm tra condition.
  5. Nếu True: Quay lại bước 2.
  6. Nếu False: Dừng vòng lặp.

Ví dụ thực tế: Tính toán giá trung bình của mỗi thanh nến bằng Do-While

SetBarsRequired(0); // Đảm bảo BarIndex bắt đầu từ 0
AverageValues = Null; // Khởi tạo mảng rỗng

i = 0; // Khởi tạo biến đếm

do
{
    AverageValues[i] = (High[i] + Low[i]) / 2; // Tính toán và gán giá trị
    i++; // Tăng biến đếm
} while (i < BarCount); // Điều kiện được kiểm tra sau lần thực thi đầu tiên

Plot(AverageValues, "Gia TB voi Do-While", colorGreen, styleLine);
Ví dụ

Ví dụ

Kết quả

Kết quả


Khi Nào Sử Dụng While hoặc Do-While?

  • While loop: Thích hợp khi bạn không chắc liệu vòng lặp có cần thực thi hay không. Nó kiểm tra điều kiện trước, nên có thể không thực thi lần nào nếu điều kiện ban đầu là False.
  • Do-While loop: Thích hợp khi bạn muốn đảm bảo khối lệnh được thực thi ít nhất một lần, sau đó mới kiểm tra điều kiện để quyết định có lặp tiếp hay không.

Trong hầu hết các tình huống xây dựng chiến lược giao dịch trong Amibroker, vòng lặp For thường là lựa chọn tối ưu nhất vì nó tích hợp cả khởi tạo, điều kiện và cập nhật biến đếm trong cùng một dòng, làm cho code gọn gàng và dễ đọc hơn. Tuy nhiên, hiểu về While và Do-While sẽ giúp bạn linh hoạt hơn khi đối mặt với các logic đặc biệt.

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