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
相关产品推荐
相关产品推荐

