You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取并显示新K线开盘时VWMA的首个值

新K线开盘时捕获VWMA初始值并持久显示的实现

VWMA的基础写法

两种实现VWMA的方式:

  1. 直接调用内置函数:
plot(vwma(close, 14))
  1. 自定义函数实现:
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)

代码说明

  1. barstate.isfirst的作用:该条件会在K线首次被加载时触发,精准对应新K线开盘的瞬间,确保捕获的是开盘时刻的VWMA值。
  2. var变量的正确使用:用var声明opening_vwma确保变量仅初始化一次,后续仅在新K线开盘时更新值,避免图表重新加载时被重置。
  3. 兼容性:代码同时支持自定义VWMA函数和内置vwma()函数,只需切换current_vwma的赋值语句即可。

内容的提问来源于stack exchange,提问作者CandyG80

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 01:40:27