• 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 22: Flow Control Statements – Break & continue
Bài 22: Flow Control Statements – Break & continue

Xem nhanh:

  • Từ Khóa Break và Continue Trong Amibroker AFL: Kiểm Soát Vòng Lặp Hiệu Quả
  • 1. Từ Khóa Break: Dừng Vòng Lặp Ngay Lập Tức
  • 2. Từ Khóa Continue: Bỏ Qua Lần Lặp Hiện Tại và Chuyển Sang Lần Lặp Kế Tiếp
  • So Sánh Break và Continue

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 hai từ khóa quan trọng trong vòng lặp: Break và Continue.


Từ Khóa Break và Continue Trong Amibroker AFL: Kiểm Soát Vòng Lặp Hiệu Quả

Chào các bạn! Chúng ta đã làm quen với sức mạnh của vòng lặp (loops) như For, While, và Do-While trong Amibroker Formula Language (AFL) để thực hiện các thao tác “thanh nến theo thanh nến”. Để kiểm soát vòng lặp linh hoạt hơn nữa, chúng ta có hai từ khóa cực kỳ hữu ích: Break và Continue. Mặc dù có vẻ tương tự, chức năng của chúng lại khác biệt rõ rệt và hiểu rõ chúng sẽ giúp bạn viết code AFL hiệu quả hơn.


1. Từ Khóa Break: Dừng Vòng Lặp Ngay Lập Tức

Từ khóa Break được sử dụng để kết thúc vòng lặp hiện tại ngay lập tức. Khi Amibroker gặp từ khóa Break bên trong một vòng lặp, nó sẽ thoát khỏi vòng lặp đó và tiếp tục thực thi các câu lệnh ngay sau vòng lặp.

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

  1. Vòng lặp đang chạy và thực hiện các lần lặp.
  2. Khi một điều kiện cụ thể được đáp ứng, từ khóa Break được kích hoạt.
  3. Ngay lập tức, Amibroker ngừng vòng lặp, bỏ qua tất cả các lần lặp còn lại.
  4. Chương trình nhảy đến dòng code ngay sau khối vòng lặp.

Ví dụ thực tế với Break: Hãy tưởng tượng bạn đang duyệt qua các thanh nến và muốn lưu trữ giá đóng cửa vào một mảng mới (CloseValues) chỉ cho đến khi giá đóng cửa của nến vượt quá đường trung bình động EMA 50. Ngay khi điều kiện này xảy ra, bạn muốn dừng việc lưu trữ.

// Khai báo và tính toán EMA 50
EMA50 = EMA(Close, 50);

// Khởi tạo một mảng rỗng để lưu giá trị Close
SetBarsRequired(0); // Đảm bảo BarIndex bắt đầu từ 0
CloseValues = Null;

// Vòng lặp For để duyệt qua từng thanh nến
for (i = 0; i < BarCount; i++)
{
    // Điều kiện: Nếu giá đóng cửa (Close) của thanh nến hiện tại (i) lớn hơn EMA 50
    if (Close[i] > EMA50[i])
    {
        break; // Dừng vòng lặp ngay lập tức
    }
    // Nếu điều kiện trên không đúng (Close[i] <= EMA50[i]), thì lưu giá trị Close
    else
    {
        CloseValues[i] = Close[i];
    }
}

// Plot mảng kết quả và EMA 50 lên biểu đồ để trực quan hóa
Plot(CloseValues, "Close Values truoc Break", colorBlue, styleLine);
Plot(EMA50, "EMA 50", colorRed, styleLine);
Ví dụ

Ví dụ

Kết quả

Kết quả

Phân tích ví dụ Break:

  • Amibroker sẽ bắt đầu điền giá trị Close[i] vào CloseValues[i] từ đầu.
  • Ngay khi tìm thấy thanh nến mà Close[i] lớn hơn EMA50[i], câu lệnh break sẽ được thực thi.
  • Vòng lặp for sẽ bị chấm dứt hoàn toàn, và Amibroker sẽ không điền thêm bất kỳ giá trị nào vào CloseValues từ thanh nến đó trở đi. Mọi vị trí còn lại trong mảng CloseValues sẽ giữ nguyên giá trị Null.

2. Từ Khóa Continue: Bỏ Qua Lần Lặp Hiện Tại và Chuyển Sang Lần Lặp Kế Tiếp

Từ khóa Continue được sử dụng để bỏ qua phần còn lại của lần lặp hiện tại và chuyển ngay sang lần lặp kế tiếp của vòng lặp. Vòng lặp không bị chấm dứt hoàn toàn.

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

  1. Vòng lặp đang chạy và thực hiện các lần lặp.
  2. Khi một điều kiện cụ thể được đáp ứng, từ khóa Continue được kích hoạt.
  3. Amibroker bỏ qua tất cả các câu lệnh còn lại trong khối lệnh của lần lặp hiện tại.
  4. Nó chuyển ngay sang lần lặp tiếp theo của vòng lặp (cập nhật biến đếm và kiểm tra điều kiện lại từ đầu).

Ví dụ thực tế với Continue: Sử dụng lại ví dụ trên, nhưng lần này bạn muốn lưu trữ giá đóng cửa vào mảng CloseValues cho tất cả các thanh nến ngoại trừ những thanh nến có giá đóng cửa lớn hơn EMA 50.

// Khai báo và tính toán EMA 50
EMA50 = EMA(Close, 50);

// Khởi tạo một mảng rỗng để lưu giá trị Close
SetBarsRequired(0); // Đảm bảo BarIndex bắt đầu từ 0
CloseValues = Null;

// Vòng lặp For để duyệt qua từng thanh nến
for (i = 0; i < BarCount; i++)
{
    // Điều kiện: Nếu giá đóng cửa (Close) của thanh nến hiện tại (i) lớn hơn EMA 50
    if (Close[i] > EMA50[i])
    {
        continue; // Bỏ qua lần lặp này và chuyển sang thanh nến kế tiếp
    }
    // Nếu điều kiện trên không đúng (Close[i] <= EMA50[i]), thì lưu giá trị Close
    CloseValues[i] = Close[i];
}

// Plot mảng kết quả và EMA 50 lên biểu đồ để trực quan hóa
Plot(CloseValues, "Close Values voi Continue", colorBlue, styleLine);
Plot(EMA50, "EMA 50", colorRed, styleLine);
Ví dụ

Ví dụ

Kết quả

Kết quả

Phân tích ví dụ Continue:

  • Amibroker sẽ điền giá trị Close[i] vào CloseValues[i] cho tất cả các thanh nến mà Close[i] nhỏ hơn hoặc bằng EMA50[i].
  • Khi tìm thấy thanh nến mà Close[i] lớn hơn EMA50[i], câu lệnh continue sẽ được thực thi.
  • Lần lặp hiện tại sẽ bị bỏ qua, nghĩa là Amibroker sẽ không gán giá trị Close[i] vào CloseValues[i] cho thanh nến đó (vị trí này sẽ giữ nguyên giá trị Null).
  • Tuy nhiên, vòng lặp không bị chấm dứt. Nó sẽ tiếp tục sang thanh nến kế tiếp và tiếp tục xử lý theo logic.

So Sánh Break và Continue

Tính năng Break Continue
Phạm vi tác động Chấm dứt toàn bộ vòng lặp hiện tại. Bỏ qua lần lặp hiện tại, chuyển sang lần lặp kế tiếp.
Khi nào dùng Khi bạn muốn thoát khỏi vòng lặp ngay khi một điều kiện xảy ra (ví dụ: tìm thấy kết quả mong muốn). Khi bạn muốn bỏ qua xử lý cho một số lần lặp cụ thể dựa trên điều kiện, nhưng vẫn muốn vòng lặp tiếp tục.

 

Việc sử dụng thành thạo Break và Continue sẽ giúp bạn tối ưu hóa các vòng lặp và xây dựng logic giao dịch phức tạp một cách hiệu quả hơn trong Amibroker AFL, tránh các tính toán không cần thiết và kiểm soát luồng dữ liệu chính xác.

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