如何在request.security调用的月度指标更新时绘制图形?
解决OECD领先指标在周/日线图上的月度更新标记问题
你要在周/日线图上,每次月度标的数据更新时绘制图形,原代码的问题出在两点:一是指标强制绑定了timeframe="1M",导致指标运行在月度框架下;二是plotshape的条件用错了,没有检测数据变化的信号。
修改后的代码
//@version=5 indicator(title="OECD Leading indicators", overlay=false, timeframe_gaps = false) // 在当前图表框架(周/日)下,拉取月度标的数据 plt = request.security("FRED:USALOLITONOSTSAM", timeframe="1M", expression=close) plot(plt, color=color.blue, linewidth=2) // 检测数据更新信号:当指标值发生变化时触发 data_updated = ta.change(plt) != 0 // 只在数据更新的K线上绘制图形 plotshape(data_updated, style=shape.circle, location=location.absolute, size=size.tiny, color=color.rgb(54, 58, 69, 40), yloc=yloc.price, y=plt)
关键修改说明
- 移除了
indicator中的timeframe="1M"参数,让指标跟随当前图表的时间框架(周/日)运行,这样你就能在目标周期下查看数据。 - 用
ta.change(plt) != 0生成数据更新的信号,这个信号只会在新月度数据出现的第一根K线上为true,精准对应更新节点。 plotshape的条件改为data_updated,并通过y=plt让标记精准落在指标值对应的位置,避免错位。
如果需要在整个包含新数据的周期内(比如日线图里整个月的K线)都显示标记,可以把信号逻辑改成:
last_update_value = ta.valuewhen(data_updated, plt, 0) data_updated_all = plt == last_update_value
再用data_updated_all作为plotshape的条件即可。
内容的提问来源于stack exchange,提问作者Nicolas
相关产品推荐
相关产品推荐

