How-to (howto, как сделать)

From TradingView Wiki
Jump to: navigation, search

Примечание: данная статья является переводом англоязычной статьи, при выявлении разночтений ориентируйтесь на англоязычную статью.

Language: English  • 日本語 • Русский


Получить реальную цену OHLC на диаграмме Heikin Ashi

Предположим, у нас есть диаграмма Heikin Ashi (или Renko, Kagi, PriceBreak и т.д.) и мы добавили к ней скрипт Pine:

//@version=2
study("Visible OHLC", overlay=true)
c = close
plot(c)

Вы можете видеть, что переменная «c» - это цена закрытия Heikin Ashi, которая не совпадает с реальной ценой OHLC. Поскольку встроенная переменная «close» всегда является значением, которое соответствует видимой строке (или свече) на диаграмме.

Итак, как мы получаем реальные цены OHLC в коде Pine Script, если текущий тип диаграммы нестандартен? Мы должны использовать функцию ‘security’ в сочетании с функцией «tickerid». Вот пример:

//@version=2
study("Real OHLC", overlay=true)
t = tickerid(syminfo.prefix, ticker)
realC = security(t, period, close)
plot(realC)

Аналогичным образом мы можем получить другие цены OHLC: open, high and low (открытые, высокие и низкие).

Plot buy/sell стрелки на диаграмме

Вы можете использовать plotshape со стилем shape.arrowup и shape.arrowdown:

study('Ex 1', overlay=true)
data = close >= open
plotshape(data, color=lime, style=shape.arrowup, text="Buy")
plotshape(not data, color=red, style=shape.arrowdown, text="Sell")

Buy sell chart1.png

Вы можете использовать функцию plotchar с любым символом юникода:

study('buy/sell arrows', overlay=true)
data = close >= open
plotchar(data, char='↓', color=lime, text="Buy")
plotchar(data, char='↑', location=location.belowbar, color=red, text="Sell")

Buy sell chart2.png

График горизонтальной линии (перемещение)

В Pine есть функция hline. Но теперь он ограничивается только значением постоянной графика. Ниже приведено в Pine Script обходное решение для изменения hline.

//@version=2
study("Horizontal line", overlay=true)
plot(close[10], trackprice=true, offset=-9999)
// trackprice=true plots horizontal line on close[10]
// offset=-9999 hides the plot
plot(close, color=#FFFFFFFF) // forces to show study

График вертикальной линии при условии

//@version=2
study("Vertical line", overlay=true, scale=scale.none)
cond = barstate.islast
plot(cond ? 1e20 : na, style = histogram)

Доступ к предыдущему значению

//@version=3
//...
s = 0.0
s := nz(s[1]) // Accessing previous values
if (condition)
    s := s + 1

Получить 5-дневный максимум

Этот скрипт рисует звезду с 5-дневным максимумом при последнем баре

//@version=3
study("Range Analysis", overlay=true)

leftborder = timenow - time < 1000 * 60 * 60 * 24 * 5 // 5 day 
rightborder = barstate.islast

max = high
max := na(max[1]) ? max : max[1]
if high > max
    max := high

val = rightborder ? max[1] : na
plotchar(val, location=location.absolute)
bgcolor(leftborder and not rightborder ? aqua : na, transp=70)

Найти наибольшее/наименьшее значение на всём датасете

//@version=3
study("My Script")

biggest(series) =>
    max = 0.0
    max := nz(max[1], series)
    if series > max
        max := series
    max

smallest(series) =>
    min = 0.0
    min := nz(min[1], series)
    if series < min
        min := series
    min

plot(biggest(close), color=green)
plot(smallest(close), color=red)

Обратиться к последнему непустому значению

Пример ниже поможет избежать гэпов, состоящих из na значений.

//@version=3
study("My Script")
series = close >= open ? close : na
vw = valuewhen(not na(series), series, 0)
plot(series, style=linebr, color=red) // плотит na значения 
plot(vw) // все na значения заменены последним непустым значением

Предыдущая статья: Стратегии, Следующая: Ошибки компиляции Pine, Вверх: Pine Script Tutorial/ru