如何获取并显示新K线开盘时VWMA的首个值
新K线开盘时捕获VWMA初始值并持久显示的实现
VWMA的基础写法
两种实现VWMA的方式:
- 直接调用内置函数:
plot(vwma(close, 14))
- 自定义函数实现:
the_vwma(_src, _len) => sma(_src * volume, _len) / sma(volume, _len) plot(the_vwma(close, 14))
需求说明
需要在新K线出现的瞬间(即该K线首次满足close == open的时刻),捕获此时VWMA的数值,并在图表上持续显示。要求每次打开新图表时,能立即看到该数值,解决此前用var存储时,重新加载图表无法获取当前运行K线对应时刻正确值的问题。
解决方案代码
以下是适配需求的完整实现,兼容自定义VWMA函数和内置函数:
// 自定义VWMA函数 the_vwma(_src, _len) => sma(_src * volume, _len) / sma(volume, _len) // 配置参数 vwma_length = input.int(14, title="VWMA长度") src = input(close, title="数据源") // 计算当前VWMA值 current_vwma = the_vwma(src, vwma_length) // 或者用内置函数:current_vwma = vwma(src, vwma_length) // 捕获新K线开盘时的VWMA初始值 var float opening_vwma = na // 当新K线首次加载时触发(对应开盘时刻) if barstate.isfirst opening_vwma := current_vwma // 在图表上显示捕获到的初始值 plot(opening_vwma, title="开盘VWMA初始值", color=color.red, linewidth=2, style=plot.style_linebr) // 同时绘制常规VWMA作为参考 plot(current_vwma, title="常规VWMA", color=color.blue, linewidth=1)
代码说明
barstate.isfirst的作用:该条件会在K线首次被加载时触发,精准对应新K线开盘的瞬间,确保捕获的是开盘时刻的VWMA值。var变量的正确使用:用var声明opening_vwma确保变量仅初始化一次,后续仅在新K线开盘时更新值,避免图表重新加载时被重置。- 兼容性:代码同时支持自定义VWMA函数和内置
vwma()函数,只需切换current_vwma的赋值语句即可。
内容的提问来源于stack exchange,提问作者CandyG80
相关产品推荐
相关产品推荐

