首页 > 解决方案 > 在 Pine Script 中,您如何每天做一次某事,或者跟踪当天是否已完成某事?

问题描述

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

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

有谁知道该怎么做?从我在 pine 手册中读到的内容中,它说你可以获得 unix 时间......但我不知道如何使用它,除了数字形式的情节之外,我无法打印任何东西,所以我想不出了解如何判断新的一天何时开始。提前致谢!

标签: unix-timestamppine-scriptalgorithmic-trading

解决方案


版本 1

有很多方法可以检测一天的变化。会话和时间信息用户手册页面显示了一些。

我喜欢检测dayofweekdayofmonth内置变量的变化:

//@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)

推荐阅读