Маркировка баров с закрытием, равным заданным c закрытию бара - PullRequest
1 голос
/ 10 февраля 2020

Я пробовал это разными способами, и этот метод с line.new и line.get - самый близкий, который я получил. Если я могу настроить этот метод, это здорово, или если есть совершенно другой способ, это тоже хорошо. Спасибо.

Цель состоит в том, чтобы сравнить цены закрытия последних 200 баров с самым последним закрытием (не бар в реальном времени, а самый последний исторический бар). Я хочу выделить любые бары, закрытие которых соответствует последнему закрытию. На прикрепленном рисунке вы можете видеть, что полоса в реальном времени помечена как b / c, ее закрытие в настоящее время соответствует критериям (но мне это не важно), но есть несколько других полос, которые следует пометить (см. Стрелки Я рисовал вручную), потому что они имеют равные закрытия до самого последнего закрытия.

study("t1t2_020920", overlay=true)

CloseLineFunc() =>
    if (barstate.islast)
        closeline = line.new(bar_index[200],close[1],bar_index[1],close[1])
        closeline

CloseLineFunc()
a=CloseLineFunc()

x1 = line.get_x1(a)  // Returns UNIX time or bar index (depending on the last xloc value set) of the first point of the line
x2 = line.get_x2(a) // Returns UNIX time or bar index (depending on the last xloc value set) of the second point of the line
y1 = line.get_y1(a) // Returns price of the first point of the line
y2 = line.get_y2(a) // Returns price of the second point of the line

// plot(x1)
// plot(x2)
// plot(y1)
// plot(y2)


check = close == y2
plotchar(check, char='*', color=color.green, size=size.normal)

`` enter image description here

Я также думал, что это будет работать, но Я получаю результаты. Сложная задача - выяснить, как использовать значение самой последней цены закрытия, не включая бар в реальном времени, в расчетах слева от графика, а затем пересчитывать исследование таким образом каждый раз, когда печатается новый бар.

study("My Script", overlay=true)

lineprice = valuewhen(barstate.islast,close[1],0)

plot(lineprice)

check = sma(close,1) == lineprice
plotchar(check, char='*', color=color.green, size=size.normal)``

1 Ответ

2 голосов
/ 10 февраля 2020

Я думаю, это должно выглядеть примерно так:

//@version=4
study("My Script", overlay=true)

MAX_LABELS = 40
if barstate.islast
    labersNum = 0
    for i = 1 to 4999
        if close[i] == close
            label.new(time[i], high[i], xloc=xloc.bar_time, yloc=yloc.abovebar, style=label.style_arrowdown)
            labersNum := labersNum + 1
            if labersNum >= MAX_LABELS
                break

Скрипт должен быть настроен для поддержки последних баров не в реальном времени и изменения меток, если есть новые бары, но я думаю, что этот скрипт достаточно для начала.

...