Я хочу вычислить совокупный объем баров - в течение каждой торговой сессии - в pine-script (TradingView.com). Я написал скрипт ниже, но получаю сообщение об ошибке "Скрипт не может быть переведен из: for i = 1 в session_bar_counter"
Я пробовал следующее решение, но оно не работает.
session_timeframe = input(defval='D', type=resolution)
// Bars since session started:
session_bar_counter = n - valuewhen(change(time(session_timeframe)) != 0, n, 0)
CumVol() =>
for i = 1 to session_bar_counter
sum = 0.0
sum := session_timeframe ? cum(nz(volume[i])) : na
sum
plot(series=CumVol(), title = "Cumulative volume", color=red, linewidth=4)
Ожидаемый результат должен состоять в том, что линейный график сбрасывается каждый день и кумулятивный объем. Например, для первого бара сессии значением будет объем этого бара. На втором баре значением будет объем[1] (объем на предыдущем баре) + объем на текущем баре.
Кроме того, я не уверен, что session_bar_counter работает правильно. Если я рисую это, я всегда получаю ноль.
Эй, спасибо, что заглянул, Барис. Да, вы правы, session_timeframe — это строка. Я хочу получить сумму всех баров громкости для каждого session_timeframe. Я попытался изменить условие на session_timeframe == "D", но все равно это не помогло.
Мне удалось выяснить, что у меня проблема с браузером и нужно будет разобраться с телевизором. Другие люди не получают ошибку, которую получаю я (т. е. сценарий не может быть переведен) в приведенном выше сценарии.
Что касается вашего второго наблюдения относительно session_bar_counter, то оно работает нормально, пока таймфрейм на графике внутридневной. Вот и вся цель скрипта - внутридневная. Вот пример переменной, правильно подсчитывающей 4-часовой период внутри сессии: tradeview.com/x/sTGSCo1Y Я хочу, чтобы для каждого из этих внутридневных баров я получал кумулятивный объем, который является суммой всех объемов для всех баров, включая текущий, для каждой сессии. Я также планировал ограничить количество сеансов до 100, чтобы избежать сбоев ТВ на малых таймфреймах.
Я заставил это работать, отправил ответ. Все еще пытаюсь найти решение для среднего значения индикатора за 100 сеансов.





//version=3
study("[FMF] Volume Buzz v2", shorttitle = "[FMF] Volume Buzz", overlay=true)
session_timeframe = input(defval='D', type=resolution)
session_bar_counter = n - valuewhen(change(time(session_timeframe)) != 0, n, 0)
CumVol(TimeFrame, Period) =>
sum = volume
for i = 1 to Period
sum := sum + nz(volume[i])
sum
plot(CumVol(session_timeframe,session_bar_counter), color=green)
CumVol принимает параметр TimeFrame, но используете ли вы его?
Я попытался скопировать/вставить это в торговый вид и добавить в корзину, но это дает мне Add to Chart operation failed, reason: Script could not be translated from: for i = 1 to Period
Что ты пытаешься здесь сделать
sum := session_timeframe ? cum(nz(volume[i])) : na?session_timeframeэто строка.