技术问询:实现周二起显示基于周一计算的Weekly VWAP
问题解决:从周二开始显示完整周累积的Weekly VWAP
你的代码核心问题是错误修改了vwap_week_plot输入变量,导致周一的累积计算逻辑被干扰,周二之后的VWAP没有包含周一的数据。以下是修正后的代码,确保整周数据正常累积,仅在周一隐藏显示:
//@version=5 indicator(title='Weekly VWAP - Show from Tuesday', shorttitle='VWAP Weekly', overlay=true) this_week_plot = input.bool(true, "Plot this week only") vwap_week_plot = input.bool(true, title='Week VWAP', inline="WEEK VWAP") vwap_week_color = input.color(color.rgb(102,0,102, 0), title='', inline="WEEK VWAP") src = input(hlc3, title='', inline="WEEK VWAP") // 周时间戳,用于判断周初 t = time('W') start_of_week = na(t[1]) or t > t[1] // 累积整周的成交量加权价格和成交量,包含周一数据 sumSrc = src * volume sumVol = volume sumSrc := start_of_week ? sumSrc : sumSrc + sumSrc[1] sumVol := start_of_week ? sumVol : sumVol + sumVol[1] // 计算完整的周VWAP VWAP_Week = sumSrc / sumVol // 构建显示条件: // 1. 用户开启了周VWAP显示 // 2. 满足当前周显示要求(或关闭当前周限制时显示所有周) // 3. 不是周一 show_condition = vwap_week_plot and (this_week_plot ? (year(time) == year(timenow) and weekofyear(time) == weekofyear(timenow)) : true) and (dayofweek(time) != dayofweek.monday) // 仅在满足条件时绘制 plot(show_condition ? VWAP_Week : na, title='VWAP Week', color=vwap_week_color, linewidth=2)
关键修改说明:
- 保留完整的周数据累积逻辑:
sumSrc和sumVol始终从周一开始累积,不会因为周一不显示而中断计算。 - 用独立的
show_condition变量控制显示:结合用户输入的显示开关、当前周限制,以及非周一的条件,避免修改原始输入变量。 - 确保周二到周五显示的是包含周一数据的完整周VWAP,符合需求。
内容的提问来源于stack exchange,提问作者Lenon Fernandes
相关产品推荐
相关产品推荐

