Pine Script中ta.highestbars/ta.lowestbars返回首次匹配,如何获取最近匹配?
问题:获取最近一次高低点的回溯K线数
当使用以下代码计算最高高点/最低低点的回溯K线数时,若存在多个匹配的K线,函数返回首次出现的回溯数,但我需要获取最近一次的匹配,是否可行?
以下代码中,barsSinceLow和barsSinceHigh始终为大于等于1的整数:
// Bars since recent low/high barsSinceLow = math.abs(ta.lowestbars(pullbackUpBarsToCheck)) // How many bars back is the lowest low to start the calculation of the pullback up barsSinceHigh = math.abs(ta.highestbars(pullbackDownBarsToCheck)) // How many bars back is the highest high to start the calculation of the pullback down
我已通过数据窗口查看barsSinceLow和barsSinceHigh的输出进行调试,确认其返回的是首次出现的结果,现需将其修改为返回最近一次的匹配。
解决方案
ta.lowestbars()和ta.highestbars()默认返回区间内最早出现的高低点回溯数。要获取最近一次的匹配,可通过正向遍历(从当前K线往前找)的方式实现:
修改后的代码
// 获取最近一次低点的回溯K线数 barsSinceLow = 0.0 for i = 0 to pullbackUpBarsToCheck - 1 if low[i] == ta.lowest(pullbackUpBarsToCheck) barsSinceLow := i break // 找到最近的极值点后立即终止遍历 // 获取最近一次高点的回溯K线数 barsSinceHigh = 0.0 for i = 0 to pullbackDownBarsToCheck - 1 if high[i] == ta.highest(pullbackDownBarsToCheck) barsSinceHigh := i break // 找到最近的极值点后立即终止遍历
逻辑说明
- 从当前K线(索引
i=0)开始,向前遍历指定的区间范围 - 一旦找到与区间内最低/最高值匹配的K线,记录其回溯数并停止遍历
- 最终得到的
barsSinceLow和barsSinceHigh即为最近一次出现极值点的回溯数
内容的提问来源于stack exchange,提问作者ricksportel
相关产品推荐
相关产品推荐

