В Pine Script, как вы можете делать что-то один раз в день или отслеживать, если что-то уже было сделано в тот день? - PullRequest
0 голосов
/ 23 января 2020

Я работаю над сценарием TradingView (Pine) и пытаюсь использовать свою стратегию Daily-bar на 5-минутном графике. Для этого мне нужно проверять условия только один раз в день.

Я могу сделать это, используя булеву переменную, такую ​​как dailyCheck = false, и установить для нее значение true, когда я запускаю этот код, а затем сбрасываю его в новый день.

Кто-нибудь знает, как go об этом? Из того, что я прочитал в сосновом руководстве, говорится, что вы можете получить unix время ... но я не знаю, как с этим работать, и я не могу напечатать ничего, кроме чисел в виде графика, поэтому я могу ' Не могу понять, как сказать, когда начался новый день. Заранее спасибо!

1 Ответ

3 голосов
/ 23 января 2020

Версия 1

Существует множество способов обнаружить смену дня. Информация о сеансе и времени Страница руководства пользователя показывает несколько. В этой записи FAQ приведен еще один пример.

Мне нравится обнаруживать изменения во встроенных переменных dayofweek или 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)

enter image description here

Версия 2

После комментария Мишеля используется более надежное обнаружение смены дня:

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