如何实现跟随红线水平的多K线延迟?常规延迟无法满足需求
Pine Script 跨时间框架数据对齐问题解决
问题说明
常规延迟方法无法实现需求:需要绿线与红线保持同一水平位置,但普通延迟操作仅会让绿线向前移动一根K线。调整偏移量、切换时间框架均无效,期望绿线精准对齐到图中白线的位置。
问题根源
原代码中嵌套调用request.security(v5)或security(v2)会导致数据额外偏移。因为每次跨时间框架请求会自动对齐到当前图表K线的起始点,二次嵌套调用会叠加偏移,导致绿线位置错误。
修正后的代码
Pine Script v5 版本
//@version=5 indicator('MTF', overlay=true) tim = input('5', title="目标时间框架") // 直接获取目标时间框架的开盘价 out1 = request.security(syminfo.tickerid, tim, open) // 延迟1根当前图表K线,数值为上一根的out1,位置与当前红线同 out2 = out1[1] plot(out1, color=color.new(color.red, 0), linewidth=4, title="红线") plot(out2, color=color.new(color.green, 0), linewidth=4, title="绿线")
Pine Script v2 版本
//@version=2 study("MTF", overlay=true) tim=input('5', title="目标时间框架") out1 = security(tickerid, tim, open) // 延迟1根当前图表K线 out2 = out1[1] plot(out1,color=red,linewidth = 4, transp = 0, title="红线") plot(out2,color=green, linewidth = 4, transp = 0, title="绿线")
代码解释
- 移除嵌套的跨时间框架请求,避免二次偏移
- 使用数组索引
[n]实现延迟,n为需要延迟的当前图表K线数量。这种方式下,绿线会在当前K线位置显示前n根K线的红线数值,与红线保持同一水平位置,而非向前移动K线 - 若需按目标时间框架的K线数量延迟,可结合
ta.barssince函数计算目标时间框架的K线切换点,再获取对应数值
内容的提问来源于stack exchange,提问作者Poulo
相关产品推荐
相关产品推荐

