在 Pine Script 中,您如何才能每天做某事一次,或者跟踪当天是否已经完成某事?

In Pine Script, how can you do something once per day, or keep track if something has been done yet that day?

我正在编写 TradingView 脚本 (Pine),我正在尝试在 5 分钟图表上使用我的每日柱线策略。为此,我基本上每天只需要检查一次条件。

我可以通过使用一个布尔变量(例如 dailyCheck = false)来做到这一点,并在我 运行 该代码时将其设置为 true,然后在新的一天将其重置。

有人知道怎么做吗?从我在松树手册中读到的内容来看,它说你可以获得 unix 时间......但我不知道如何使用它并且我无法打印任何东西,除了以绘图形式的数字,所以我不知道了解如何判断新的一天何时开始。提前致谢!

版本 1

有很多方法可以检测日期的变化。 Session and time information 用户手册页面显示了一些。

我喜欢检测 dayofweek or dayofmonth 内置变量的变化:

//@version=4
study("Once per Day")
var dailyTaskDone = false
newDay = change(dayofweek)
doOncePerDay = rising(close, 2)     // Your condition here.
dailyTaskDone := doOncePerDay or (dailyTaskDone and not newDay)

plotchar(newDay, "newDay", "▼", location.top, transp = 60)
plotchar(doOncePerDay, "doOncePerDay", "•", location.top, transp = 0)
bgcolor(dailyTaskDone ? color.orange : na)

版本 2

根据 Michel 的评论,这使用了更强大的日期变化检测:

//@version=4
study("Once per Day")
var dailyTaskDone = false
newDay = change(time("D"))
doOncePerDay = rising(close, 2)     // Your condition here.
dailyTaskDone := doOncePerDay or (dailyTaskDone and not newDay)

plotchar(newDay, "newDay", "▼", location.top, transp = 60)
plotchar(doOncePerDay, "doOncePerDay", "•", location.top, transp = 0)
bgcolor(dailyTaskDone ? color.orange : na)

对于 OP,v3 版本:

//@version=3
study("Once per Day v3")
dailyTaskDone = false
newDay = change(time("D"))
doOncePerDay = rising(close, 2)     // Your condition here.
dailyTaskDone := doOncePerDay or (dailyTaskDone[1] and not newDay)

plotchar(newDay, "newDay", "▼", location.top, transp = 60)
plotchar(doOncePerDay, "doOncePerDay", "•", location.top, transp = 0)
bgcolor(dailyTaskDone ? orange : na)