Pine Script中if(float)与三元表达式语法含义咨询
Pine Script 中
if (float)语法与三元表达式解析 一、if (float)的语法逻辑
在Pine Script里,所有非na的数值都会被当作布尔值true,只有na会被视为false。所以if (float)本质是判断这个float类型的变量是否为有效值(即不是na)。只要变量不是na,就会执行if块内的代码;如果是na,则跳过。
二、代码中三元表达式的含义
Pine Script的三元表达式格式为:条件 ? 满足条件时的取值 : 不满足条件时的取值,同样遵循“非na为真,na为假”的规则。
第一行
float = float ? float : float
这行代码逻辑是:如果当前float变量不是na,就赋值为自身;如果是na,仍赋值为自身。看起来是冗余写法,大概率是原代码里变量名被简化了(比如原本是两个不同变量),核心是利用三元表达式做“非na时保留原值”的判断。pivot变量定义代码
float ph = ta.pivothigh(prd, prd) float pl = ta.pivotlow(prd, prd)
ta.pivothigh(prd, prd):返回当前bar往前数prd个bar处的 pivot 高点价格,若不存在该高点则返回na。ta.pivotlow(prd, prd):同理,返回 pivot 低点价格,不存在则返回na。
- 嵌套三元表达式
float lastpp = ph ? ph : pl ? pl : na
这是嵌套判断,拆解后逻辑如下:
- 先判断
ph是否非na(即存在pivot高点):若是,lastpp取ph的价格; - 若
ph是na(无pivot高点),再判断pl是否非na(存在pivot低点):若是,lastpp取pl的价格; - 若
ph和pl都是na(既无高点也无低点),lastpp赋值为na。
简单说就是:优先取最近的pivot高点,没有则取pivot低点,都没有就设为na。
- 最后一行
if lastpp
和if (float)逻辑一致,判断lastpp是否为非na的有效值。只要存在最近的pivot高/低点,就执行if块内的代码。
内容的提问来源于stack exchange,提问作者КУдак
相关产品推荐
相关产品推荐

