PineScript v5切换图表类型后如何获取正确K线数据?
解决PineScript中Renko等非标准图表类型下日线数据获取错误的问题
你的问题核心在于:Renko、Kagi等非标准图表是基于价格变动生成的,其bar结构和标准时间周期K线完全不匹配。原代码中你将当前图表(如Renko)的bar数据传递给request.security,导致目标周期(日线)的索引对应关系错乱,进而返回错误数据。
正确解决方案
要确保数据仅基于标准时间K线计算,需直接在request.security的回调作用域内引用目标周期的bar数据,而非从当前图表传递数据。修改后的代码如下:
// 直接在日线周期下获取前一天的高低开收数据 [PDH, PDL, PDO, PDC] = request.security(syminfo.tickerid, "D", [high[1], low[1], open[1], close[1]])
优化建议(可选)
添加barmerge参数可更精准控制数据合并行为,避免前瞻数据或缺口问题,适合回测场景:
[PDH, PDL, PDO, PDC] = request.security( syminfo.tickerid, "D", [high[1], low[1], open[1], close[1]], barmerge.gaps_on, // 保留日线数据中的缺口 barmerge.lookahead_off // 关闭前瞻,仅使用已闭合的日线bar数据 )
原理说明
request.security的第三个参数是在目标周期(此处为日线)的上下文执行的代码,直接引用high[1]会取日线周期的前一根bar(即前一天)的最高价,完全不受当前图表类型影响。- 原代码中
theHigh[1]是当前图表(如Renko)的前一根bar的最高价,和日线周期的bar没有对应关系,这是错误的根源。
内容的提问来源于stack exchange,提问作者Lew2234
相关产品推荐
相关产品推荐

