如何在Pine Script中获取连续两根K线的总区间?
在Pine Script中计算指定连续K线的合并区间
如果你需要在当前周期内,计算连续N根K线的合并区间(而非切换到高周期),核心思路是利用Pine Script的回溯函数,提取目标K线段的最高、最低价,以及可选的合并后开收盘价。
一、固定数量连续K线的合并区间
直接使用ta.highest()和ta.lowest()函数指定回溯数量,就能快速拿到合并区间的上下限,同时可提取合并段的首尾开收盘价:
//@version=5 indicator("固定数量K线合并区间", overlay=true) // 可自定义的合并K线数量 mergeCount = input.int(2, title="合并K线数", minval=2) // 计算合并区间的关键数值 mergeHigh = ta.highest(high, mergeCount) // 合并段最高价(区间上沿) mergeLow = ta.lowest(low, mergeCount) // 合并段最低价(区间下沿) mergeOpen = open[mergeCount - 1] // 合并段第一根K线的开盘价 mergeClose = close // 合并段最后一根K线的收盘价 // 可视化合并区间的高低边界 plot(mergeHigh, color=color.red, linewidth=2, title="合并区间高点") plot(mergeLow, color=color.green, linewidth=2, title="合并区间低点") // 可选:绘制合并后的实体K线 var line mergedBody = na if barstate.islast mergedBody := line.new(bar_index - mergeCount + 1, mergeOpen, bar_index, mergeClose, width=3, color=color.blue)
代码说明:
ta.highest(high, mergeCount):回溯mergeCount根K线,返回这段内的最高价,即合并区间的顶部ta.lowest(low, mergeCount):返回这段内的最低价,即合并区间的底部open[mergeCount - 1]:当前K线往前数mergeCount-1根,就是合并段的第一根K线,取其开盘价作为合并后的开盘价close:当前K线的收盘价即为合并段的最后一根收盘价
二、自定义时间范围的合并区间
如果需要按时间长度(比如过去15分钟)而非K线数量计算合并区间,可通过时间戳判断+回溯计数实现:
//@version=5 indicator("时间范围K线合并区间", overlay=true) // 自定义合并时间范围(单位:分钟) timeWindow = input.int(15, title="合并时间范围(分钟)") // 计算时间窗口的起始时间戳(当前时间减去窗口时长) windowStart = time - timeWindow * 60 * 1000 // 找到超出时间窗口的最近K线位置,计算窗口内的高低点 barsInWindow = ta.barssince(time < windowStart) + 1 rangeHigh = ta.highest(high, barsInWindow) rangeLow = ta.lowest(low, barsInWindow) // 绘制时间窗口的合并区间 plot(rangeHigh, color=color.orange, linewidth=2, title="时间窗口高点") plot(rangeLow, color=color.purple, linewidth=2, title="时间窗口低点")
代码说明:
ta.barssince(time < windowStart):返回距离当前K线最近的、时间超出窗口起始点的K线数量,加1后得到窗口内的K线总数- 再用
ta.highest()和ta.lowest()提取这段K线的高低点,得到时间窗口内的合并区间
内容的提问来源于stack exchange,提问作者Lucas Smith
相关产品推荐
相关产品推荐

