需求:绘制显示VX1!合约16:00开盘价的跨品种振荡器
解决方案:在日内周期展示VX1!每日16:00开盘价的振荡器
核心问题是原代码未正确锁定每日16:00这一特定时间点的VX1!开盘价,导致价格随8小时周期变动。以下是修正后的Pine Script代码,可在任意小于1日的K线周期(如1H、30M、15M等)上稳定显示每日16:00的VX1!开盘价:
//@version=5 indicator("VX1! 每日16:00开盘价振荡器", overlay=false) // 定义目标时间:每日16:00 targetHour = 16 targetMinute = 0 // 获取VX1!合约的每日K线数据,提取开盘价 vxDailyOpen = request.security("VX1!", "D", open) // 锁定每日16:00的开盘价:仅当当前K线时间到达16:00时更新,其余时间保持原值 var float daily1600Open = na if hour == targetHour and minute == targetMinute daily1600Open := vxDailyOpen // 绘制振荡器:这里用水平线+标签展示,也可根据需求改成柱状/折线形式 plot(daily1600Open, color=color.new(color.blue, 0), title="VX1! 16:00开盘价", linewidth=2) var label lastLabel = na if barstate.islast lastLabel := label.new(bar_index, daily1600Open, str.tostring(daily1600Open, "#.##"), color=color.blue, textcolor=color.white)
关键逻辑说明:
request.security调用:指定"VX1!"和"D"周期,获取该合约的每日开盘价,确保拿到的是当日完整日K线的开盘价。var变量持久化:用var float daily1600Open保存价格,该变量仅在脚本初始化时赋值一次,后续仅在16:00的K线触发更新,避免日内周期下频繁刷新。- 时间判断条件:
hour == targetHour and minute == targetMinute精准匹配每日16:00的K线,确保只有此时才更新价格。
自定义调整建议:
- 若需要将该值与当前品种价格做对比(真正的振荡器形式),可添加计算逻辑:
oscillator = close - daily1600Open,然后用plot(oscillator)绘制差值。 - 可修改
plot函数的样式(如style=plot.style_columns改成柱状图),适配不同的振荡器展示需求。
内容的提问来源于stack exchange,提问作者Łukasz
相关产品推荐
相关产品推荐

