Вычислить совокупный объем за сеанс в pine-script

Я хочу вычислить совокупный объем баров - в течение каждой торговой сессии - в 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] (объем на предыдущем баре) + объем на текущем баре.

Что ты пытаешься здесь сделать sum := session_timeframe ? cum(nz(volume[i])) : na? session_timeframe это строка.

vitruvius 31.05.2019 17:49

Кроме того, я не уверен, что session_bar_counter работает правильно. Если я рисую это, я всегда получаю ноль.

vitruvius 31.05.2019 17:51

Эй, спасибо, что заглянул, Барис. Да, вы правы, session_timeframe — это строка. Я хочу получить сумму всех баров громкости для каждого session_timeframe. Я попытался изменить условие на session_timeframe == "D", но все равно это не помогло.

Silviu 02.06.2019 20:47

Мне удалось выяснить, что у меня проблема с браузером и нужно будет разобраться с телевизором. Другие люди не получают ошибку, которую получаю я (т. е. сценарий не может быть переведен) в приведенном выше сценарии.

Silviu 02.06.2019 20:51

Что касается вашего второго наблюдения относительно session_bar_counter, то оно работает нормально, пока таймфрейм на графике внутридневной. Вот и вся цель скрипта - внутридневная. Вот пример переменной, правильно подсчитывающей 4-часовой период внутри сессии: tradeview.com/x/sTGSCo1Y Я хочу, чтобы для каждого из этих внутридневных баров я получал кумулятивный объем, который является суммой всех объемов для всех баров, включая текущий, для каждой сессии. Я также планировал ограничить количество сеансов до 100, чтобы избежать сбоев ТВ на малых таймфреймах.

Silviu 02.06.2019 21:04

Я заставил это работать, отправил ответ. Все еще пытаюсь найти решение для среднего значения индикатора за 100 сеансов.

Silviu 02.06.2019 22:05
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
6
5 429
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
//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, но используете ли вы его?

JoJo 29.05.2021 16:16

Я попытался скопировать/вставить это в торговый вид и добавить в корзину, но это дает мне Add to Chart operation failed, reason: Script could not be translated from: for i = 1 to Period

demonicdaron 24.06.2021 18:02

Другие вопросы по теме