Pine Script Security函数获取4小时Ichimoku数据跨周期显示异常
问题排查与修复方案
问题根源
你代码中3处错误导致切换周期时数值变动:
- 周期参数配置错误:你需要获取4小时周期数据,但
security()函数内传入的是日线周期标识符'D',数据源本身就不符合要求。 - K线对齐规则不固定:未给
security()指定合并规则,默认逻辑在不同图表周期下的K线对齐逻辑不一致,导致取值差异。 - 偏移逻辑错误:代码中直接加
[25]是对当前图表周期的K线做偏移,切换周期后单根K线的时间跨度变化,偏移对应的实际时间长度自然会变。
修复后代码
//@version=4 study(title="test1", overlay=true) conversionPeriods = input(9, minval=1, title="Conversion Line Length") basePeriods = input(26, minval=1, title="Base Line Length") displacement = input(26, minval=1, title="Displacement") get_ichimoku_4h(len) => security(syminfo.tickerid, "240", avg(lowest(len), highest(len)), barmerge.lookahead_off) tenkanSen_M240 = get_ichimoku_4h(conversionPeriods) kijunSen_M240 = get_ichimoku_4h(basePeriods) senkoSpanA_M240 = security(syminfo.tickerid, "240", avg(tenkanSen_M240, kijunSen_M240)[25], barmerge.lookahead_off) plot(senkoSpanA_M240, title="senkoSpanA_M240")
修复说明
- 把
security()的周期参数改为"240",对应4小时周期,保证数据源正确。 - 新增
barmerge.lookahead_off参数,固定K线对齐规则,同时避免未来函数误差。 - 把偏移逻辑放在
security()内部,偏移的是4小时周期的K线,不管当前图表切换到什么周期,取值逻辑都固定。
修复后数值将完全和4小时周期的对应数值保持一致,不会随当前图表周期切换发生变化。
内容的提问来源于stack exchange,提问作者Peter Tran
相关产品推荐
相关产品推荐

