pine 脚本如何在每个 session 开始时将 barssince 重置为零

pine script how to reset barssince to zero at the beginning of every session

我希望在蜡烛满足以下条件后跟踪柱数:

交易量 > 3x sma(交易量)

我正在为此目的使用 barssince。但是我不想把这个值转到第二天的 session

有什么方法可以使用 barssince

谢谢

代码:

strategy(title="Test", overlay=true)
var highvolbar=0
VolLen = input(title="Vol MA Length", type=input.integer, defval=50)
sess = input(defval = "0915-1530", title="Trading Session")
t = time(timeframe.period, sess)
sessionOpen = na(t) ? false : true


if(sessionOpen)
    smavolcompare = volume > 3 * sma(volume,VolLen) 
    highvolbar := barssince(smavolcompare)

last_bar = timestamp(year, month, dayofmonth + 1, 15, 15, 0) == time_close

if (last_bar)
    highvolbar:=0
plot(highvolbar)

我希望 highvolbar 在每个 session

结束时重置为 0

这里我们用 var 声明 highvolbar 变量以使其持久化并手动跟踪计数,而不使用 barsince():

//@version=4
strategy(title="Test")
var int highvolbar=na
VolLen = input(title="Vol MA Length", type=input.integer, defval=50)
sess = input(defval = "0915-1530", title="Trading Session")
t = time(timeframe.period, sess)
sessionOpen = not na(t)
newSession = sessionOpen and not sessionOpen[1]
smavolcompare = volume > 3 * sma(volume,VolLen)

if newSession
    // Reset.
    highvolbar := na
if smavolcompare
    // Begin count.
    highvolbar := 0
else if not na(highvolbar)
    // A count is happening; increment it.
    highvolbar := highvolbar + 1

last_bar = timestamp(year, month, dayofmonth + 1, 15, 15, 0) == time_close

if (last_bar)
    highvolbar:=0
plot(highvolbar)