条件结构语句通常用来判断给定的条件是否满足,并根据判断的结果(true或false)执行不同的操作。在Pine Script中,条件结构语句包括if和switch两种。
if语句根据其所包含的局部程序块是否有返回值和副作用而分为两种类型:一种是无返回值,但是有副作用;另一种是有返回值。
局部程序块无返回值,但是有副作用的if语句格式,如下所示。
● []:表示其内的部分为可选项,可以选择性地省略。
● <>:表示其内的部分为必选项,必须提供相应的值或信息。
● expression_0,expression_1:条件表达式。
● local_block_0,local_block_1,local_block_2:无返回值但具有副作用的局部程序块。
局部程序块内部的语句需要进行缩进,并且缩进的空格数必须是4的倍数。
if语句经常被用于策略脚本中,以控制程序的执行流程。以下是先前举过的最简单的策略函数示例,其中包含两个无返回值但具有副作用的if语句。
局部程序块有返回值的if语句格式如下所示。
● []:表示其内的部分为可选项,可以选择性地省略。
● <>:表示其内的部分为必选项,必须提供相应的值或信息。
● declaration_mode:变量声明模式,可取值为var、varip或缺省(若未指定,则执行模式为on each bar)。
● type:变量的数据类型。
● identifier:变量名。
● expression_0,expression_1:条件表达式。
● local_block_0,local_block_1,local_block_2:包含返回值的局部程序块。
在此提供一个简单的有返回值的if语句示例,如下所示。
将以上脚本添加到图表中,如图8-1所示。
图8-1 if语句有返回值的示例
右侧有表达式的switch语句格式,如下所示。
● []:表示其内的部分为可选项,可以选择性地省略。
● <>:表示其内的部分为必选项,必须提供相应的值或信息。
● variable_declaration:变量声明。
● expression_0:条件表达式。
● expression_1…expression_n:条件表达式1…n。
● local_block_1…local_block_n:当表达式1…n的条件满足时,分别执行局部程序块1…n。
● local_block_0:当表达式1…n的条件都不满足时,执行局部程序块。
举一个简单的右侧有表达式的switch语句示例,如下所示。
将以上脚本添加到图表中,如图8-2所示。
图8-2 switch语句右侧有表达式的示例
右侧无表达式的switch语句格式如下所示。
● []:表示其内的部分为可选项,可以选择性地省略。
● <>:表示其内的部分为必选项,必须提供相应的值或信息。
● expression_1,expression_n:表达式1…n。
● local_block_1,local_block_n:当表达式1…n的条件满足时,分别执行局部程序块1…n。
举一个简单的右侧没有表达式的switch语句示例,如下所示。
以深证指数(399001)为例,将该脚本添加到图表中,如图8-3所示。
图8-3 switch语句右侧无表达式的示例
本章介绍了两种条件语句,即if语句和switch语句。条件语句在程序中起着非常重要的作用,可以根据不同的条件来执行不同的代码逻辑。在实际编程中,需要根据具体的情况选择合适的条件语句,并遵循良好的编程规范,以保证代码的可读性和可维护性。