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

如何用PineScript编写同一交易日两个时间点的收盘价差值指标

问题分析与修正方案

你的代码在1D时间框架下无法正确获取15:45和16:00的收盘价,因为日线周期的每个bar仅包含当日的基准时间戳(如开盘/收盘时间),无法直接提取分钟级的分时数据。要实现需求,需要调用更低时间周期(比如1分钟)的数据来捕获这两个时间点的价格。

修正后的代码

//@version=5
indicator("每日尾盘15分钟差值", overlay=false)

// 定义目标时间点的条件(若需对应交易所本地时间,可替换为time_trading)
time_1545 = hour(time) == 15 and minute(time) == 45
time_1600 = hour(time) == 16 and minute(time) == 00

// 从1分钟周期获取对应时间点的收盘价
close_1545 = request.security(syminfo.tickerid, "1", close[not time_1545 ? na : 0])
close_1600 = request.security(syminfo.tickerid, "1", close[not time_1600 ? na : 0])

// 计算当日差值,确保每个日线bar仅保留一个有效值
daily_diff = ta.valuewhen(time_1600, close_1600 - close_1545, 0)

// 绘制差值柱状图,过滤无效值
plot(daily_diff, "尾盘15分钟差值", color=color.blue, style=plot.style_columns, display=display.data_window)

关键说明

  • 跨周期数据调用:用request.security()从1分钟周期提取目标时间点的价格,这是日线周期下获取分时数据的核心方法。
  • 单一值保留:通过ta.valuewhen()确保每个日线bar只显示当天计算出的差值,避免重复或零散的数据点。
  • 时区适配:如果你的交易时段时区与默认时区不符,把time替换为time_trading即可对应交易所本地时间。
  • 无效值过滤:通过na判断过滤未捕获到时间点的情况,避免图表上出现无意义的空柱子。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 05:34:58