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

Pine Script求助:如何让交易时段划线当日结束后停止,不跨日延续

Pine Script v4 交易时段划线跨日问题修复方案

原代码问题核心是使用var关键字声明的高低点变量会全局持久化存储,没有按交易日重置逻辑,导致前一日的高低点数值会一直延续到后续交易日输出。本次修改新增了交易日判定逻辑,每日开盘时自动重置高低点变量,同时限制划线仅在当日交易时段结束后输出,次日自动停止显示。

修改后完整代码如下:

//@version=4
study(title="Opening Sessions", shorttitle="OS", overlay=true)
ops4_clr = color(#ff2b00)
input_ops4 = input("1330-1400", type=input.session, title="Open Session : ops4")
ops4_session = time(timeframe.period,input_ops4+":1234567")

// 新增:判定是否为新交易日
is_new_day = change(time("D")) != 0

var ops4_hi = 0.0
var ops4_lo = 0.0

// 新增:新交易日开盘时重置高低点数值
if is_new_day
    ops4_lo := na
    ops4_hi := na

if ops4_session
    if not ops4_session[1]
        ops4_lo := low
        ops4_hi := high
    else
        ops4_lo := min(low , ops4_lo)
        ops4_hi := max(high, ops4_hi)

ops4_mid = ops4_lo + ((ops4_hi - ops4_lo) / 2)

// 修改:plot条件增加当日非空判定,仅当日有数值时才输出划线
ops4_hi_plot = plot(not ops4_session and not na(ops4_hi) ? ops4_hi : na, title="ops4H", color=ops4_clr, linewidth=1, style=plot.style_linebr)
ops4_lo_plot = plot(not ops4_session and not na(ops4_lo) ? ops4_lo : na, title="ops4L", color=ops4_clr, linewidth=1, style=plot.style_linebr)
ops4_md_plot = plot(not ops4_session and not na(ops4_mid) ? ops4_mid : na, title="ops4M", color=color.new(ops4_clr, 75), linewidth=1, style=plot.style_linebr)

关键修改点:

  • 新增is_new_day变量判断是否进入新的交易日,每日开盘触发重置逻辑
  • 新交易日开盘时将ops4_hi、ops4_lo赋值为na,清空前一日的历史数值
  • 绘制划线的条件新增非空判定,避免无有效值时输出跨日的错误线条

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 17:57:02