在 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)
我正在编写 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)