Объявления – Robo.trading

Объявления

  • Объявление переменной
  • Присвоение переменных

Объявление переменной

Переменные в Pine объявляются специальным символом = и необязательным ключевым словом var одним из следующих способов:

<identifier> = <expression>
<type> <identifier> = <expression>
var <identifier> = <expression>
var <type> <identifier> = <expression>

<identifier> это имя объявляемой переменной.

<type> может быть одним из предопределенных ключевых слов: float, int, bool, color, string, line или label. Однако в большинстве случаев явное объявление типа является излишним, потому что тип автоматически выводится из <expression> справа от = во время компиляции, поэтому решение об их использовании часто является вопросом предпочтения.

Например:

baseLine0 = na // compile time error!
float baseLine1 = na // OK
baseLine2 = float(na) // OK

В первой строке примера компилятор не может определить тип переменной baseLine0, потому что na — это общее значение неопределенного типа. Объявление переменной baseLine1 корректно, так как ее тип с плавающей точкой объявлен явно. Объявление переменной baseLine2 также корректно, поскольку ее тип может быть получен из выражения float(na), которое является явным приведением значения na к типу float. Объявления baseLine1 и baseLine2 эквивалентны.

Ключевое слово var — это специальный модификатор, который предписывает компилятору создать и инициализировать переменную только один раз. Такое поведение очень полезно в тех случаях, когда значение переменной должно сохраняться через итерации скрипта на последовательных барах. К примеру, предположим, что мы хотим посчитать количество зеленых баров на графике:

//@version=4
study("Green Bars Count")
var count = 0
isGreen = close >= open
if isGreen
count := count + 1
plot(count)

Без модификатора var счетчик переменных сбрасывался бы на ноль (теряя таким образом свое значение) каждый раз, когда новое обновление бара запускало перерасчет скрипта.

В Pine v3 можно было бы написать исследование «Green Bars Count» без использования ключевого слова var:

//@version=3
study("Green Bars Count")
count = 0 // These two lines could be replaced in v4
count := nz(count[1], count) // with 'var count = 0'
isGreen = close >= open
if isGreen
count := count + 1
plot(count)

Код v4 более удобочитаем и может быть более эффективным, если, например, переменная count инициализируется затратным вызовом функции вместо 0.

Примеры простых объявлений переменных:

src = close
len = 10
ma = sma(src, len) + high

Примеры с модификаторами типов и ключевым словом var:

float f = 10 // NOTE: while the expression is of type int, the variable is float
i = int(close) // NOTE: explicit cast of float expression close to type int
r = round(close) // NOTE: round() and int() are different... int() simply throws fractional part away
var hl = high - low

Пример, иллюстрирующий эффект ключевого слова var:

// Creates a new label object on every bar:
label lb = label.new(bar_index, close, text="Hello, World!")
// Creates a label object only on the first bar in history:
var label lb = label.new(bar_index, close, text="Hello, World!")

Присвоение переменных 

Изменяемая переменная — это переменная, которой можно присвоить новое значение. Для присвоения переменной нового значения должен использоваться оператор :=. Переменная должна быть объявлена до того, как ей будет присвоено значение (см. объявление переменных выше).

Тип переменной определяется во время объявления. С этого момента переменной может быть присвоено значение выражения, только если и выражение, и переменная принадлежат к одному и тому же типу, в противном случае произойдет ошибка компиляции.

Пример назначения переменной:

//@version=4
study("My Script")
price = close
if hl2 > price
price := hl2
plot(price)
/

Robo.Trading

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