Pinescript / Pine Script - 查找一年中两个时间和日期之间的周末数量



我有两个"times";(unix时间戳*1000(,并希望从算法上计算它们之间的周末数。

一开始我想数所有不是第7周(星期六(或第0周(星期日(的日子,而是for循环&而循环并没有立即工作(+886400000=一天(。

此外,周数也不够,因为第二个";时间";可以直接是新一周的第一个小节,尽管UTC,但这与周号不起作用。

我不想展示它——这里没有任何会话内容是正确的,只有数字。

目标实际上是在未来计划同样的时间,但周末会带来问题。

//@version=5
indicator("Number of weekends & Day of year", overlay=true)
// functions
is_leap_year(y) =>
is_leap = false

if y % 100 == 0
is_leap := y % 400 == 0
else
is_leap := y % 4 == 0
day_of_year(y, m, d) =>
k = is_leap_year(y) ? 1 : 2

n = int((275 * m) / 9.0) - k * int((m + 9) / 12.0) + d - 30
ymd(y, n) => // date from year & doy
k = is_leap_year(y) ? 1 : 2
m = int((9 * (k + n)) / 275.0 + 0.98)
m := n < 32 ? 1 : m
d = n - int((275 * m) / 9.0) + k * int((m + 9) / 12.0) + 30

[y, m, d]
weekends_between(start, end) =>
runner = start
count_weekends = 0

while runner < end    
if dayofweek(runner) == 7
count_weekends := count_weekends + 1

runner := runner + 86400000

count_weekends
// definition dates
start = timestamp(2022, 03, 21, 10, 30, 0)
end = timestamp(2022, 04, 04, 10, 30, 0)
// weekends
runner = start
days = 0
week_ends = 0
while runner < end
days := days + 1

if dayofweek(runner) == 7
week_ends := week_ends + 1
runner := runner + 86400000 // one day
// day of year
is_leap = is_leap_year(year)
doy_1 = day_of_year(str.tonumber(str.format("{0,date,y}", start)), str.tonumber(str.format("{0,date,MM}", start)), str.tonumber(str.format("{0,date,d}", start)))
doy_2 = day_of_year(str.tonumber(str.format("{0,date,y}", end)), str.tonumber(str.format("{0,date,MM}", end)), str.tonumber(str.format("{0,date,d}", end)))
// fazit:
// diff of (doy_2 - doy_1) equals days
// week_ends gives number of weekends

最新更新