如何使不同时间框架下ta.pivothigh与ta.pivotlow结果日期一致?
解决不同时间框架下枢轴高低点日期不一致问题
问题根源:你当前代码中,调用request.security请求日线数据时,传入的i_leftBars和i_rightBars是基于当前图表时间框架的bar数量(比如4小时图的10bar对应40小时),但日线框架下的10bar是10天,这导致日线级别计算的枢轴点逻辑和当前时间框架完全不同,最终出现日期不匹配的情况。
解决方案
核心思路是:在日线级别计算出枢轴高低点及其对应的日期,然后在当前时间框架中找到对应日期的K线,将枢轴点价格绘制在该K线上,确保两者锚定在同一天。
修改后的完整代码:
//@version=5 indicator("DEBUG: Pivot High and Low", overlay=true) i_leftBars = input(10, title="Bars to the Left (Daily)") i_rightBars = input(10, title="Bars to the Right (Daily)") // 当前时间框架的枢轴点 ph = ta.pivothigh(i_leftBars, i_rightBars) pl = ta.pivotlow(i_leftBars, i_rightBars) // 日线级别获取枢轴点价格和对应的日期 [phD_price, phD_time] = request.security(syminfo.tickerid, "D", [ta.pivothigh(i_leftBars, i_rightBars), time]) [plD_price, plD_time] = request.security(syminfo.tickerid, "D", [ta.pivotlow(i_leftBars, i_rightBars), time]) // 在当前时间框架中,匹配日线枢轴点的日期,绘制对应价格 phD = na(phD_price) ? na : (time >= phD_time and time < phD_time + 86400000 ? phD_price : na) plD = na(plD_price) ? na : (time >= plD_time and time < plD_time + 86400000 ? plD_price : na) // 绘制枢轴点 plot(ph, style=plot.style_cross, linewidth=3, color=color.red) plot(pl, style=plot.style_cross, linewidth=3, color=color.green) plot(phD, style=plot.style_cross, linewidth=5, color=color.orange) plot(plD, style=plot.style_cross, linewidth=5, color=color.blue)
关键修改说明
- 调整输入参数注释,明确
i_leftBars和i_rightBars是基于日线的bar数量,避免框架混淆。 - 通过
request.security同时获取日线枢轴点的价格和发生日期(time变量)。 - 在当前时间框架中,通过判断当前K线时间是否落在日线枢轴点的日期范围内(
86400000为一天的毫秒数),将日线枢轴点价格绘制到对应日期的K线上。 - 此逻辑可保证日线级别的枢轴点与当前时间框架的枢轴点(若为同一天)显示在同一日期的K线组中,方便锚定VWAP线。
内容的提问来源于stack exchange,提问作者mwright
相关产品推荐
相关产品推荐

