Обзор аннотаций – Robo.trading

Обзор аннотаций

  • Аннотация study
  • Аннотация plot
  • Входные данные input
  • Логический ввод
  • Целочисленный ввод
  • Ввод с плавающей точкой
  • Ввод тикера и таймфрейма
  • Ввод периода сеанса
  • Ввод источника данных
  • Параметр options
  • Уровни цен, hline
  • Заливка фона с помощью fill
  • Раскраска баров с помощью barcolor
  • Раскраска фона с помощью bgcolor

 

Аннотация study 

Каждый скрипт индикатора [1] должен содержать один вызов функции аннотации study, которая имеет следующую форму записи:

study(title, shorttitle, overlay, format, precision)

Аннотация study определяет основные свойства индикатора. Обязательным является только титульный параметр. Он определяет название индикатора. Это название будет использоваться в диалоге “Индикаторы” и не зависит от названия, используемого для сохранения скрипта в вашей Личной библиотеке.

shorttitle — краткое название индикатора, отображаемого на графике, если оно должно отличаться от значения title.

overlay это логичный аргумент. Если true, то индикатор будет добавлен в виде наложения поверх основного графика. Если false, он будет добавлен в отдельную панель. Значение по умолчанию — false. Обратите внимание: если вы изменяете значение параметра в скрипте, который уже находится на графике, вам нужно использовать кнопку «Добавить на график», чтобы применить изменение.

format определяет тип форматирования, используемого для значений индикатора, отображаемых на оси цен, в значениях индикатора или в окне данных. Возможные значения: format.inheritformat.price и format.volume. По умолчанию format.inherit используют параметры формата из графика, только если они также не используются precision=, и в этом случае он переопределит эффект format.inherit. Когда используется format.price, точность по умолчанию будет «2», если другое не указанно с помощью precision=. Когда используется format.volume, формат эквивалентен precision=0 используемому в более ранних версиях Pine, где «5183» становится «5,183K».

precision— количество цифр после числа с плавающей запятой, используемое для форматирования значений индикатора. Оно должно быть неотрицательным целым числом и не больше 16. Если не указано, будет использоваться форматирование из родительской серии на графике. Если пропустить, то будет использовано форматирование из родительских серий на графике. Если формат format.inherit и используется параметр precision со значением, то индикатор не будет наследовать форматирование от настроек графика, а вместо него будет использоваться указанное значение, как если бы использовался format=format.price.

Сноска

Pine также имеет функцию аннотации стратегии, которая используется для создания стратегии тестирования на истории, а не индикатора.

Аннотация plot

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

plot(close)

Автоматическое преобразование типов Pine позволяет также использовать любое числовое значение в качестве аргумента. Например:

plot(125.2)

В этом случае значение 125,2 будет автоматически преобразовано в значение типа серии, которое будет иметь одно и то же число на каждом столбце. Диаграмма будет представлена в виде горизонтальной линии.

Аннотация plot имеет множество дополнительных параметров, в частности те, которые устанавливают стиль отображения линии: stylecolorlinewidthtransparency и др.

Значение параметра color можно определять по-разному. Если, например color.red, это константа цвета, то вся линия будет построена с использованием красного цвета:

plot(close, color=color.red)

Значение color также может быть выражением ряда значений цвета. Эта серия цветов будет использоваться для окраски визуализированной линии.

Например:

c = close >= open ? color.lime : color.red
plot(close, color = c)

Параметр offset указывает сдвиг, используемый при построении линии (отрицательные значения сдвигаются влево, а положительные — вправо) [1].

Например:

//@version=4
study("My Script 12", overlay=true)
plot(close, color=color.red, offset=-5)
plot(close, color=color.lime, offset=5)

Как видно на скриншоте, красная серия сдвинута влево (поскольку значение аргумента отрицательное), а зеленая серия сдвинута вправо (ее значение положительное).

Сноски

В Pine есть встроенная функция offset, которая сдвигает значения серии вправо, в то время как значения «вне диапазона» отбрасываются. Преимущество функции offset заключается в том, что ее результат может быть использован в других выражениях для выполнения сложных вычислений. В случае со смещением параметра функции plot сдвиг носит косметический характер; фактические значения в серии не сдвигаются.

Входные данные input

Функция аннотации input позволяет пользователям скрипта изменять выбранные значения, которые сценарий затем может использовать в своих вычислениях или логике, без необходимости изменять код скрипта.

Специальные виджеты поставляются в диалоговом окне «Настройки/входы» для каждого типа ввода. Можно также задать описание значения, а также минимальные/максимальные значения и шаг изменения. Если тип входной переменной не может быть выведен на этапе компиляции, его можно явно определить с помощью параметра type.

Pine поддерживает следующие типы ввода:

  • input.bool,
  • input.integer,
  • input.float,
  • input.string,
  • input.symbol,
  • input.resolution,
  • input.session,
  • input.source.

В следующих примерах показано, как создать каждый тип ввода и как выглядит его виджет.

Логический ввод

b = input(title="On/Off", type=input.bool, defval=true)
plot(b ? open : na)

Целочисленный ввод

i = input(title="Offset", type=input.integer, defval=7, minval=-10, maxval=10)
plot(offset(close, i))

Ввод с плавающей точкой

f = input(title="Angle", type=input.float, defval=-0.5, minval=-3.14, maxval=3.14, step=0.2)
plot(sin(f) > 0 ? close : open)

Ввод тикера и таймфрейма

sym = input(title="Symbol", type=input.symbol, defval="SPY")
res = input(title="Resolution", type=input.resolution, defval="60")
plot(close, color=color.red)
plot(security(sym, res, close), color=color.green)

Виджет ввода символов имеет встроенный поиск символов, который автоматически активируется при вводе первых символов тикера.

Ввод периода сеанса

s = input(title="Session", type=input.session, defval="24x7")
plot(time(period, s))

Ввод источника данных

src = input(title="Source", type=input.source, defval=close)
ma = sma(src, 9)
plot(ma)

Параметр options

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

choice = input(title="Choice", defval="A", options=["A", "B"])
plot(choice == "A" ? close : choice == "B" ? open : na)

Уровни цен, hline

Функция аннотации hline отображает горизонтальную линию на заданном уровне.

Например:

//@version=4
study(title="Chaikin Oscillator", shorttitle="Chaikin Osc")
short = input(3, minval=1)
long = input(10, minval=1)
osc = ema(accdist, short) - ema(accdist, long)
plot(osc, color=color.red)
hline(0, title="Zero", color=color.gray, linestyle=hline.style_dashed)

Номер должен быть первым аргументом hline. Значения серийного типа запрещены. Можно создать несколько горизонтальных линий с помощью hline и заполнить фон между ними полупрозрачным цветом с помощью заливки(fill).

Заливка фона с помощью fill 

Функция аннотации fill позволяет вам раскрасить фон между двумя нанесенными на график сериями или двумя горизонтальными линиями, созданными с помощью hline.

В следующем примере показано, как работает fill:

//@version=4
study("fill Example")
p1 = plot(sin(high))
p2 = plot(cos(low))
p3 = plot(sin(close))
fill(p1, p3, color=color.red)
fill(p2, p3, color=color.blue)
h1 = hline(0)
h2 = hline(1.0)
h3 = hline(0.5)
h4 = hline(1.5)
fill(h1, h2, color=color.yellow)
fill(h3, h4, color=color.lime)

Обратите внимание, что аннотация fill не может использоваться одновременно с аргументами plot и hline. В качестве обходного пути вы можете заменить вызовы hline расширением plot(<constant number>).

Например:

//@version=4
study("Fill example 2")
src = close, len = 10
ma = sma(src, len)
osc = 100 * (ma - src) / ma
p = plot(osc)
// NOTE: fill(p, hline(0)) wouldn't work, instead use this:
fill(p, plot(0))

Вы можете установить цвет заливки, используя константы, такие как color=color.red или color=#ff001a, а также сложные выражения, такие как color = close >= open ? color.green : color.red.

Пример:

//@version=4
study(title="Colored fill")
line1=sma(close, 5)
line2=sma(close, 20)
p1 = plot(line1)
p2 = plot(line2)
fill(p1, p2, color = line1 > line2 ? color.green : color.red)

Раскраска баров с помощью barcolor 

Функция аннотации barcolor позволяет указать цвет баров. Окраска может быть условной. Следующий скрипт отображает внутренние и внешние бары разными цветами:

//@version=4
study("barcolor example", overlay=true)
isUp() => close > open
isDown() => close <= open
isOutsideUp() => high > high[1] and low < low[1] and isUp()
isOutsideDown() => high > high[1] and low < low[1] and isDown()
isInside() => high < high[1] and low > low[1]
barcolor(isInside() ? color.yellow : isOutsideUp() ? color.aqua : isOutsideDown() ? color.purple : na)

Как видите, значение na оставляет бары как есть.

barcolor работает независимо от того, запущен ли скрипт в режиме overlay=true или нет.

Раскраска фона с помощью bgcolor

Функция аннотации bgcolor изменяет цвет фона скрипта. Если скрипт запущен в режиме overlay=true, он окрашивает фон графика. Используемый цвет bgcolor может быть вычислен в выражении, а дополнительный параметр transp (0–100, по умолчанию 90) позволяет управлять уровнем прозрачности.

Вот скрипт, который раскрашивает фон торговых сессий (попробуйте на EURUSD, с таймфрейме 30 минут ):

//@version=4
study("bgcolor example", overlay=true)
timeinrange(res, sess) => time(res, sess) != 0
premarket = #0050FF
regular = #0000FF
postmarket = #5000FF
color notrading = na
sessioncolor = timeinrange("30", "0400-0930") ? premarket :
  timeinrange("30", "0930-1600") ? regular :
  timeinrange("30", "1600-2000") ? postmarket : notrading
bgcolor(sessioncolor, transp=75)

/

Robo.Trading

eVe Developer
Мы используем cookie-файлы для наилучшего представления нашего сайта. Продолжая использовать этот сайт, вы соглашаетесь с использованием cookie-файлов.
Принять