如何编写Pine Script中最近9根K线的布尔表达式?
实现布尔表达式标识最近指定K线
需求明确
你需要的布尔表达式要满足:当前K线(close)及往前数9根K线(close[1]到close[9])返回true,第10根及更早的K线返回false。
两种实现方式
方法一:直接使用ta.barssince(推荐)
ta.barssince(condition)会返回从最近一次满足condition的K线到当前K线的间隔数。我们可以利用barstate.islast(仅在最后一根K线时为true)来计算当前K线距离最后一根K线的步数:
// 标识目标范围内的K线 isTargetRange = ta.barssince(barstate.islast) <= 9
- 最后一根K线(
close):ta.barssince(barstate.islast)返回0,满足<=9,结果为true - 前9根K线(
close[1]到close[9]):返回值分别为1到9,均满足条件,结果为true - 第10根及更早的K线:返回值
>=10,结果为false
完全匹配你的需求,代码简洁易读。
方法二:通过K线索引计算
如果你不想使用ta.barssince,可以通过记录最后一根K线的索引来实现:
// 获取最后一根K线的索引 lastBarIndex = bar_index - ta.barssince(barstate.islast) // 判断当前K线是否属于目标范围 isTargetRange = bar_index >= lastBarIndex - 9
逻辑和方法一一致,通过索引差值判断归属,原理清晰但代码稍显繁琐。
关于ta.barssince的使用结论
完全可以用ta.barssince实现你的需求,而且是更高效简洁的方案,上述方法一就是典型的应用场景。
内容的提问来源于stack exchange,提问作者Tuff Fish
相关产品推荐
相关产品推荐

