рассчитать количество баров между первым и последним барами, которые удовлетворяют условию - PullRequest
0 голосов
/ 24 апреля 2020

пытается создать индикатор, который рисует линию на последнем баре, соответствует условию, но проблема в том, чтобы нарисовать линию на каждом баре, который соответствует условию. Как найти последний бар, где условие было истинным, и рассчитать количество баров между первым и последним барами, которые удовлетворяют условию? я пытался использовать инструмент измерения для подсчета столбцов между первым и последним столбцом, условие было истинным, но мне нужно сделать это с помощью кода

  LP=low
//p is an input from the user which is a price
if((LP==p))
   line.new......

1 Ответ

0 голосов
/ 28 апреля 2020

Этот код сохраняет номер бара, где условие впервые становится истинным, и всякий раз, когда оно снова становится истинным, он обновляет координаты линии:

//@version=4
study("", "", true)
// Use your condition here.
cond = rising(close, 5)

var int firstBar = na
var line ln = na
if cond
    if na(firstBar)
        // Save first bar where cond is true.
        firstBar := bar_index
    if na(ln)
        // Line wasn't drawn yet; draw it.
        ln := line.new(firstBar, high, bar_index, high, width = 5)
        // Fudge return type of `if` block so compiler doesn't complain (thx midtownsk8rguy for the trick).
        int(na)
    else
        // Line was already drawn a first time, change its coordinates.
        line.set_xy2(ln, bar_index, high)
        int(na)
plotchar(cond, "cond", "•", location.top)

enter image description here

...