Chuyên lập trình AmiBroker cho Giao dịch chứng khoán

Thứ 3, 01/07/2025

::

PM
Đầu tư chứng khoán khoa học trên nền tảng phân tích dữ liệu và thống kê
IIf - hàm IF đơn giản
2023-05-25 10:58:00 1373 Lượt xem

    IIf - hàm IF đơn giản

    CÚ PHÁP

    IIf( BIỂU_THỨC, PHẦN_ĐÚNG, PHẦN_SAI )

    TRẢ VỀ

    MẢNG hoặc SỐ

    CHỨC NĂNG

    "Hàm IF đơn giản" - một hàm điều kiện trả về giá trị của tham số thứ hai (PHẦN_ĐÚNG) nếu biểu thức điều kiện được xác định bởi tham số đầu tiên (BIỂU_THỨC) là đúng; ngược lại, giá trị của tham số thứ ba (PHẦN_SAI) được trả về. Lưu ý rằng IIf là một hàm - do đó, kết quả của việc đánh giá được trả về bởi hàm đó và nên được gán cho một biến nào đó. Hàm IIf luôn đánh giá cả PHẦN_ĐÚNG và PHẦN_SAI, mặc dù chỉ trả về một trong hai giá trị. Do đó, bạn nên chú ý đến những tác động phụ không mong muốn. Ví dụ dưới đây cho thấy một lỗi thông thường khi sử dụng hàm IIf: IIF( điều_kiện, kết_quả = 7, kết_quả = 9 ); // ĐÂY LÀ SAI Cách sử dụng đúng là: kết_quả = IIf( điều_kiện, 7, 9 ); /* 7 hoặc 9 được *trả về* và được gán cho một biến tùy thuộc vào điều kiện */
    Khi tất cả các đối số đều là các số (scalar), giá trị kết quả cũng là một số (scalar). Khi bất kỳ đối số nào là một mảng, hàm trả về một mảng.

    Khi làm việc với mảng, hàm IIf đánh giá tất cả các thanh trượt, điều kiện được kiểm tra trên mỗi thanh trượt và giá trị trả về cho thanh trượt cụ thể được chọn một cách phù hợp từng thanh trượt một. Đoạn mã dưới đây cho thấy cách hoạt động của phép tính mảng của hàm IIf. Hãy xem xét cả chương "Understanding AFL" trong tài liệu hướng dẫn.

    function IIF_AFL( điều_kiện, giá_trịA, giá_trịB )
    {
         kết_quả = Null;

        for( thanh_trượt = 0; thanh_trượt < Số_Thành_Phần; thanh_trượt++

     )
         {
           if( điều_kiện[ thanh_trượt ] )
               kết_quả[ thanh_trượt ] = giá_trịA[ thanh_trượt ];
           else
               kết_quả[ thanh_trượt ] = giá_trịB[ thanh_trượt ];
         }

        return kết_quả;
    }

    VÍ DỤ

      
    // Công thức dưới đây
    // sẽ gán giá trị Volume dương cho biến kết_quả vào những ngày khi
    // MACD thấp hơn đường tín hiệu của nó, VÀ gán giá trị Volume âm vào những ngày còn lại.

    kết_quả = IIf( MACD() < Signal(), Volume, -Volume );

    // Công thức dưới đây
    // sẽ gán giá trị colorRed cho biến dynamic_color vào những ngày khi
    // Close < Open và gán màu colorGreen trong trường hợp khác

    dynamic_color = IIf( Close < Open, colorRed, colorGreen );
    Plot( Volume, "Màu volume", dynamic_color, styleHistogram | styleThick );

    Đọc thêm

    Thu gọn

    Bài viết khác:
    Zalo
    Hotline