Требуется количество баров (торговых дней) между двумя датами в Pinescript
У меня есть требование рассчитать количество торговых дней между сегодняшним днем и предыдущей датой. Этот счет исключает все праздники.
Я выполнил расчет с использованием приведенного ниже скрипта, но результат верен только для последнего бара, так как для предыдущих столбцов столбцы уменьшаются.
Мое требование состоит в том, чтобы разница между сегодняшней и предыдущей датой определялась как постоянная, которая будет работать от 1-го бара до последнего бара.
Текущий выход: День 1: 1 бар, День 2: 2 бара, День 3: 3 бара,
Требуемый вывод: (123 - разница между сегодняшним днем и предыдущей датой) День 1: 123 бара, День 2: 123 бара, День 3: 123 бара,
i_fromYear = input.int(2021, 'From Year', minval=1900)
i_fromMonth = input.int(5, 'From Month', minval=1, maxval=12)
i_fromDay = input.int(18, 'From Day', minval=1, maxval=31)
fromDate = timestamp(i_fromYear, i_fromMonth, i_fromDay, 00, 00)
isGreen = close > open
gCount = ta.cum(time > fromDate and isGreen ? 1 : 0)
rCount = ta.cum(time > fromDate and not isGreen ? 1 : 0)
total = gCount + rCount
2 ответа
ashxos, я добавил для вас временную метку и функцию для получения bar_index за заданное время. Мы передаем наши 2 даты в функции и вычитаем результаты.
//@version=5
indicator("My Script")
startTime = input.time(timestamp("01 Nov 2021 00:00"), "Start Time")
endTime = input.time(timestamp("15 Nov 2021 00:00"), "End Time")
_barForTime(_t) =>
var int _bar = na
if time_close[1] <= _t and time >= _t
_bar := bar_index
_bar
firstTime = _barForTime(startTime)
secondTime = _barForTime(endTime)
barDelta = secondTime - firstTime
Удачи и удачи в трейдинге и кодировании
Это было бы решением
bars_count(start, end)=>
diff_unix_min = (end - start) / (1000 * 60)
p = str.tonumber(timeframe.period)
if timeframe.isdwm
if timeframe.isdaily
p := timeframe.multiplier * 60 * 24
if timeframe.isweekly
p := timeframe.multiplier * 60 * 24 * 7
if timeframe.ismonthly
p := timeframe.multiplier * 60 * 24 * 7 * 4
math.floor(math.max(diff_unix_min / p, 1))