Pine Script中na()函数的含义是什么?附自定义时间周期Heikin Ashi脚本示例
Pine Script
na() 函数说明 基础定义
na() 是 Pine Script 内置的状态检测函数,名称是 not available 的缩写,作用是判断传入的参数是否为「未定义/无效值」状态:
- 当传入值为无效的
na类型时,函数返回true - 当传入值为有效数值/序列时,函数返回
false
交易图表中经常出现 na 的场景包括:
- 图表第一根K线不存在更早的历史数据,访问
xxx[1]这类前置序列值时 - 跨周期调用数据还未加载完成时
- 函数传入非法参数返回无效结果时
结合示例脚本的用法解释
你提供的脚本中is_newbar函数就是na()的典型使用场景,该函数作用是判断指定自定义周期是否生成了新K线:
is_newbar(res) => t = time(res) not na(t) and (na(t[1]) or t > t[1])
逐段解释判断逻辑:
not na(t):首先校验当前获取的目标周期时间戳是有效的,排除数据未加载完成的异常场景na(t[1]):检测上一根K线对应的目标周期时间戳是否未定义,这种情况一般出现在图表加载的第一根K线,默认判定为新周期起点t > t[1]:当前目标周期的时间戳大于上一根K线对应时间戳,说明已经进入新的周期,即新K线生成
常见拓展用法
na()常用来做异常值兜底,避免脚本因为无效值报错,例如:
// 前一根收盘价不存在时用当前开盘价兜底 pre_close = na(close[1]) ? open : close[1]
内容的提问来源于stack exchange,提问作者ctwhome
相关产品推荐
相关产品推荐

