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 );