Ключевые слова, грамматика, настройки
Структура кода
Общая структура кода в Pine:
<version>
<declaration_statement>
<code>
Примечание
ФМЗ поддерживает язык Pine с комментариями: однострочные комментарии//Многострочные комментарии/* */Например, в примере с комментариями:
pine
[macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9) // 计算MACD指标
/*
plot函数在图表上画出指标线
*/
plot(macdLine, color = color.blue, title='macdLine')
plot(signalLine, color = color.orange, title='signalLine')
plot(histLine, color = color.red, title='histLine')
Версия
Компиляторные инструкции следующего вида сообщают, в какой версии Пинь был написан сценарий:
pine
//@version=5
Вы можете пропустить в коде, что является версией 5 по умолчанию//@version=5。
Заявление
Заявление определяет тип сценария, который в свою очередь определяет, что в нем разрешено, и как его использовать и выполнять. Настраивает ключевые атрибуты сценария, такие как его название, где он будет появляться, когда он будет добавлен в график, точность и формат показаний, которые он показывает, а также числовые значения, управляющие некоторыми действиями при его запуске, такие как максимальное количество изображенных объектов, которые он будет показывать в графике.indicator()илиstrategy()Заявление.
Код
Сценарий, не содержащий комментарии или инструкции компилятора, является предложением, реализующим алгоритм сценария. Сценарий может быть одним из этих элементов.
- Заявление переменной
- Переоценка переменной
- Заявление функции
- Встроенные функции, пользовательские функции
if,for,whileилиswitchСтруктура и т.д.
Предложения можно составить разными способами.
- Некоторые предложения могут быть выражены в одной строке, например, большинство заявлений переменных, содержащих только одну строку для вызова функции или однострочные заявления функции. Другие, как структуры, всегда нуждаются в нескольких строках, поскольку они требуют локального блока.
- Глобальные высказывания в сценарии (то есть части, которые не относятся к локальным блокам) не могут быть использованы в качестве
空格или制表符(таб-клавиши) начинаются. Их первый символ также должен быть первым символом строки. Строки, начинающиеся с первой строки строки, по определению являются частью глобального масштаба сценария. - Структурные или многострочные функции всегда требуют
local block。 Локальный блок должен быть сжат в один значок или четыре пробела (в противном случае он будет расшифрован как последовательность кода предыдущей строки, то есть будет рассматриваться как последовательность кода предыдущей строки), и каждый локальный блок определяет другой локальный диапазон。 - Несколько одиночных предложений могут быть соединены в один ряд, используя запятую ((,) в качестве разделительного знака.
- В одной строке может быть комментарий, а может быть только комментарий.
- Строки также могут быть завершены (продолжение в нескольких строках).
Например, включает в себя три локальных блока, один в заявлениях с функциями на заказ, два в заявлениях с переменными с использованием if-структуры, следующим образом:
pine
indicator("", "", true) // 声明语句(全局范围),可以省略不写
barIsUp() => // 函数声明(全局范围)
close > open // 本地块(本地范围)
plotColor = if barIsUp() // 变量声明 (全局范围)
color.green // 本地块 (本地范围)
else
color.red // 本地块 (本地范围)
runtime.log("color", color = plotColor) // 调用一个内置函数输出日志 (全局范围)
Код смены
Длинные строки могут быть разделены на несколько строк, или "упакованы". Упакованные строки должны быть сжаты в любое количество пробелов, если только они не являются кратными числами 4 (эти границы используются для сжатия локальных блоков).
pine
a = open + high + low + close
может быть упакован в (заметьте, что количество пробелов в каждой строке не является кратным количеству 4):
pine
a = open +
high +
low +
close
Длинный вызов plot ((() может быть упакован в。
pine
close1 = request.security(syminfo.tickerid, "D", close) // syminfo.tickerid 当前交易对的日线级别收盘价数据系列
close2 = request.security(syminfo.tickerid, "240", close) // syminfo.tickerid 当前交易对的240分钟级别收盘价数据系列
plot(ta.correlation(close, open, 100), // 一行长的plot()调用可以被包装
color = color.new(color.purple, 40),
style = plot.style_area,
trackprice = true)
Однако, поскольку локальный блок грамматически должен начинаться со сжатия (((4 пробела или 1 значок), при разделе его на следующую строку, продолжение части предложения должно начинаться с более чем одного сжатия (((не равняется кратному количеству 4 пробелов)). Например:
pine
test(c, o) =>
ret = c > o ?
(c > o+5000 ?
1 :
0):
(c < o-5000 ?
-1 :
0)
a = test(close, open)
plot(a, title="a")
Временная последовательность
Временная последовательность не является типом или форматом данных, а является базовым структурным понятием в языке PINE. Она используется для хранения последовательно меняющихся во времени значений, каждое из которых соответствует определенной точке времени. Такая структура понятия временной последовательности подходит для обработки и записи серии данных, изменяющихся со временем.
Встроенные переменныеopenНапример,openВстроенная переменная записывает стоимость открытия каждого K-образа BAR, если этоopenЭто 5 минут циклов K-линии.openВ переменной записывается цена открытия каждые 5 минут K строки BAR{column}.openДля того, чтобы ссылаться на предыдущие значения в временной последовательности, мы используем[]Исторический оператор, когда политика выполняется на некоторой K-линии BAR,open[1]Означает, что цена, по которой открывается текущая K-линия BAR, соответствует начальной цене предыдущей K-линии BAR.
ХотяВременная последовательностьСтроение данных "аресты" легко вспомнить, хотя в языке PINE также есть типы массивов. Однако они и хронологические последовательности - это совершенно разные понятия.
С помощью PINE можно легко вычислить суммированные значения цены закрытия, используя только встроенные функции языка PINE, без использования циклической структуры, такой как for.ta.cum(close)Для примера, нам нужно вычислить среднее значение разницы между максимальным и минимальным значениями последних 14 K-линий BAR (то есть 14 K-линий BAR, наиболее близких к текущему моменту выполнения кода).ta.sma(high - low, 14)
Результат вызова функции на временной последовательности также оставляет след на временной последовательности.[]Исторический оператор ссылается на предыдущие значения. Например, проверка того, превышает ли закрытие текущей K-линии BAR максимальное значение наивысшего значения в последних 10 K-линий BAR (без учета текущей K-линии BAR). Можно написать:breach = close > ta.highest(close, 10)[1]Также можно написать:breach = close > ta.highest(close[1], 10)Так что...ta.highest(close, 10)[1]иta.highest(close[1], 10)Это равноценно.
Проверка выполняется следующим кодом:
pine
strategy("test pine", "test", true)
a = ta.highest(close, 10)[1]
b = ta.highest(close[1], 10)
plotchar(true, title="a", char=str.tostring(a), location=location.abovebar, color=color.red)
plotchar(true, title="b", char=str.tostring(b), location=location.belowbar, color=color.green)
Вышеуказанный тест-код выводит значения a и b на каждом BAR в их соответствующем временном ряду, и можно увидеть, что значения a и b всегда равны, поэтому эти два способа выражения эквивалентны.
Ссылки на исторические данные (history-referencing)
В Trading View есть ограничение на количество исторических ссылок (до 5000), например, следующий код:
pine
//@version=6
indicator("test")
ema = ta.ema(close, 10000) // 报错:Error on bar 0: The 'ema'->'sum' function references too many historical candles (10000), the limit is 5000.
plot(ema, "ema")
// pre10000 = ema[10000] // 报错:Invalid number of bars back specified in the history-referencing operator. It accepts a value between 0 and 5000.
// plot(pre10000, "pre10000")
На FMZ используется языковая политика PINE "Статья сделок" в "Классической библиотеке сделок на языке Pine" с параметром "Самое длинное число циклов переменных" для определения максимального количества строк ссылочных данных.
pine
indicator("test")
ema = ta.ema(close, 1000) // ema = ta.ema(close, 3000) 则报错:Invalid number 3000 of bars back specified in the history-referencing operator. It accepts a value between 0 and 2000.
plot(ema, "ema")
Параметр "наибольшее число циклов переменной" не должен быть слишком большим, в соответствующей политике можно использовать диапазон цитирования данных.
Параметры модуляции класса класса транзакций языка Pine
Показания по настройке параметров встроенного шаблона стратегии PINE "Лингвистическая библиотека сделок класса Pine".
Настройки торгов
- Исполнение
Модель закрытия цены: модель выполняется только после того, как текущий BAR заканчивается, а сделка выполняется, когда начинается нижний BAR.
Моделирование цены в режиме реального времени: при каждом изменении цены моделирование выполняется, и сделки выполняются сразу после получения сигнала. - Количество открытых позиций по умолчанию: если инструкция по торговле не указывает количество сделок, то сделки выполняются в соответствии с количеством, установленным для этого.
- Максимальная единовременная торговля: в зависимости от фактического раскрытия, в сочетании с данной параметром, определяется максимальное количество заказов на каждый заказ, чтобы избежать удара по диапазону.
- Количество пунктов скольжения:
定价货币精度Параметр и этот параметр определяют скольжение цены на момент заказа. Например, точность ценообразования установлена на 2, то есть точно до второго знака запятой, точно до 0,01. Таким образом, каждая точка скольжения цены представляет собой 0,01 ценообразования. - Наибольшее число циклов переменной: количество BAR для K-линий, влияющих на график, и
javascriptВызов в стратегииSetMaxBarLenФункции одинаковые.
Фьючерсные опционы
- Код разновидности: Код контракта, который необходимо установить только в том случае, если объект биржи является объектом нетоварной биржи.
- Минимальное количество контрактов: минимальный объем контрактов на момент заказа.
Реальные опционы
- Автоматическое восстановление: автоматическое восстановление до остановки последней стратегии.
- Количество повторных попыток заказа: если заказ не сработал, он будет аннулирован, а заказ будет перезадан. Этот параметр используется для определения максимального количества повторных попыток.
- Интервал сетевого опроса ((миллисекунд): действует только для протокола REST, контролирует интервал сетевых запросов, избегает слишком частого запроса, превышающего ограничения биржи.
- Время синхронизации аккаунтов (в секундах): период времени синхронизации данных аккаунтов.
- Время синхронизации позиций после открытия позиции ((миллисекунд): только для некоторых бирж, которые повторно открывают позиции, вызванные задержкой данных, установка большего времени синхронизации может облегчить такие проблемы.
- Умножение рычагов: Установите множитель рычагов
Торговля наличными деньгами, другие настройки
- Одноразовый объем: по умолчанию одноразовый объем действует только для наличных товаров.
- Минимальный объем: минимальный объем сделки.
- Точность ценообразования: точность цены, то есть меньшая цифра цены.
- Точность вида сделки: точность следующего заказа, т.е. маленькая цифра следующего заказа.
- Обработка: для некоторых данных, рассчитанных на основе этой настройки, 0.002 означает 2 тысячных.
- Промежуточная статистика убытков: использование статистики убытков только для отображения на диске.
- Неудачная повторная попытка ((миллисекунд): интервал повторной попытки при неудачном сетевом запросе.
- Использование агента: действует только для протокола REST.
- Скрыть распространенные ошибки сети: Скрыть распространенные ошибки в регистре.
- Переключение на базовый адрес: действует только для протокола REST.
- Отправка уведомлений: отправка сообщений в почтовый ящик и т.д.
Оформить заказ
Открытие позиции
pine
strategy(title = "open long example", pyramiding = 3) // pyramiding 允许的同方向下单的次数
strategy.entry("long1", strategy.long, 0.01) // 市价开多仓,指定分组标签为long1
strategy.entry("long2", strategy.long, 0.02, when = close > ta.ema(close, 10)) // 条件触发,执行下单,市价开多仓
strategy.entry("long3", strategy.long, 0.03, limit = 30000) // 指定(较低的)价格,计划下买单订单,等待成交开仓,限价开仓
Равновесие
pine
strategy(title = "close long example", pyramiding = 2) // pyramiding 允许的同方向下单的次数
strategy.entry("long1", strategy.long, 0.1) // 市价开多仓,指定分组标签为long1
strategy.entry("long2", strategy.long, 0.1) // 市价开多仓,指定分组标签为long2
strategy.close("long1", when = strategy.position_size > 0.1, qty_percent = 50, comment = "close buy entry for 50%") // 平仓,指定平掉分组标签为long1的仓位的50%持仓
strategy.close("long2", when = strategy.position_size > 0.1, qty_percent = 80, comment = "close buy entry for 80%") // 平仓,指定平掉分组标签为long2的仓位的80%持仓
Торговый механизм
Механизм удержания позиций в языке PINE аналогичен однонаправленному удержанию позиций. Например, при удержании позиций в многостороннем направлении ((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((
План действий
При заказе с помощью команды "заказать" при заказе, если не указана какая-либо цена, по умолчанию считается, что это рыночная цена. Кроме рыночной цены, можно также заказать через планку, которая не будет действовать сразу.Фиксированный диск/ретроспективаВ таблице "Планируемые заказы" в разделе "Информация о состоянии на момент выполнения стратегии" можно увидеть: "Система действительно заказывает только тогда, когда рыночные цены в реальном времени соответствуют условиям, которые вызывают эти плановые заказы". Таким образом, небольшие отклонения в цене совершения этих заказов являются нормальными.strategy.entryКогда мы заказываем функции, мы можем указатьlimit、stopПараметры
var isTrade = false
if not barstate.ishistory and not isTrade
isTrade := true
strategy.entry("test 1", strategy.long, 0.1, stop=close*1.3, comment="test 1 order") // stop
strategy.entry("test 2", strategy.long, 0.2, limit=close*0.7, comment="test 2 order") // limit
strategy.entry("test 3", strategy.short, 0.3, stop=close*0.6, limit=close*1.4, comment="test 3 order") // stop-limit
-
Ограничительный заказ
Установление предельной цены заказа, когда заказ является покупкой (т.е.
directionПараметры:strategy.long), заказ может быть инициирован только в том случае, если текущая рыночная цена ниже этой цены.
При заказе на продажу (т.е.directionПараметры:strategy.shortПри этом заказ может быть инициирован только в том случае, если текущая рыночная цена превышает эту цену. -
Заказ stop
Установка стоп-стоп-цены ордера, при которой ордер будет срабатывать только в том случае, если текущая рыночная цена будет выше этой цены.
При заказе на продажу, заказ будет срабатывать только тогда, когда текущая рыночная цена будет ниже этой цены. -
stop-limit заказ
Можно одновременно
limit、stopПараметр, заказ будет инициирован по первой цене, которая соответствует условиям.
Процентная доля прав
pine
//@version=5
strategy("Percent of Equity Order", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)
// 简单的均线交叉策略
longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28))
shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28))
// 如果均线交叉条件满足,则买入或卖出
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
Определеноdefault_qty_type=strategy.percent_of_equityПосле, настройкиdefault_qty_valueВ процентном соотношении ((0 ~ 100), 1 - это 1%. Заказ рассчитывается по количеству валют в счете. Например: текущий счет имеет 10000 USDT, настройка заказа на 1%, то есть заказ с использованием 100 USDT в масштабе (расчет по текущей цене при продаже).
Заявление, логическая структура, ключевые слова
var
var - ключевое слово для распределения и одноразовой инициализации переменных.
Обычно, синтаксис присвоения переменных, не содержащий ключевое слово var, приводит к тому, что значение переменной покрывается при каждом обновлении данных. Наоборот, когда используются ключевые слова var, переменные распределяются, несмотря на обновление данных, и они могут сохранять статус папки, изменяя ее только в том случае, если выполняются условия в if-expressions.
var variable_name = expression
Объяснение:
variable_name- любое имя пользовательской переменной, разрешенной в Pine Script, которое может содержать латинские символы, цифры и зачеркивание в верхней и нижней буквы_), но не с цифрами в начале).expression- любое арифметическое выражение, как определение регулярной переменной.
Пример
pine
// Var keyword example
var a = close
var b = 0.0
var c = 0.0
var green_bars_count = 0
if close > open
var x = close
b := x
green_bars_count := green_bars_count + 1
if green_bars_count >= 10
var y = close
c := y
plot(a, title = "a")
plot(b, title = "b")
plot(c, title = "c")
Переменная 'a' сохраняет закрытие первого столбца каждой строки в ряду.
Переменная 'b' сохраняет ценовую оценку на закрытие первой в серии ценовой палки на зеленый кремний.
Переменная 'c' сохраняет закрытие десятой в серии зеленой картошки.
На FMZ, это реальные цены модели, закрытие цены модели, дляvar、varipПеременные в заявлении тестируются следующим кодом:
pine
strategy("test pine", "test 1", true)
// 测试 var varip
var i = 0
varip ii = 0
// 将策略逻辑每轮改变的i、ii打印在图上
plotchar(true, title="ii", char=str.tostring(ii), location=location.abovebar, color=color.red)
plotchar(true, title="i", char=str.tostring(i), location=location.belowbar, color=color.green)
// 每轮逻辑执行都给i、ii递增1
if true
i := i + 1
ii := ii + 1
-
Модель цен в реальном времени
Вышеуказанный тест-код выполняется в два этапа: 1-й этап исторической K-линии; 2-й этап реальной K-линии;var、varipПеременные i и ii в заявлении выполняют увеличительную операцию при каждом выпуске кода стратегии, потому чтоif trueТаким образом, можно увидеть, что число, отображаемое на линии BAR результатов обратной измерения, увеличивается в 1 раз. Когда этап исторической линии K заканчивается, начинается этап реальной линии K.var、varipИз-за того, что это реальная модель цены, в K-линии BAR каждый изменение цены выполняется один раз, и поэтому в K-линии BAR каждый изменение цены выполняется один раз, а в K-линии BAR - один раз.i := i + 1иii := ii + 1Все выполняется один раз. Разница заключается в том, что ii изменяется каждый раз. Хотя i также изменяется каждый раз, но при следующем раунде выполнения логики стратегии предыдущие значения возвращаются, и значение i не обновляется до тех пор, пока текущая K-линия BAR не будет завершена (то есть при следующем раунде выполнения логики стратегии предыдущие значения не будут возвращены). -
Модель цены закрытия
Поскольку модель закрытия цены выполняет стратегическую логику только после того, как K-линия BAR заканчивается. Таким образом, в модели закрытия цены этапы исторической K-линии и этапы реальной K-линии,var、varipУказанные переменные в приведенных выше примерах выступают в полном соответствии с увеличением BAR на каждую K-линию в 1 <unk> .
varip
varip ((var intrabar persist) - ключевое слово, используемое для распределения и разовой инициализации переменных. Оно похоже на ключевое слово var, но переменные с использованием декларации varip сохраняют свои значения между обновлениями K-линий в реальном времени.
varip variable_name = expression
Объяснение:
variable_name- любое имя пользовательской переменной, разрешенное в сценарии Pine, может содержать латинские символы в верхних и нижних словах, цифры и зачеркивание_), но не с цифрами в начале).expression- любое арифметическое выражение, как при определении регулярной переменной. На первой K-линии выражение вычисляется только один раз и распределяется переменной один раз.
Пример
pine
// varip
varip int v = -1
v := v + 1
plot(v)
При использовании var, график возвращает значение bar_index. При использовании varip, то же самое происходит на исторической K-линии, но на реальной K-линии график возвращает значение, которое увеличивается на 1 для каждого tick.
Примечание
Можно использовать только с простыми типами, такими как float, int, bool, string, и с массивами этих типов.
true
Отображает значение переменной типа буль, или используется при выраженииСравнениеилиЛогикаЗначение, которое может быть вычислено в операторе.
Примечание
Смотрите такжеСравнениеОператор иЛогикаОписание оператора:
См. также
bool
false
Отображает значение переменной типа буль, а также результаты операций сравнения, логических операций.
Примечание
Смотрите такжеСравнениеОператор иЛогикаОписание оператора:
См. также
bool
if
If-ссылка определяет блок ссылки, который должен быть выполнен, чтобы удовлетворить условию выражения.
Общий код:
var_declarationX = if condition
var_decl_then0
var_decl_then1
...
var_decl_thenN
return_expression_then
else if [optional block]
var_decl_else0
var_decl_else1
...
var_decl_elseN
return_expression_else
else
var_decl_else0
var_decl_else1
...
var_decl_elseN
return_expression_else
Примечание
var_declarationX- эта переменная получает значение if-ссылки
condition- используйте блок ссылки, если условие truethenЛогика вvar_decl_then0,var_decl_then1Если условие false, используйте блокelse ifилиelseЛогика вvar_decl_else0,var_decl_else1И так далее.
return_expression_then , return_expression_else- последнее выражение в модуле или выражение из блока else возвращает конечное значение фразы. Если объявление переменной в конце, то его значение будет результатом.
Тип возвращаемого значения if зависит отreturn_expression_thenиreturn_expression_elseТипы . Когда они работают на TradingView, их типы должны совпадать: когда у вас есть значение строки в блоке else, невозможно вернуть целое число из блока then. Когда они работают на FMZ, следующий пример не ошибается, когда y значение принимает значение "open" и число, когда он составляется на графике, составляет n/a.
Пример
pine
// This code compiles
x = if close > open
close
else
open
// This code doesn’t compile by trading view
// y = if close > open
// close
// else
// "open"
plot(x)
Можно пропустить.elseБлок. В этом случае, если условие false, то для переменной var_declarationX присваивается <unk>empty (на, false или <unk>):
Пример
pine
// if
x = if close > open
close
// If current close > current open, then x = close.
// Otherwise the x = na.
plot(x)
Можно использовать множество <unk>else if<unk> блоков или вообще не использовать <unk>then<unk>, <unk>else if<unk>, <unk>else<unk> блоков перемещается четыре пробела:
Пример
pine
// if
x = if open > close
5
else if high > low
close
else
open
plot(x)
Можно игнорироватьifРезультат высказывания ((<unk>var_declarationX=<unk> может быть пропущен) <unk>. Это может быть полезно, если вам нужны побочные эффекты выражения, например, в стратегических сделках:
Пример
pine
if (ta.crossover(high, low))
strategy.entry("BBandLE", strategy.long, stop=low)
else
strategy.cancel(id="BBandLE")
If-заявления могут содержать друг друга:
Пример
pine
// if
float x = na
if close > open
if close > close[1]
x := close
else
x := close[1]
else
x := open
plot(x)
for
Структура 'for' позволяет выполнять несколько предложений повторно:
[var_declaration =] for counter = from_num to to_num [by step_num]
statements | continue | break
return_expression
var_declaration- выборочное заявление переменной, которое будет присвоено значение return_expression для обратного круга.
counter- переменная, которая сохраняет значение счетчика оборотов, увеличивается/уменьшается на 1 или step_num в каждой итерации оборота.
from_num- Начальные значения счетчика. Разрешается использование thresholds int/float thresholds/expressions.
to_num- конечная величина счетчика. Цикл прерывается, когда счетчик больше, чем to_num (или меньше, чем to_num в случае, когда from_num > to_num). Использование thresholds int/float thresholds/expressions разрешено, но они оцениваются только при первой итерации цикла.
step_num- Увеличение/уменьшение значения счетчика. Оно является выборочным. По умолчанию значение +1 или -1, в зависимости от того, какой из них является наибольшим из from_num или to_num. При использовании значения счетчик также увеличивается/уменьшается в зависимости от наибольшего из from_num или to_num, поэтому знак +/- для step_num является выборочным.
statements | continue | break- Любое количество фраз, или ключевые слова 'continue' или 'break', сжатые в 4 пробела или одну табуляцию.
return_expression- Возвратные значения цикла, если они существуют, присваиваются переменным в var_declaration. Если цикл выходит из-за ключевого слова <unk>continue<unk> или <unk>break<unk>, то возвратные значения цикла - это значения последней переменной, присвоенной перед выходом из цикла.
continue- ключевое слово, которое может быть использовано только в цикле. Оно приводит к выполнению следующей итерации цикла
break- Ключевые слова для выхода из круга.
Пример
pine
// Here, we count the quantity of bars in a given 'lookback' length which closed above the current bar's close
qtyOfHigherCloses(lookback) =>
int result = 0
for i = 1 to lookback
if close[i] > close
result += 1
result
plot(qtyOfHigherCloses(14))
for...in
for...inСтруктура позволяет выполнять несколько заявлений для каждого элемента в массиве. Она может быть использована с любыми параметрами:array_element, или используется вместе с двумя параметрами:[index, array_element]Вторая форма не влияет на функцию цикла. Она отслеживает индекс текущей итерации в первой переменной модуля.
[var_declaration =] for array_element in array_id
statements | continue | break
return_expression
[var_declaration =] for [index, array_element] in array_id
statements | continue | break
return_expression
var_declaration- заявление о выборе переменной, которая будет передана в циклreturn_expressionЗначение
index- выборочный переменный, который отслеживает текущий икодированный индекс. Индекс начинается с 0. Переменный неизменен в циклическом теле.array_elementВ подгруппе
array_element- содержит переменную для каждого элемента последовательного ряда, который будет обрабатываться в цикле. Эта переменная неизменна в циклическом теле.
array_id- Идентификатор массива, который возвращает циклическую итерацию.
statements | continue | break- Любое количество фраз, или ключевые слова 'continue' или 'break', сжатые в 4 пробела или одну табуляцию.
return_expression- возвращаемое значение цикла распределено наvar_declarationЕсли цикл выходит из-за ключевых слов 'continue' или 'break', то возвращаемым значением цикла является значение последнего присвоенного значения перед выходом из цикла.
continue- ключевое слово, которое может быть использовано только в цикле. Оно приводит к выполнению следующей итерации цикла
break- Ключевые слова для выхода из круга.
Допускается изменение элементов массива или его размера в цикле.
Здесь мы используемfor...inОднопараметрическая форма для определения того, на каждой K-линии сколько OHLC-значений K-линии больше, чем 'close' - SMA:
Пример
pine
// Here we determine on each bar how many of the bar's OHLC values are greater than the SMA of 'close' values
float[] ohlcValues = array.from(open, high, low, close)
qtyGreaterThan(value, array) =>
int result = 0
for currentElement in array
if currentElement > value
result += 1
result
plot(qtyGreaterThan(ta.sma(close, 20), ohlcValues))
Здесь, мы используем два параметра фор...in, чтобы вывести нашуisPosЗначение массива будет trueКогда они были у нас.valuesArrayСоответствующее значение в массиве является правильным:
Пример
pine
// for...in
var valuesArray = array.from(4, -8, 11, 78, -16, 34, 7, 99, 0, 55)
var isPos = array.new_bool(10, false)
for [index, value] in valuesArray
if value > 0
array.set(isPos, index, true)
if barstate.islastconfirmedhistory
runtime.log(str.tostring(isPos))
См. также
for while array.sum array.min array.max
while
whileСтроки допускают условную итерацию блоков локального кода.
variable_declaration = while boolean_expression
...
continue
...
break
...
return_expression
Объяснение:
variable_declaration- Избирательные заявления переменных.return expressionМожно задать значение для этой переменной.
boolean_expression- Если true, то выполняетсяwhileЛокальный блок фразы. Если false, то вwhileПосле высказывания продолжите выполнение сценария.
continue - continueКлючевые слова ведут к следующему размножению цикла.
break - breakКлючевые слова приводят к завершению цикла.whileПосле высказывания возвращается.
return_expression- Подарок.whileВыберите строку, которая возвращает значение фразы.
Пример
pine
// This is a simple example of calculating a factorial using a while loop.
int i_n = input.int(10, "Factorial Size", minval=0)
int counter = i_n
int factorial = 1
while counter > 0
factorial := factorial * counter
counter := counter - 1
plot(factorial)
Примечание
НачалоwhileЛокальный блок после строки должен быть сжат на четыре пробела или на один значок.whileЦиклwhileСледующий Булевой экспресс должен в конечном итоге стать ложным, или должен быть выполнен.break。
switch
Оператор switch передает контроль над одним из нескольких предложений в зависимости от условий и значения выражения.
[variable_declaration = ] switch expression
value1 => local_block
value2 => local_block
...
=> default_local_block
[variable_declaration = ] switch
boolean_expression1 => local_block
boolean_expression2 => local_block
...
=> default_local_block
Switch с выражением:
Пример
pine
// Switch using an expression
string i_maType = input.string("EMA", "MA type", options = ["EMA", "SMA", "RMA", "WMA"])
float ma = switch i_maType
"EMA" => ta.ema(close, 10)
"SMA" => ta.sma(close, 10)
"RMA" => ta.rma(close, 10)
// Default used when the three first cases do not match.
=> ta.wma(close, 10)
plot(ma)
Выберите "switch" без выражения:
Пример
pine
strategy("Switch without an expression", overlay = true)
bool longCondition = ta.crossover( ta.sma(close, 14), ta.sma(close, 28))
bool shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28))
switch
longCondition => strategy.entry("Long ID", strategy.long)
shortCondition => strategy.entry("Short ID", strategy.short)
Возвращение
Значение последнего выражения в выполняемом блоке локальных выражений.
Примечание
Использовать толькоlocal_blockПример илиdefault_local_blockПервое.default_local_blockТолько с=>Знак вводится вместе и выполняется только в том случае, если предыдущий блок не выполнен. ЕслиswitchРезультат высказывания присвоен переменной и не указанdefault_local_blockЕсли нет исполненияlocal_block, возвращаетna│ │ │switchРезультат высказывания распределяется на переменнуюlocal_blockПример должен возвращать значения того же типа.
series
series - ключевое слово, обозначающее тип серии данных.seriesКлючевые слова обычно не нужны.
Оператор
=
Используется для присвоения значения переменной, но только при декларировании переменной ((впервые используется))
:=
Оператор присвоения, присваивающий значение левой переменной. Используется для присвоения значения переменной, ранее заявленной.
!=
не равен │ выражениям любого типа │
expr1 != expr2
Возвращение
Бульвария, или ряд бульварий.
%
Модиальное число ((дополнительное целое число) <unk> применимо к числовым выражениям <unk>
expr1 % expr2
Возвращение
Целые числа или значения с плавающей точкой, или ряд значений.
Примечание
В сценарии Пайна, при исчислении остатка целых чисел, сделка будет прервана. То есть, ее окружность будет вписана в минимальное абсолютное значение. Прибыль будет иметь тот же символ, что и дивиденды.
Пример: -1 % 9 = -1 - 9 * truncate ((-1/9) = -1 - 9 * truncate ((-0.111) = -1 - 9 * 0 = -1。
%=
Модульные присвоения. Применяются для числовых выражений.
expr1 %= expr2
Пример
pine
// Equals to expr1 = expr1 % expr2.
a = 3
b = 3
a %= b
// Result: a = 0.
plot(a)
Возвращение
Целые числа или значения с плавающей точкой, или ряд значений.
*
Умножение <unk> применяется к числовым выражениям <unk>
expr1 * expr2
Возвращение
Целые числа или значения с плавающей точкой, или ряд значений.
*=
Применение умножения к числовым выражениям
expr1 *= expr2
Пример
pine
// Equals to expr1 = expr1 * expr2.
a = 2
b = 3
a *= b
// Result: a = 6.
plot(a)
Возвращение
Целые числа или значения с плавающей точкой, или ряд значений.
+
Добавление или однозначное положительное число. Применяется для числовых выражений или строки.
expr1 + expr2
+ expr
Возвращение
Бинарные строки+Возвращает объединение express1 и express2
Цифры возвращают целые числа или значения с плавающей точкой, или ряд значений:
Бинарный '+' возвращает express1 плюс express2。
1 юта + 1 юта возвращает express ((( не добавляет ничего к симметрии оператора 1 юта) [2].
Примечание
Вы можете использовать числовые операторы арифметики, а также ряды переменных. В случае ряда операторы применяются к элементам.
+=
Применение арифметического назначения <unk> применимо к числовым выражениям или строкам <unk>
expr1 += expr2
Пример
pine
// Equals to expr1 = expr1 + expr2.
a = 2
b = 3
a += b
// Result: a = 5.
plot(a)
Возвращение
Для строки возвращает последовательность expres1 и expres2. Для числа возвращает значение целых чисел или плавающих точек, или ряд значений.
Примечание
Вы можете использовать числовые операторы арифметики, а также ряды переменных. В случае ряда операторы применяются к элементам.
-
Снижение или отрицательное число. Применяется для числовых выражений.
expr1 - expr2
- expr
Возвращение
Возвращает число, число или ряд значений:
Бинарный '+' возвращает express1 минус express2。
Одной единицы-Вернуть отрицательную форму express.
Примечание
Вы можете использовать числовые операторы арифметики, а также ряды переменных. В случае ряда операторы применяются к элементам.
-=
Определение вычитания. Применимо к числовым выражениям.
expr1 -= expr2
Пример
pine
// Equals to expr1 = expr1 - expr2.
a = 2
b = 3
a -= b
// Result: a = -1.
plot(a)
Возвращение
Целые числа или значения с плавающей точкой, или ряд значений.
/
Исключение: применяется к числовым выражениям.
expr1 / expr2
Возвращение
Целые числа или значения с плавающей точкой, или ряд значений.
/=
Определение исключения <unk> применяется к числовым выражениям.
expr1 /= expr2
Пример
pine
// Equals to expr1 = expr1 / expr2.
a = 3
b = 3
a /= b
// Result: a = 1.
plot(a)
Возвращение
Целые числа или значения с плавающей точкой, или ряд значений.
<
Меньше ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠
expr1 < expr2
Возвращение
Бульвария, или ряд бульварий.
<=
меньше или равно ≠ ≠ ≠ ≠ ≠ ≠
expr1 <= expr2
Возвращение
Бульвария, или ряд бульварий.
==
Равным │ применимо к любому типу выражения │
expr1 == expr2
Возвращение
Бульвария, или ряд бульварий.
=>
Оператор '=>' используется для объявления пользовательски определенных функций иswitchВ комментариях.
Синтаксис функционной декларации:
<identifier>([<parameter_name>[=<default_value>]], ...) =>
<local_block>
<function_result>
Один.<local_block>Это нулевое число или больше.
<function_result>является переменной, выражением или модулем.
Пример
pine
// single-line function
f1(x, y) => x + y
// multi-line function
f2(x, y) =>
sum = x + y
sumChange = ta.change(sum, 10)
// Function automatically returns the last expression used in it
plot(f1(30, 8) + f2(1, 3))
Примечание
Более подробную информацию о функциях пользовательского определения вы можете найти в руководстве пользователя на страницах с функциями заявления и с библиотекой скриптов.
>
Больше чем . Применяется для числовых выражений .
expr1 > expr2
Возвращение
Бульвария, или ряд бульварий.
>=
Больший или равен │ применительно к числовым выражениям │
expr1 >= expr2
Возвращение
Бульвария, или ряд бульварий.
?:
Трехмерный условный оператор.
expr1 ? expr2 : expr3
Пример
pine
// Draw circles at the bars where open crosses close
s2 = ta.cross(open, close) ? math.avg(open,close) : na
plot(s2, style=plot.style_circles, linewidth=2, color=color.red)
// Combination of ?: operators for 'switch'-like logic
c = timeframe.isintraday ? color.red : timeframe.isdaily ? color.green : timeframe.isweekly ? color.blue : color.gray
plot(hl2, color=c)
Возвращение
Если express1 оценивается как true, то express2 - как true, в противном случае - как express3. Значения нуля ((0 и NaN+, Infinity,-Infinity) считаются false, а все остальные значения - как true.
Примечание
Если вам это не нужно, используйте na в качестве ветви <unk>else<unk>.
Вы можете использовать два или более операторов: для реализации фразы, подобной фразе фразы "switch" (см. пример выше).
Вы можете использовать числовые операторы арифметики, а также ряды переменных. В случае ряда операторы применяются к элементам.
См. также
na
[]
Подсерия ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠
expr1[expr2]
Пример
pine
// [] can be used to "save" variable value between bars
a = 0.0 // declare `a`
a := a[1] // immediately set current value to the same as previous. `na` in the beginning of history
if high == low // if some condition - change `a` value to another
a := low
plot(a)
Возвращение
Ряд значений.
См. также
math.floor
and
Логика AND ≠ применима к булевым выражениям ≠
expr1 and expr2
Возвращение
Бульвария, или ряд бульварий.
or
Логика OR。 применяется к булевым выражениям。
expr1 or expr2
Возвращение
Бульвария, или ряд бульварий.
not
Логическое обратное ((NOT) <unk> применимо к булевым выражениям <unk>
not expr1
Возвращение
Бульвария, или ряд бульварий.
Ключевые слова типа данных
bool
Ключевое слово типа bool для явно заявляемых переменных или параметров. Значения переменной "Bool" могут быть true, false или na.
Пример
pine
// bool
bool b = true // Same as `b = true`
b := na
plot(b ? open : close)
Примечание
Ясное упоминание типа в заявлении переменной является выборочным, если только он не инициирован na. Узнайте больше о типе Pine на странице руководства пользователя системы типов.
См. также
var varip int float color string true false
int
Ключевое слово типа int () для явно заявляемых переменных или параметров.
Пример
pine
// int
int i = 14 // Same as `i = 14`
i := na
plot(i)
Примечание
Ясное упоминание типа в заявлении переменной является выборочным, если только он не инициирован na. Узнайте больше о типе Pine на странице руководства пользователя системы типов.
См. также
var varip float bool color string
float
Ключевое слово типа float для явно заявляемых переменных или параметров.
Пример
pine
// float
float f = 3.14 // Same as `f = 3.14`
f := na
plot(f)
Примечание
Ясное упоминание типа в заявлении переменной является выборочным, если только он не инициализирован na.
См. также
var varip int bool color string
string
Ключевое слово типа "string", используемое для явно декларируемых переменных или параметров.
Пример
pine
// string
string s = "Hello World!" // Same as `s = "Hello world!"`
// string s = na // same as ""
plot(na, title=s)
Примечание
Ясное упоминание типа в заявлении переменной является выборочным, если только он не инициирован na. Узнайте больше о типе Pine на странице руководства пользователя системы типов.
См. также
var varip int float bool str.tostring str.format
color
Ключевое слово типа "color", используемое для явно декларируемых переменных или параметров.
Пример
pine
// color
color textColor = color.green
if barstate.islastconfirmedhistory
runtime.log("test", textcolor = textColor)
Примечание
Цветовое письмо имеет следующий формат: #RRGGBB или #RRGGBBAA. Буквенные пары представляют шестнадцатизначные значения от 00 до FF ((десятизначные от 0 до 255), где RR, GG и BB пары являются значениями доли красного, зеленого и синего цвета. AA - цветовая прозрачность (или доля алфа), где 00 не видна, а FF не прозрачна.
Ясное упоминание типа в заявлении переменной является выборочным, если только он не инициирован na. Узнайте больше о типе Pine на странице руководства пользователя системы типов.
См. также
var varip int float string color.rgb color.new
array
Ключевые слова для явно декларируемых переменных или параметров.array.new<type>,array.fromФункция создает объект массива ((или ID) <unk>.
Пример
pine
// array
array<float> a = na
a := array.new<float>(1, close)
plot(array.get(a, 0))
Примечание
Объекты массива всегда имеют форму массивных серий.
См. также
var array.new array.from
Objects
Объекты языка PINE являются примером пользовательско-определяемых типов (UDT), которые можно понимать как безметодные классы, позволяющие пользователям создавать в стратегии пользовательские типы, организующие различные значения в одном объекте.
Определение типа
Давайте определим тип "order" для хранения информации о заказах:
pine
type order
float price
float amount
string symbol
- использовать
typeТип объявления ключевых слов: - За ключевым словом type следует название типа.
- В первой строке type определяется название типа, а затем в четырех пробелах определяется поле, содержащее данный тип.
- Каждое поле должно указывать свой тип данных, например, int, float, string.
Создание объекта
Используйте заявленный тип, вызовnew()Функция создает объект:
pine
order1 = order.new()
pine
order1 = order.new(100, 0.1, "BTC_USDT")
pine
order1 = order.new(amount = 0.1, symbol = "BTC_USDT", price = 100)
Можно создать пустые объекты:
pine
order order1 = na
Вот пример из жизни:
pine
type order
float price
float amount
string symbol
if strategy.position_size == 0 and open > close
strategy.entry("long", strategy.long, 1)
order1 = order.new(strategy.opentrades.entry_price(strategy.opentrades - 1), strategy.opentrades.size(strategy.opentrades - 1), syminfo.ticker)
// runtime.log(order1) // 输出 {"data":{"price":46002.8,"amount":1,"symbol":"swap"},"_meta":0,"_type":"order"}
Примером может служить следующее:
pine
order1 = order.new(strategy.opentrades.entry_price(strategy.opentrades - 1), strategy.opentrades.size(strategy.opentrades - 1), syminfo.ticker)
Также можно написать в следующей форме:
pine
order order1 = na
order1 := order.new(strategy.opentrades.entry_price(strategy.opentrades - 1), strategy.opentrades.size(strategy.opentrades - 1), syminfo.ticker)
Тип объекта Использование ключевого слова var
pine
//@version=5
indicator("Objects using `var` demo")
//@type A custom type to hold index, price, and volume information.
type BarInfo
int index = bar_index
float price = close
float vol = volume
//@variable A `BarInfo` instance whose fields persist through all iterations, starting from the first bar.
var BarInfo firstBar = BarInfo.new()
//@variable A `BarInfo` instance declared on every bar.
BarInfo currentBar = BarInfo.new()
// Plot the `index` fields of both instances to compare the difference.
plot(firstBar.index, "firstBar")
plot(currentBar.index, "currentBar")
При использовании заявки ключевого слова var, которая присваивается переменной объекта пользовательского типа, она автоматически применяется ко всем полям этого объекта. Это означает, что объект, заявленный с помощью ключевого слова var, сохраняет свое состояние между каждой иерархией, без необходимости переинициализировать значения его поля в каждой иерархии.
- firstBar объявлен с использованием ключевого слова var, поэтому его поле ((index, price, vol) будет сохранять свои значения в каждой итерации, начиная с первого элемента и заканчивая последним.
- Объект currentBar не использует заявку ключевого слова var, поэтому его поле будет переинициализировано в каждой строке и будет иметь новый объект в каждой итерации.
Вы можете сравнить различия между двумя объектами, нарисовав их индексные поля. firstBar.index будет сохранять заранее установленные значения в каждой итерации, а currentBar.index будет переинициализироваться как bar_index текущего элемента.
Тип объекта для использования ключевых слов varip
pine
//@version=5
indicator("Objects using `varip` fields demo")
//@type A custom type that counts the bars and ticks in the script's execution.
type Counter
int bars = 0
varip int ticks = 0
//@variable A `Counter` object whose reference persists throughout all bars.
var Counter counter = Counter.new()
// Add 1 to the `bars` and `ticks` fields. The `ticks` field is not subject to rollback on unconfirmed bars.
counter.bars += 1
counter.ticks += 1
// Plot both fields for comparison.
plot(counter.bars, "Bar counter", color.blue, 3)
plot(counter.ticks, "Tick counter", color.purple, 3)
Использование ключевого слова varip в Pine позволяет указать, что поле с объектом будет сохраняться в течение всего выполнения сценария, а не будет перемещаться в неизвестном столбце.
В заявлениях типа Counter поле bars не использует ключевое слово varp, поэтому в каждом неустановленном столбце оно будет перемещаться назад. В поле ticks используется ключевое слово varp, поэтому оно не будет перемещаться назад в неустановленном столбце.
counter объявлен с помощью ключевого слова var, поэтому он будет сохраняться в течение всего выполнения сценария.
В каждой итерации поля bars и ticks увеличиваются на 1 ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠
Наконец, можно сравнить различия между ними, нарисовав поля counter.bars и counter.ticks. Значения counter.bars будут вращаться в каждом неподтвержденном столбце, а значения counter.ticks будут постоянно увеличиваться, пока сценарий не будет выполнен.
Изменить значение поля
pine
type order
float price
float amount
string symbol
if strategy.position_size == 0 and open > close
strategy.entry("long", strategy.long, 1)
order1 = order.new(strategy.opentrades.entry_price(strategy.opentrades - 1), strategy.opentrades.size(strategy.opentrades - 1), syminfo.ticker)
if strategy.position_size != 0
runtime.log(order1)
order1.price := 999
order1.amount := 100
runtime.log(order1)
runtime.error("stop")
Доступно:=Оператор переоценки изменяет значение поля объекта.
Набор объектов
В примере объявляется пустой массив, который сохраняет объекты пользовательско-определенного типа order:
pine
type order
float price
float amount
string symbol
arrOrder = array.new<order>()
order1 = order.new(99, 1, "BTC_USDT")
order2 = order.new(100, 2, "ETH_USDT")
array.push(arrOrder, order1)
array.push(arrOrder, order2)
runtime.log(arrOrder)
runtime.error("stop")
или
pine
type order
float price
float amount
string symbol
var array<order> arrOrder = na
arrOrder := array.new<order>()
order1 = order.new(99, 1, "BTC_USDT")
order2 = order.new(100, 2, "ETH_USDT")
array.push(arrOrder, order1)
array.push(arrOrder, order2)
runtime.log(arrOrder)
runtime.error("stop")
Объекты копирования
В Pine объекты распределяются с помощью ссылок. Когда существующие объекты распределяются на новые переменные, они оба указывают на один и тот же объект.
pine
//@version=5
indicator("")
type pivotPoint
int x
float y
pivot1 = pivotPoint.new()
pivot1.x := 1000
pivot2 = pivot1
pivot2.x := 2000
// Both plot the value 2000.
plot(pivot1.x)
plot(pivot2.x)
В следующем примере мы создаем объект pivot1 и настраиваем его поле x на 1000. Затем мы объявляем, что pivot2 содержит переменную, которая ссылается на объект pivot1, поэтому оба они указывают на один и тот же экземпляр. Таким образом, изменение pivot2.x также изменяет pivot1.x, поскольку оба они ссылаются на поле x того же объекта.
Чтобы создать копию, независимую от исходного объекта, в этом случае мы можем использовать встроенный метод copy (). В этом примере мы объявляем, что pivot2 ссылается на переменную, которая является копией объекта pivot1. Теперь изменение pivot2.x не изменяет pivot1.x, так как оно указывает на поле, в котором x является отдельным объектом:
pine
//@version=5
indicator("")
type pivotPoint
int x
float y
pivot1 = pivotPoint.new()
pivot1.x := 1000
pivot2 = pivotPoint.copy(pivot1)
pivot2.x := 2000
// Plots 1000 and 2000.
plot(pivot1.x)
plot(pivot2.x)
Следует отметить, что метод копирования в TradingView является белой копией. Если объект имеет поля особого типа (например, array), эти поля в белой копии объекта будут указывать на тот же экземпляр, что и объект.
FMZ-платформа реализует глубокую копию напрямую, без дополнительной обработки, например:
Глубокая копия
pine
//@version=5
indicator("test deepCopy")
type orderInfo
float price
float amount
type labelInfo
orderInfo order
string labelMsg
labelInfo1 = labelInfo.new(orderInfo.new(100, 0.1), "test labelInfo1")
labelInfo2 = labelInfo.copy(labelInfo1)
labelInfo1.labelMsg := "labelInfo1->2" // 修改 labelInfo1 的基础类型字段,看是否影响 labelInfo2
labelInfo1.order.price := 999 // 修改 labelInfo1 的复合类型字段,看是否影响 labelInfo2
runtime.log(labelInfo1)
runtime.log(labelInfo2)
runtime.error("stop")
Результаты тестирования, labelInfo.copy ((labelInfo1) выполняется как глубокая копия, изменение любого поля в labelInfo1 не повлияет на labelInfo2。
Methods
Методы в языке Pine - это специальные функции, связанные с встроенными или пользовательскими типами в конкретном примере. В большинстве своем они похожи на обычные функции, но предлагают более короткую и удобную грамматику. Пользователи могут напрямую использовать точечные знаки для доступа к методам в переменных, как они бы делали это при доступе к полям в объектах Pine.
Встроенные методы
Например, в одном из сценариев:
pine
//@version=5
indicator("Custom Sample BB", overlay = true)
float sourceInput = input.source(close, "Source")
int samplesInput = input.int(20, "Samples")
int n = input.int(10, "Bars")
float multiplier = input.float(2.0, "StdDev")
var array<float> sourceArray = array.new<float>(samplesInput)
var float sampleMean = na
var float sampleDev = na
// Identify if `n` bars have passed.
if bar_index % n == 0
// Update the queue.
array.push(sourceArray, sourceInput)
array.shift(sourceArray)
// Update the mean and standard deviaiton values.
sampleMean := array.avg(sourceArray)
sampleDev := array.stdev(sourceArray) * multiplier
// Calculate bands.
float highBand = sampleMean + sampleDev
float lowBand = sampleMean - sampleDev
plot(sampleMean, "Basis", color.orange)
plot(highBand, "Upper", color.lime)
plot(lowBand, "Lower", color.red)
Это можно перевести как:
pine
//@version=5
indicator("Custom Sample BB", overlay = true)
float sourceInput = input.source(close, "Source")
int samplesInput = input.int(20, "Samples")
int n = input.int(10, "Bars")
float multiplier = input.float(2.0, "StdDev")
var array<float> sourceArray = array.new<float>(samplesInput)
var float sampleMean = na
var float sampleDev = na
// Identify if `n` bars have passed.
if bar_index % n == 0
// Update the queue.
sourceArray.push(sourceInput)
sourceArray.shift()
// Update the mean and standard deviaiton values.
sampleMean := sourceArray.avg()
sampleDev := sourceArray.stdev() * multiplier
// Calculate band values.
float highBand = sampleMean + sampleDev
float lowBand = sampleMean - sampleDev
plot(sampleMean, "Basis", color.orange)
plot(highBand, "Upper", color.lime)
plot(lowBand, "Lower", color.red)
Это подтверждается поддержкой PINE.MethodsЗатем, код.array.avg(sourceArray)В этом случае можно использовать формулу методов:sourceArray.avg()。
Примечание: FMZ временно не поддерживаетсяarray.avgТакой призыв.
Определенные пользователем методы
Pine позволяет пользователю определять пользовательские методы, используемые вместе с любыми встроенными или пользовательскими объектами определенного типа. Методы определения по сути идентичны функциям определения, но имеют два ключевых отличия:
- Ключевое слово "method" должно быть в названии функции.
- параметры метода, причем тип первого параметра должен быть явно заявлен, поскольку он указывает на тип объекта, с которым будет связан метод.
Например, в следующем коде можно вставить пользовательский метод, используемый для вычисления индекса Бринга:
pine
//@version=5
indicator("Custom Sample BB", overlay = true)
float sourceInput = input.source(close, "Source")
int samplesInput = input.int(20, "Samples")
int n = input.int(10, "Bars")
float multiplier = input.float(2.0, "StdDev")
var array<float> sourceArray = array.new<float>(samplesInput)
var float sampleMean = na
var float sampleDev = na
// Identify if `n` bars have passed.
if bar_index % n == 0
// Update the queue.
sourceArray.push(sourceInput)
sourceArray.shift()
// Update the mean and standard deviaiton values.
sampleMean := sourceArray.avg()
sampleDev := sourceArray.stdev() * multiplier
// Calculate band values.
float highBand = sampleMean + sampleDev
float lowBand = sampleMean - sampleDev
plot(sampleMean, "Basis", color.orange)
plot(highBand, "Upper", color.lime)
plot(lowBand, "Lower", color.red)
Изменение на:
pine
//@version=5
indicator("Custom Sample BB", overlay = true)
float sourceInput = input.source(close, "Source")
int samplesInput = input.int(20, "Samples")
int n = input.int(10, "Bars")
float multiplier = input.float(2.0, "StdDev")
var array<float> sourceArray = array.new<float>(samplesInput)
method maintainQueue(array<float> srcArray, float value, bool takeSample = true) =>
if takeSample
srcArray.push(value)
srcArray.shift()
srcArray
method calcBB(array<float> srcArray, float mult, bool calculate = true) =>
var float mean = na
var float dev = na
if calculate
mean := srcArray.avg()
dev := srcArray.stdev() * mult
[mean, mean + dev, mean - dev]
bool newSample = bar_index % n == 0
[sampleMean, highBand, lowBand] = sourceArray.maintainQueue(sourceInput, newSample).calcBB(multiplier, newSample)
plot(sampleMean, "Basis", color.orange)
plot(highBand, "Upper", color.lime)
plot(lowBand, "Lower", color.red)
Вы можете увидеть пользовательские методы, использующие ключевые слова method declaration:maintainQueue, calcBB, где первым параметром в списке параметров являетсяarray<float>Тип <unk> означает, что методarray<float>Методы переменных типа, так что можно увидеть, что для вычисления показателя Булина используется следующий код:
pine
[sampleMean, highBand, lowBand] = sourceArray.maintainQueue(sourceInput, newSample).calcBB(multiplier, newSample)
Перезагрузка методов
В качестве простого примера, предположим, что мы хотим определить метод, связанный с типом переменных. Поскольку мы должны явно указать тип объекта, связанный с методом, определенным пользователем, нам нужно определить перегрузку для каждого типа, который мы хотим, чтобы он был идентифицирован. Ниже мы определяем метод getType (), который возвращает строки, обозначающие тип переменной, и имеет пять основных типов перегрузок:
pine
//@version=5
indicator("Type Inspection")
// @function Identifies an object's type.
// @param this Object to inspect.
// @returns (string) A string representation of the type.
method getType(int this) =>
na(this) ? "int(na)" : "int"
method getType(float this) =>
na(this) ? "float(na)" : "float"
method getType(bool this) =>
na(this) ? "bool(na)" : "bool"
method getType(color this) =>
na(this) ? "color(na)" : "color"
method getType(string this) =>
na(this) ? "string(na)" : "string"
a = 1 // a.getType(): float
b = 1.0 // b.getType(): float
c = true // c.getType(): bool
d = color.white // d.getType(): string(na)
e = "1" // e.getType(): string
runtime.log("a.getType():", a.getType())
runtime.log("b.getType():", b.getType())
runtime.log("c.getType():", c.getType())
runtime.log("d.getType():", d.getType())
runtime.log("e.getType():", e.getType())
runtime.error("stop")
Определение основного типа для каждой переменнойgetType()Какая перезагрузка будет использоваться? На FMZ-платформе, поскольку основной сценарий PINE реализован в языке Javascript, числовые типы будут рассматриваться как плавающие данные.
Встроенная функция
При вызове функции передается параметр, можно указать присвоение имени параметра, можно напрямую передать переменную в соответствующем параметре, также поддерживается смешанное использование. Например:
pine
plot(close, title="test plot") // 直接传参数 close ;指定参数 title ,赋值字符串"test plot"
После присвоения значения имени параметра переменная не может быть передана в качестве параметра, а все последующие параметры должны быть написаны в форме присвоения имени параметра.
pine
// plot(close, title="test", color.red) // 虽然plot第三个参数是颜色值,但是这样写就会报错
plot(close, title="test", color=color.red) // 正确写法
plot(close, "test", color.red) // 正确写法
timeframe
timeframe.in_seconds
Передается вtimeframeВременный цикл параметров преобразуется в секунды.
timeframe.in_seconds(timeframe)
Пример
pine
// Get chart timeframe:
i_tf = input.timeframe("1D")
// Convert timeframe to the int value (number of seconds in 1 Day):
tf = timeframe.in_seconds(i_tf)
plot(tf)
Возвращение
timeframeЧисло секунд в одной из K-линий представляет собой форму int.
параметр
timeframe(simple string) Временный промежуток.
Примечание
Дляtimeframe>= Функция '1M' рассчитывает секунды на основе 30.4167 (365/12) дней в месяце.
См. также
input.timeframe timeframe.period
ticker
ticker.heikinashi
Создание кода-идентификатора с просьбой сгладить среднее значение K-линейных значений。
ticker.heikinashi(symbol)
Пример
pine
heikinashi_close = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close)
heikinashi_aapl_60_close = request.security(ticker.heikinashi(syminfo.tickerid), "60", close)
plot(heikinashi_close)
plot(heikinashi_aapl_60_close)
Возвращение
Строка кода акции, которая может быть предоставлена функцией request.security.
параметр
symbol(simple string) Идентификатор товарного кода.
См. также
syminfo.tickerid syminfo.ticker request.security
request
request.data
Запрос внешних данных.
request.data(url, attribute)
Пример
pine
/*backtest
start: 2024-09-01 16:00:00
end: 2024-10-10 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
args: [["RunMode",1,358374],["ZPrecision",0,358374]]
*/
var chart_data = "https://www.datadata.com/api/v1/query/ebe46218-c5c6-4366-8c72-413694417976/data"
spotPrice = request.data(chart_data, "$.spot_close_price")
futuresPrice = request.data(chart_data, "$.future_close_price")
diff = futuresPrice - spotPrice
plot(diff, "永续-现货差价")
plot(futuresPrice, "期货价格", overlay=true)
plot(spotPrice, "现货价格", overlay=true)
if diff > 80 and strategy.position_size >= 0
runtime.log("diff > 80")
strategy.entry("Enter Short", strategy.short)
if diff < 60 and strategy.position_size <= 0
runtime.log("diff < 60")
strategy.entry("Enter Short", strategy.long)
Возвращение
параметрattributeОпределенная серия данных.
параметр
-
url(simple string) запрошенный источник данных url, ответ источника данных должен соответствовать требованиям (включая, по крайней мере, свойства time, data):{"data": [], "schema": ["time", "data"]}◦ Обратите внимание на формат данных, приведенный в примере:json{ "data": [ [1720051200000, "{\"spot_close_price\" : 57050.01, \"future_close_price\" : 57045.9}"], [1720137600000, "{\"spot_close_price\" : 56628.79, \"future_close_price\" : 56604.9}"], // ... ], "schema": ["time", "data"] } -
attribute(simple string) Название атрибута, возвращающее нужные данные. Например:"$.spot_close_price",использовать$.Как префикс, имя атрибута совпадает с атрибутом в поле data в запрошенном источнике данных
Если сообщение неверное, необходимо проверитьrequest.dataВременный диапазон запроса совпадает с временным диапазоном, установленным для отслеживания.
В данном примере SQL-ссылка для запроса data-data:
sql
WITH latest_data AS (
SELECT
klines.spot_1d.Time AS time,
CONCAT('{\"spot_close_price\" : ', klines.spot_1d.Close, ', \"future_close_price\" : ', klines.future_1d.Close, '}') AS data
FROM
klines.spot_1d
JOIN
klines.future_1d
ON
klines.spot_1d.Time = klines.future_1d.Time
WHERE
klines.spot_1d.Symbol = 'btc_usdt'
AND
klines.future_1d.Symbol = 'btc_usdt.swap'
AND
klines.spot_1d.Exchange = 'Binance'
AND
klines.future_1d.Exchange = 'Binance'
ORDER BY
klines.spot_1d.Time DESC
LIMIT 100
)
SELECT * FROM latest_data
ORDER BY time ASC;
На сайте FMZИсследование данныхСтраничный запрос, создание ссылок на данные, используемые в примереhttps://www.datadata.com/api/v1/query/ebe46218-c5c6-4366-8c72-413694417976/data。
request.security
Требуется другой сорт/разрешение.
request.security(symbol, timeframe, expression, gaps, lookahead, ignore_invalid_symbol, currency)
Пример
pine
s = request.security(syminfo.tickerid, "D", close) // 1 Day
plot(s)
expr = ta.sma(close, 10)
s1 = request.security(syminfo.tickerid, "240", expr) // 240 Minutes
plot(s1)
// To avoid difference in calculation on history/realtime you can request not latest values and use merge strategy flags as follows:
s2 = request.security(syminfo.tickerid, "D", close[1], barmerge.gaps_off, barmerge.lookahead_on)
plot(s2)
f() => [open, high]
[o, h] = request.security(syminfo.tickerid, "D", f())
[l, c] = request.security(syminfo.tickerid, "D", [low, close])
plot((o + h + l + c) / 4)
Возвращение
Серия требований
параметр
symbol(simple string) Код товара.timeframe(simple string) Период времени。 Пустая строка будет интерпретироваться как текущий период времени для графика。expression(series int/float/bool/color) может быть вычислен из запроса request.security и возвратить выражение. Оно может быть серией или множеством элементов, которые могут быть преобразованы в серию.gaps(barmerge_gaps) Дает запрошенную стратегию объединения данных (требует, чтобы данные автоматически объединялись с основными сериями данных OHLC). Возможные значения: barmerge.gaps_on, barmerge.gaps_off. barmerge.gaps_on - запрошенные данные объединяются с возможными разрывами.lookahead(barmerge_lookahead) Дает запрошенную стратегию объединения данных. Возможные значения: barmerge.lookahead_on, barmerge.lookahead_off. Начиная с версии 3, по умолчанию barmerge.lookahead_off. Обратите внимание, что поведение идентично реальному времени, только в истории оно отличается.ignore_invalid_symbol(const bool) опциональный параметр. Если не найдены указанные товары, определяется поведение функции: если false, то сценарий останавливается и возвращает ошибку при выполнении; если true, то функция возвращает na и продолжает выполнение. По умолчанию false.currency(simple string) конвертирует валюту, относящуюся к товару (например, OHLC), в валюту. Затем вычисляет значение после конвертации (expression). Используемый коэффициент конвертации основан на ежедневном обменном курсе FX_IDC пары за предыдущий день (в зависимости от вычисленной K-линии).
Примечание
Код PineScript, использующий эту функцию, может выполнять различные вычисления для исторических записей и реального времени.
Если вы хотите указать дополнительные параметры для запрошенного товара, например, время сделки или тип корректировки, вы можете использовать функцию ticker.new ().
Невозможно использовать переменную 'ticker' для передачи отклонения к этой функции. Вы можете использовать переменную 'ticker.new' или струнное выражение кода акций, например AAPL+MSFT*TSLA”。
В настоящее время в одном сценарии может быть не более 40 вызовов request.security.
Пожалуйста, обратите внимание, что использование данной переменной/функции может привести к перекрашиванию индикатора.
Разрешенные значения параметров разрешения:
1S, 5S, 15S, 30S - интервалы в секунды (цикл диаграммы должен быть меньше или равен запрошенному циклу)
От 1 до 1440 минут
От 1D до 365D дней
С 1 до 52 Вт в течение нескольких недель
От 1 до 12 месяцев
См. также
syminfo.ticker syminfo.tickerid timeframe.period ta.correlation barmerge.lookahead_off barmerge.lookahead_on
str
str.contains
ЕслиsourceСтрока содержитstrВ противном случае возвращается false.
str.contains(source, str)
Пример
pine
// If the current chart is a continuous futures chart, e.g “BTC1!”, then the function will return true, false otherwise.
var isFutures = str.contains(syminfo.tickerid, "!")
plot(isFutures ? 1 : 0)
Возвращение
Если вsourceНайти в строкеstr, то это true, в противном случае это false.
параметр
source(series string) Строка источникаstr(series string) Подстрока, которую нужно искать.
str.endswith
ЕслиsourceСтрока будет называтьсяstrВ конце указанной подстроки возвращается true, в противном случае возвращается false.
str.endswith(source, str)
Возвращение
ЕслиsourceСтрока будет называтьсяstrВ конце подстроки, указанной в строке, указывается true, в противном случае - false.
параметр
source(series string) Строка источникаstr(series string) Подстрока, которую нужно искать.
См. также
str.startswith
str.startswith
ЕслиsourceСтрока будет называтьсяstrВ случае, если подстрока, указанная в начале, возвращает true, в противном случае возвращает false.
str.startswith(source, str)
Возвращение
ЕслиsourceСтрока будет называтьсяstrЕсли в строке "true" указывается "true", то в строке "false" указывается "false".
параметр
source(series string) Строка источникаstr(series string) Подстрока, которую нужно искать.
См. также
str.endswith
str.substring
Возвращает новую строку, которая являетсяsourceПодстрока стринга ≠ подстрока стрингаbegin_posЗнаки начинаются в указанном индексе и расширяются доsource'end_pos - 1' для строки
str.substring(source, begin_pos)
str.substring(source, begin_pos, end_pos)
Пример
pine
sym= "EXCHANGE_NAME:SYMBOL_NAME"
pos = str.pos(sym, ":") // Get position of ":" character
tkr= str.substring(sym, pos+1) // "SYMBOL_NAME"
if barstate.islastconfirmedhistory
runtime.log(tkr)
Возвращение
Подстрока, извлеченная из исходной строки.
параметр
source(series string) источник, из которого извлекается подстрока.begin_pos(series int) начальное местоположение выделенной подстроки. Оно является эксклюзивным (( выделенная подстрока включает в себя символы этого места)end_pos(series int) место окончания。 оно является эксклюзивным ((извлеченная строка не включает в себя символы этого местоположения)。 является выборочным。 по умолчаниюsourceДлина строки.
Примечание
Индекс строки начинается с 0. Еслиbegin_posравныйend_pos, функция возвращает пустую строку .
См. также
str.contains str.pos str.match
str.tonumber
str.tonumber(string)
Возвращение
Если содержит действительные числа, то является плавающей точкой строки, иначе - na。
параметр
string(series string) представляет собой строку int или float.
str.format
Преобразование форматированных строк и значений в форматированные стринги。 Форматированные стринги могут содержать текстовый текст и один значок в скобках {} для каждого форматируемого значения。 Каждый значок включает в себя индекс, в котором будет заменен его необходимый параметр ((начиная с 0), и один из выборных знаков форматирования。 Индекс указывает, где этот параметр находится в списке параметров str.format。
str.format(formatString, arg0, arg1, ...)
Пример
pine
// The format specifier inside the curly braces accepts certain modifiers:
// - Specify the number of decimals to display:
s1 = str.format("{0,number,#.#}", 1.34) // returns: 1.3
runtime.log(s1)
// - Round a float value to an integer:
s2 = str.format("{0,number,integer}", 1.34) // returns: 1
runtime.log(s2)
// - Display a number in currency:
s3 = str.format("{0,number,currency}", 1.34) // returns: $1.34
runtime.log(s3)
// - Display a number as a percentage:
s4 = str.format("{0,number,percent}", 0.5) // returns: 50%
runtime.log(s4)
// EXAMPLES WITH SEVERAL ARGUMENTS
// returns: Number 1 is not equal to 4
s5 = str.format("Number {0} is not {1} to {2}", 1, "equal", 4)
runtime.log(s5)
// returns: 1.34 != 1.3
s6 = str.format("{0} != {0, number, #.#}", 1.34)
runtime.log(s6)
// returns: 1 is equal to 1, but 2 is equal to 2
s7 = str.format("{0, number, integer} is equal to 1, but {1, number, integer} is equal to 2", 1.34, 1.52)
runtime.log(s7)
// returns: The cash turnover amounted to $1,340,000.00
s8 = str.format("The cash turnover amounted to {0, number, currency}", 1340000)
runtime.log(s8)
// returns: Expected return is 10% - 20%
s9 = str.format("Expected return is {0, number, percent} - {1, number, percent}", 0.1, 0.2)
runtime.log(s9)
Возвращение
Форматированные строки.
параметр
formatString(series string) Формат строки.arg0, arg1, ...(series int/float/bool/string/na/int[]/float[]/bool[]/string[]) Значение, которое нужно отформатировать.
Примечание
Все скобки в нецитируемом стиле должны быть сбалансированы. Например, "ab {0} de" и "ab '}' de" являются действительными стилями, но "ab {0'}' de", "ab } de" и "'{''" не являются действительными стилями.
str.length
Возвращает целое число, соответствующее числу символов в строке.
str.length(string)
Возвращение
Число символов в исходной строке.
параметр
string(series string) Строка источника
str.lower
Возвращает новую строку, в которой все буквы преобразованы в малые.
str.lower(source)
Возвращение
Все буквы преобразованы в новые строки с маленькими буквами.
параметр
source(series string) Строка, которую нужно преобразовать
См. также
str.upper
str.upper
Возвращает новую строку, в которой все буквы преобразованы в заглавные.
str.upper(source)
Возвращение
Все буквы преобразованы в новые строки с заглавными буквами.
параметр
source(series string) Строка, которую нужно преобразовать
См. также
str.lower
str.match
Если есть совпадениеregexПравильные выражения возвращаютsourceВ противном случае возвращается 'na'。
str.match(source, regex)
Пример
pine
s = input.string("It's time to sell some EXCHANGE_NAME:SYMBOL_NAME!")
// finding first substring that matches regular expression "[\w]+:[\w]+"
var string tickerid = str.match(s, "[\\w]+:[\\w]+")
if barstate.islastconfirmedhistory
runtime.log(tickerid) // "EXCHANGE_NAME:SYMBOL_NAME"
Возвращение
sourceНовая подстрока строки, если она соответствуетregexПравильное выражение - 'na' <unk>
параметр
source(series string) Строка источникаregex(series string) Регулярное выражение, соответствующее этой строке.
Примечание
Функция возвращаетsourceПравильные выражения, впервые появившиеся в строке:
regexВстроенные в строку обратные скобки \ <unk> требуют использования дополнительных обратных скобков для перевода, например <unk>\d<unk> представляет собой правильное выражение <unk>\d<unk>。
См. также
str.contains str.substring
str.pos
ВозвращениеsourceПервое появление в строкеstrПоложение строки, в противном случае возвращается 'na'
str.pos(source, str)
Возвращение
strСтрока вsourceМесто в строке.
параметр
source(series string) Строка источникаstr(series string) Подстрока, которую нужно искать.
Примечание
Индекс строки начинается с 0.
См. также
str.contains str.match str.substring
str.replace
Возвращает новую строку, в которой N+1 появленияtargetСтрока и предыдущиеtargetСтрока заменена наreplacementСтрока, в которой NoccurrenceУкажите .N как соответствующий индекс, появляющийся в исходной строке .
str.replace(source, target, replacement, occurrence)
Пример
pine
var source = "EXCHANGE1:SYMBOL1 / EXCHANGE1:SYMBOL2"
// Replace first occurrence of "EXCHANGE1" with "EXCHANGE2" replacement string
var newSource = str.replace(source, "EXCHANGE1", "EXCHANGE2", 0)
if barstate.islastconfirmedhistory
// Display "EXCHANGE2:SYMBOL1 / EXCHANGE1:SYMBOL2"
runtime.log(newSource)
Возвращение
Обработанная строка
параметр
source(series string) Строка источникаtarget(series string) заменена строкойreplacement(series string) строка, которую нужно вставить, а не цель.occurrence(series int) Целевая строка, которую нужно заменить, является совпадающим индексом, появляющимся в исходной строке. Первый совпадающий индекс начинается с 0.
См. также
str.replace_all str.match
str.replace_all
Замените строку замены на строку назначения, которая появляется каждый раз в исходной строке.
str.replace_all(source, target, replacement)
Возвращение
Обработанная строка
параметр
source(series string) Строка источникаtarget(series string) заменена строкойreplacement(series string) Каждый раз, когда появится целевая строка, она будет заменена строкой
str.split
Разделяет строки на подстрочные массивы и возвращает их ID массива.
str.split(string, separator)
Возвращение
Идентификатор строки.
параметр
string(series string) Строка источникаseparator(series string) строка, разделяющая каждую подстроку.
str.tostring
str.tostring(value)
str.tostring(value, format)
str.tostring(value[])
str.tostring(value[], format)
Возвращение
valueСтрока параметров представляет собой форму。
ЕслиvalueЕсли параметр - строка, то возвращается как есть.
КогдаvalueФункция Na возвращает строку NaN<unk>.
параметр
value(series int/float/bool/string/int[]/float[]/bool[]/string[]), элемент которого преобразуется в значение строки или в ID массива.format(series string) Format string. Accepts these format.* constants: format.mintick, format.percent, format.volume. Optional. The default value is '#.##########'.
Примечание
Формат с плавающей точкой также будет округлять эти значения, если это необходимо, например, str.tostring ((3.99, '#') будет возвращать <unk>4<unk>。
Чтобы показать нули, используйте "0" вместо "#". Например, "#.000".
При использовании format.mintick это значение округляется до числа, которое ближе всего к числу, которое можно делить без пробелов с помощью syminfo.mintick. Обратная строка сопровождается нулями.
Если x - это строка, то она возвращает то же значение.
Bool возвращает значение true или false.
Функция возвращает <unk>NaN<unk>, когда x равен na.
color
color.new
Функциональный цвет указывает, какая прозрачность применяется к данному цвету.
color.new(color, transp)
Пример
pine
plot(close, color=color.new(color.red, 50))
Возвращение
Цвета с определенной прозрачностью.
параметр
color(series color)transp(series int/float) Доступные значения от 0 (непрозрачно) до 100 (невидимо)
Примечание
Использование множества параметров (например, <unk>simple<unk>, <unk>input<unk> или <unk>series<unk>) влияет на цвет, который отображается на странице тегов настройки/стилевой папки. Для получения дополнительной информации обратитесь к руководству пользователя.
color.rgb
Создание новых цветов с прозрачностью с использованием модели RGB.
color.rgb(red, green, blue, transp)
Пример
pine
plot(close, color=color.rgb(255, 0, 0, 50))
Возвращение
Цвета с определенной прозрачностью.
параметр
red(series int/float) красный цвет. Возможные значения от 0 до 255green(series int/float) Зеленый оттенок. Возможные значения от 0 до 255blue(series int/float) Синий цвет. Возможные значения от 0 до 255transp(series int/float) выбирается. цвет прозрачный. возможные значения от 0 (непрозрачный) до 100 (прозрачный). По умолчанию 0 (прозрачный).
Примечание
Использование множества параметров (например, <unk>simple<unk>, <unk>input<unk> или <unk>series<unk>) влияет на цвет, который отображается на странице тегов настройки/стилевой папки. Для получения дополнительной информации обратитесь к руководству пользователя.
runtime
runtime.debug
Печатать информацию о переменных на диспетчере.
FMZ PINE использует специальные языковые функции.runtime.debug(value), есть только один параметр.
runtime.log
Вывод содержимого в журнале
FMZ PINE использует специальные языковые функции.runtime.log(1, 2, 3, close, high, ...), можно передать несколько параметров.
runtime.error
Вызываемое соединение может вызвать ошибку во время выполнения, а также вызвать ошибку в работе.messageОшибочное сообщение, указанное в параметре.
runtime.error(message)
параметр
message (series string) сообщение об ошибке
input
input
Функция Input добавляется на входной тег страницы с настройками сценария, которая позволяет вам предоставить пользователям сценария параметры конфигурации. Эта функция автоматически обнаруживает типы параметров, используемых в команде defval, и использует соответствующие входные плагины.
input(defval, title, tooltip, inline, group)
input(defval, title, inline, group, tooltip)
Пример
pine
i_switch = input(true, "On/Off") // 设置true,默认勾选
plot(i_switch ? open : na)
i_len = input(7, "Length")
i_src = input(close, "Source") // 下拉框,默认选择close
plot(ta.sma(i_src, i_len))
i_col = input(color.red, "Plot Color")
plot(close, color=i_col)
i_text = input("Hello!", "Message")
runtime.log(i_text)
Возвращение
Введите значение переменной
параметр
defval(const int/float/bool/string/color or source-type built-ins) По умолчанию определяет рекомендуемую входную переменную на странице ввода / ввода в скрипте, которую может изменить пользователь скрипта. Встроенная функция типа источника - это встроенная серия встроенных переменных в источник вычислений:close、hlc3И так далее.title(const string) Заголовок ввода. Если не указано, то имя переменной используется в качестве заголовка ввода. Если заголовок указан, но заголовок пустой, то имя будет пустой строкой.tooltip(const string) Эта строка будет отображаться пользователю, когда мышь будет зависать на значке инструментального указателя.inline(const string) Объединяет все входные вызовы, использующие одни и те же параметры в одном ряду. Строки, используемые в качестве параметров, не отображаются.group(const string) Используйте одну и ту же комбинационную числовую строку для создания заголовка над всеми вводами. Эта строка также используется в качестве текста заголовка.
Примечание
Возвратные значения входных функций всегда должны быть присвоены переменным.
См. также
input.bool input.color input.int input.float input.string input.timeframe input.source
input.source
Добавление ввода на входную страницу с настройками сценария позволяет предоставить пользователям сценария параметры настройки. Эта функция добавляет выпадающее меню, позволяющее пользователям выбирать источник вычислений, например close, hl2 и т. д. Если сценарий содержит только один вызов input.source (), пользователь может выбрать источник вывода другого показателя на графике.
input.source(defval, title, tooltip, inline, group)
Пример
pine
i_src = input.source(close, "Source")
plot(i_src)
Возвращение
Введите значение переменной
параметр
defval(series int/float) Определяет значение ввода, предложенное на странице ввода в скрипте, которое пользователь может изменить.title(const string) Заголовок ввода. Если не указано, то имя переменной используется в качестве заголовка ввода. Если заголовок указан, но заголовок пустой, то имя будет пустой строкой.tooltip(const string) Эта строка будет отображаться пользователю, когда мышь будет зависать на значке инструментального указателя.inline(const string) Объединяет все входные вызовы, использующие одни и те же параметры в одном ряду. Строки, используемые в качестве параметров, не отображаются.group(const string) Используйте одну и ту же комбинационную числовую строку для создания заголовка над всеми вводами. Эта строка также используется в качестве текста заголовка.
Примечание
Результат функции input.source всегда должен быть присвоен одной переменной, как в примере выше.
См. также
input.bool input.int input.float input.string input.timeframe input.color input
input.string
Функция Input добавляет вводные параметры в настройки сценария, которая позволяет вам предоставлять пользователям сценария параметры конфигурации. Эта функция добавляет вводные поля строки в входные параметры сценария.
input.string(defval, title, options, tooltip, inline, group, confirm)
Пример
pine
i_text = input.string("Hello!", "Message")
runtime.log(i_text)
Возвращение
Введите значение переменной
параметр
defval(const string) По умолчанию определяет рекомендуемую входную переменную на странице ввода / ввода в скрипте, которую пользователь может изменить.optionsКогда параметры используются вместе, значение должно быть одним из них.title(const string) Заголовок ввода. Если не указано, то имя переменной используется в качестве заголовка ввода. Если заголовок указан, но заголовок пустой, то имя будет пустой строкой.options(List of constants: [<type>...]) список доступных вариантов для выбора.tooltip(const string) Эта строка будет отображаться пользователю, когда мышь будет зависать на значке инструментального указателя.inline(const string) Объединяет все входные вызовы, использующие одни и те же параметры в одном ряду. Строки, используемые в качестве параметров, не отображаются.group(const string) Используйте одну и ту же комбинационную числовую строку для создания заголовка над всеми вводами. Эта строка также используется в качестве текста заголовка.confirm(const bool) Если true, то перед добавлением показателя в график пользователю будет предложено подтвердить введенное значение.
Примечание
Результат функции input.string всегда должен быть присвоен одной переменной, как в примере выше.
См. также
input.bool input.int input.float input.timeframe input.source input.color input
input.bool
Функция Input добавляет вкладку ввода в настройки сценария, которая позволяет вам предоставить пользователям сценария параметры конфигурации. Эта функция добавляет выборочный знак вводу сценария.
input.bool(defval, title, tooltip, inline, group, confirm)
Пример
pine
i_switch = input.bool(true, "On/Off")
plot(i_switch ? open : na)
Возвращение
Введите значение переменной
параметр
defval(const bool) Определяет встроенное значение рекомендуемой входной переменной в теге "Сценарий настройки ящика" / "Вводная ящик", которую пользователь может изменить.title(const string) Заголовок ввода. Если не указано, то имя переменной используется в качестве заголовка ввода. Если заголовок указан, но заголовок пустой, то имя будет пустой строкой.tooltip(const string) Эта строка будет отображаться пользователю, когда мышь будет зависать на значке инструментального указателя.inline(const string) Объединяет все входные вызовы, использующие одни и те же параметры в одном ряду. Строки, используемые в качестве параметров, не отображаются.group(const string) Используйте одну и ту же комбинационную числовую строку для создания заголовка над всеми вводами. Эта строка также используется в качестве текста заголовка.confirm(const bool) Если true, то перед добавлением показателя в график пользователю будет предложено подтвердить введенное значение.
Примечание
Результат функции input.bool всегда должен быть присвоен одной переменной, как в примере выше.
См. также
input.int input.float input.string input.timeframe input.source input.color input
input.int
Функция Input добавляет вкладку ввода в настройки сценария, которая позволяет вам предоставить пользователям сценария параметры конфигурации. Эта функция добавляет целое число ввода в поле ввода сценария.
input.int(defval, title, minval, maxval, step, tooltip, inline, group, confirm)
input.int(defval, title, options, tooltip, inline, group, confirm)
Пример
pine
i_len1 = input.int(10, "Length 1", minval=5, maxval=21, step=1)
plot(ta.sma(close, i_len1))
i_len2 = input.int(10, "Length 2", options=[5, 10, 21])
plot(ta.sma(close, i_len2))
Возвращение
Введите значение переменной
параметр
defval(const int) Определяет предложенную входной переменной по умолчанию на странице ввода / настройки ввода в скрипте, которую может изменить пользователь скрипта.optionsКогда параметры используются вместе, значение должно быть одним из них.title(const string) Заголовок ввода. Если не указано, то имя переменной используется в качестве заголовка ввода. Если заголовок указан, но заголовок пустой, то имя будет пустой строкой.minval(const int) Минимально возможное значение вводной переменной.maxval(const int) Максимально возможное значение вводной переменной.step(const int) значение длины шага, используемое для увеличения/уменьшения ввода.options(tuple of const int values: [val1, val2, ...]) Список опций, выбранных из выпадающего меню, разделенных запятыми и окруженных квадратными скобками:[val1, val2, ...] ≠ не используется при использовании этого параметраminval、maxvalиstepПараметрыtooltip(const string) Эта строка будет отображаться пользователю, когда мышь будет зависать на значке инструментального указателя.inline(const string) Объединяет все входные вызовы, использующие одни и те же параметры в одном ряду. Строки, используемые в качестве параметров, не отображаются.group(const string) Используйте одну и ту же комбинационную числовую строку для создания заголовка над всеми вводами. Эта строка также используется в качестве текста заголовка.confirm(const bool) Если true, то перед добавлением показателя в график пользователю будет предложено подтвердить введенное значение.
Примечание
Результат функции input.int всегда должен быть присвоен одной переменной, как в примере выше.
См. также
input.bool input.float input.string input.timeframe input.source input.color input
input.float
Функция Input добавляет вкладку ввода в настройки сценария, которая позволяет вам предоставить пользователям сценария параметры конфигурации. Эта функция добавляет поле ввода плавающей точки в вход в сценарий.
input.float(defval, title, minval, maxval, step, tooltip, inline, group, confirm)
input.float(defval, title, options, tooltip, inline, group, confirm)
Пример
pine
i_angle1 = input.float(0.5, "Sin Angle", minval=-3.14, maxval=3.14, step=0.02)
plot(math.sin(i_angle1) > 0 ? close : open, "sin", color=color.green)
i_angle2 = input.float(0, "Cos Angle", options=[-3.14, -1.57, 0, 1.57, 3.14])
plot(math.cos(i_angle2) > 0 ? close : open, "cos", color=color.red)
Возвращение
Введите значение переменной
параметр
defval(const int/float) Определяет по умолчанию рекомендуемую входную переменную на странице ввода / ввода в скрипте, которую пользователь может изменить.optionsКогда параметры используются вместе, значение должно быть одним из них.title(const string) Заголовок ввода. Если не указано, то имя переменной используется в качестве заголовка ввода. Если заголовок указан, но заголовок пустой, то имя будет пустой строкой.minval(const int/float) Минимально возможное значение вводной переменной。 выборочное。maxval(const int/float) Максимально возможное значение вводной переменной。 выборочное。step(const int/float) значение длины шага для увеличения/уменьшения ввода.options(tuple of const int/float values: [val1, val2, ...]) Список опций, выбранных из выпадающего меню, разделенных запятыми и окруженных квадратными скобками:[val1, val2, ...] ≠ не используется при использовании этого параметраminval、maxvalиstepПараметрыtooltip(const string) Эта строка будет отображаться пользователю, когда мышь будет зависать на значке инструментального указателя.inline(const string) Объединяет все входные вызовы, использующие одни и те же параметры в одном ряду. Строки, используемые в качестве параметров, не отображаются.group(const string) Используйте одну и ту же комбинационную числовую строку для создания заголовка над всеми вводами. Эта строка также используется в качестве текста заголовка.confirm(const bool) Если true, то перед добавлением показателя в график пользователю будет предложено подтвердить введенное значение.
Примечание
Результат функции input.float всегда должен быть присвоен одной переменной, как в примере выше.
См. также
input.bool input.int input.string input.timeframe input.source input.color input
input.color
Функция Input добавляет вкладку вкладки в настройки сценария, которая позволяет вам предоставить пользователям сценария параметры конфигурации. Эта функция добавляет цветовой селектор, который позволяет пользователям выбирать цвет и прозрачность из цветовой панели или шестнадцатизначного значения.
input.color(defval, title, tooltip, inline, group, confirm)
Пример
pine
i_col = input.color(color.red, "Plot Color")
plot(close, color=i_col)
Возвращение
Введите значение переменной
параметр
defval(const color) Определяет предложенную входной переменную в настройках ячейки / входной ячейке текста, которую пользователь может изменить.title(const string) Заголовок ввода. Если не указано, то имя переменной используется в качестве заголовка ввода. Если заголовок указан, но заголовок пустой, то имя будет пустой строкой.tooltip(const string) Эта строка будет отображаться пользователю, когда мышь будет зависать на значке инструментального указателя.inline(const string) Объединяет все входные вызовы, использующие одни и те же параметры в одном ряду. Строки, используемые в качестве параметров, не отображаются.group(const string) Используйте одну и ту же комбинационную числовую строку для создания заголовка над всеми вводами. Эта строка также используется в качестве текста заголовка.confirm(const bool) Если true, то перед добавлением показателя в график пользователю будет предложено подтвердить введенное значение.
Примечание
Результат функции input.color всегда должен быть присвоен одной переменной, как в примере выше.
См. также
input.bool input.int input.float input.string input.timeframe input.source input
input.price
Добавить ввод цены в скрипт на странице тегов ввода/устройства ящика.confirm = trueВключите интерактивную вводную систему и выберите цену, нажав на график.
input.price(defval, title, tooltip, inline, group, confirm)
Пример
pine
price1 = input.price(title="Date", defval=42)
plot(price1)
price2 = input.price(54, title="Date")
plot(price2)
Возвращение
Введите значение переменной
параметр
defval(const int/float) По умолчанию определяет рекомендуемую входную переменную на странице ввода / ввода в скрипте, которую пользователь может изменить.title(const string) Заголовок ввода. Если не указано, то имя переменной используется в качестве заголовка ввода. Если заголовок указан, но заголовок пустой, то имя будет пустой строкой.tooltip(const string) Эта строка будет отображаться пользователю, когда мышь будет зависать на значке инструментального указателя.inline(const string) Объединяет все входные вызовы, использующие одни и те же параметры в одном ряду. Строки, используемые в качестве параметров, не отображаются.group(const string) Используйте одну и ту же комбинационную числовую строку для создания заголовка над всеми вводами. Эта строка также используется в качестве текста заголовка.confirm(const bool) Если true, то вводится интерактивный вводный режим и выбор выполняется, нажав на график при добавлении показателя в график, или выбирая показатель и затем перемещая выбор.
Примечание
При использовании интерактивного режима, если две функции вызваны друг другу, то они будут называться "взаимно".inlineПараметры используют одни и те же параметры, и ввод времени может быть использован в сочетании с вводом цены.
См. также
input.bool input.int input.float input.string input.resolution input.source input.color input
input.timeframe
Функция Input добавляет вкладку ввода в настройки сценария, которая позволяет вам предоставить пользователям сценария параметры конфигурации. Эта функция добавляет выпадающий список, который позволяет пользователю выбрать конкретный период времени с помощью выборщика временных периодов и возвращает его в виде строки. Выборщик включает в себя пользовательские временные периоды, которые могут использоваться в графике.
input.timeframe(defval, title, options, tooltip, inline, group, confirm)
Пример
pine
i_res = input.timeframe('D', "Resolution", options=['D', 'W', 'M'])
s = request.security(syminfo.tickerid, i_res, close)
plot(s)
Возвращение
Введите значение переменной
параметр
defval(const string) По умолчанию определяет рекомендуемую входную переменную на странице ввода / ввода в скрипте, которую пользователь может изменить.optionsКогда параметры используются вместе, значение должно быть одним из них.title(const string) Заголовок ввода. Если не указано, то имя переменной используется в качестве заголовка ввода. Если заголовок указан, но заголовок пустой, то имя будет пустой строкой.options(tuple of const string values: [val1, val2, ...]) Список доступных вариантов для выбора.tooltip(const string) Эта строка будет отображаться пользователю, когда мышь будет зависать на значке инструментального указателя.inline(const string) Объединяет все входные вызовы, использующие одни и те же параметры в одном ряду. Строки, используемые в качестве параметров, не отображаются.group(const string) Используйте одну и ту же комбинационную числовую строку для создания заголовка над всеми вводами. Эта строка также используется в качестве текста заголовка.confirm(const bool) Если true, то перед добавлением показателя в график пользователю будет предложено подтвердить введенное значение.
Примечание
Результат функции input.timeframe всегда должен быть присвоен одной переменной, как в примере выше.
См. также
input.bool input.int input.float input.string input.source input.color input
input.integer
Пока нет
input.resolution
Пока нет
ta
ta.alma
Arnaud Legoux Moving Average. Она использует распределение Гауса в качестве веса для скользящих средних.
ta.alma(series, length, offset, sigma)
ta.alma(series, length, offset, sigma, floor)
Пример
pine
plot(ta.alma(close, 9, 0.85, 6))
// same on pine, but much less efficient
pine_alma(series, windowsize, offset, sigma) =>
m = offset * (windowsize - 1)
//m = math.floor(offset * (windowsize - 1)) // Used as m when math.floor=true
s = windowsize / sigma
norm = 0.0
sum = 0.0
for i = 0 to windowsize - 1
weight = math.exp(-1 * math.pow(i - m, 2) / (2 * math.pow(s, 2)))
norm := norm + weight
sum := sum + series[windowsize - i - 1] * weight
sum / norm
plot(pine_alma(close, 9, 0.85, 6))
Возвращение
Arnaud Legoux, средняя скорость
параметр
series(series int/float) Ожидаемые значения серии。length(series int) Количество строк K (длина).offset(simple int/float) Контроль баланса между гладкостью ((более близко к 1) и отзывчивостью ((более близко к 0)).sigma(simple int/float) изменяет гладкость ALMA. Чем больше сигма, тем гладче ALMA.floor(simple bool) параметр выбора. Перед вычислением ALMA укажите, является ли вычисление смещения нижним пределом. По умолчанию false.
См. также
ta.sma ta.ema ta.rma ta.wma ta.vwma ta.swma
ta.sma
Функция sma возвращает скользящую среднюю величину, т.е. значение y для x, разделенное на y。
ta.sma(source, length)
Пример
pine
plot(ta.sma(close, 15))
// same on pine, but much less efficient
pine_sma(x, y) =>
sum = 0.0
for i = 0 to y - 1
sum := sum + x[i] / y
sum
plot(pine_sma(close, 15))
Возвращение
lengthК-линия возвращаетсяsourceПростая скользящая средняя
параметр
source(series int/float) Ожидаемые значения серии。length(series int) Количество строк K (длина).
См. также
ta.ema ta.rma ta.wma ta.vwma ta.swma ta.alma
ta.cog
cog (фокусность) - показатель, основанный на статистике и золотом коэффициенте Фибоначчи.
ta.cog(source, length)
Пример
pine
plot(ta.cog(close, 10))
// the same on pine
pine_cog(source, length) =>
sum = math.sum(source, length)
num = 0.0
for i = 0 to length - 1
price = source[i]
num := num + price * (i + 1)
-num / sum
plot(pine_cog(close, 10))
Возвращение
Внимание
параметр
source(series int/float) Ожидаемые значения серии。length(series int) Количество строк K (длина).
См. также
ta.stoch
ta.dev
Различия между сериями измерений и их ta.sma
ta.dev(source, length)
Пример
pine
plot(ta.dev(close, 10))
// the same on pine
pine_dev(source, length) =>
mean = ta.sma(source, length)
sum = 0.0
for i = 0 to length - 1
val = source[i]
sum := sum + math.abs(val - mean)
dev = sum/length
plot(pine_dev(close, 10))
Возвращение
lengthК-линия возвращаетсяsourceСклонность.
параметр
source(series int/float) Ожидаемые значения серии。length(series int) Количество строк K (длина).
См. также
ta.variance ta.stdev
ta.stdev
ta.stdev(source, length, biased)
Пример
pine
plot(ta.stdev(close, 5))
//the same on pine
isZero(val, eps) => math.abs(val) <= eps
SUM(fst, snd) =>
EPS = 1e-10
res = fst + snd
if isZero(res, EPS)
res := 0
else
if not isZero(res, 1e-4)
res := res
else
15
pine_stdev(src, length) =>
avg = ta.sma(src, length)
sumOfSquareDeviations = 0.0
for i = 0 to length - 1
sum = SUM(src[i], -avg)
sumOfSquareDeviations := sumOfSquareDeviations + sum * sum
stdev = math.sqrt(sumOfSquareDeviations / length)
plot(pine_stdev(close, 5))
Возвращение
Недостаточное качество
параметр
source(series int/float) Ожидаемые значения серии。length(series int) Количество строк K (длина).biased(series bool) определяет, какая оценка должна использоваться.
Примечание
ЕслиbiasedЕсли true, то функция будет рассчитываться с использованием предвзятых оценок для всего общего, если false - с использованием безпредвзятых оценок для образца.
См. также
ta.dev ta.variance
ta.ema
Функция ema возвращает индексированную взвешенную скользящую среднюю. В ema весовой коэффициент падает по индексу. Она рассчитывается по формуле: EMA = alpha * source + (1 - alpha) * EMA[1], где alpha = 2 / (length + 1) ◦
ta.ema(source, length)
Пример
pine
plot(ta.ema(close, 15))
//the same on pine
pine_ema(src, length) =>
alpha = 2 / (length + 1)
sum = 0.0
sum := na(sum[1]) ? src : alpha * src + (1 - alpha) * nz(sum[1])
plot(pine_ema(close,15))
Возвращение
sourceИндексная скользящая средняя, альфа = 2 / (длина + 1) ◦
параметр
source(series int/float) Ожидаемые значения серии。length(simple int) Количество строк K (длина).
Примечание
Пожалуйста, обратите внимание, что использование данной переменной/функции может привести к перекрашиванию индикатора.
См. также
ta.sma ta.rma ta.wma ta.vwma ta.swma ta.alma
ta.wma
Функция wma возвращаетlengthК-линияsourceВ WMA удельный вес уменьшается в арифметических степенях.
ta.wma(source, length)
Пример
pine
plot(ta.wma(close, 15))
// same on pine, but much less efficient
pine_wma(x, y) =>
norm = 0.0
sum = 0.0
for i = 0 to y - 1
weight = (y - i) * y
norm := norm + weight
sum := sum + x[i] * weight
sum / norm
plot(pine_wma(close, 15))
Возвращение
lengthК-линия возвращаетсяsourceВесовая скользящая средняя.
параметр
source(series int/float) Ожидаемые значения серии。length(series int) Количество строк K (длина).
См. также
ta.sma ta.ema ta.rma ta.vwma ta.swma ta.alma
ta.swma
Симметрично-весовая скользящая средняя с фиксированной длиной:4.[1/6,2 / 6,2 / 6,1 / 6]。
ta.swma(source)
Пример
pine
plot(ta.swma(close))
// same on pine, but less efficient
pine_swma(x) =>
x[3] * 1 / 6 + x[2] * 2 / 6 + x[1] * 2 / 6 + x[0] * 1 / 6
plot(pine_swma(close))
Возвращение
Симметрически взвешенная скользящая средняя.
параметр
source(series int/float) Источник серии <unk>
См. также
ta.sma ta.ema ta.rma ta.wma ta.vwma ta.alma
ta.hma
Функция hma возвращает скобку HMA.
ta.hma(source, length)
Пример
pine
src = input(defval=close, title="Source")
length = input(defval=9, title="Length")
hmaBuildIn = ta.hma(src, length)
plot(hmaBuildIn, title="Hull MA", color=#674EA7)
Возвращение
Hull Moving Average, возвращающий Hull Moving Average для источника в столбце length.
параметр
source(series int/float) Ожидаемые значения серии。length(simple int) Количество строк K
См. также
ta.ema ta.rma ta.wma ta.vwma ta.sma
ta.rma
Движущаяся средняя, используемая в RSI. Это индексная взвешенная движущаяся средняя, с удельным значением альфа = 1 / длина.
ta.rma(source, length)
Пример
pine
plot(ta.rma(close, 15))
//the same on pine
pine_rma(src, length) =>
alpha = 1/length
sum = 0.0
sum := na(sum[1]) ? ta.sma(src, length) : alpha * src + (1 - alpha) * nz(sum[1])
plot(pine_rma(close, 15))
Возвращение
sourceУкажите скользящую среднюю величину.length。
параметр
source(series int/float) Ожидаемые значения серии。length(simple int) Количество строк K (длина).
См. также
ta.sma ta.ema ta.wma ta.vwma ta.swma ta.alma ta.rsi
ta.rsi
Индекс относительной интенсивности.lengthK в сетиsourceВверх и вниз измененияta.rma()Рассчитанные.
ta.rsi(source, length)
Пример
pine
plot(ta.rsi(close, 7))
// same on pine, but less efficient
pine_rsi(x, y) =>
u = math.max(x - x[1], 0) // upward ta.change
d = math.max(x[1] - x, 0) // downward ta.change
rs = ta.rma(u, y) / ta.rma(d, y)
res = 100 - 100 / (1 + rs)
res
plot(pine_rsi(close, 7))
Возвращение
Относительно сильный индикатор (RSI)
параметр
source(series int/float) Ожидаемые значения серии。length(simple int) Количество строк K (длина).
См. также
ta.rma
ta.tsi
Индекс истинной силы и слабости. Он представляет собой скользящую среднюю потенциальной динамики финансовых инструментов.
ta.tsi(source, short_length, long_length)
Возвращение
Индекс реальных сил и слабостей.[Значение в -1,1]
параметр
source(series int/float) Источник серии <unk>short_length(simple int) короткая длина。long_length(simple int) Длина длинной строки。
ta.roc
Функция roc{\displaystyle roc{\mathrm {c}}} показываетsourceТекущее значениеsourceНесколько дней назад.lengthРазница между значениями
Вычисляется по формуле: 100 * change(src, length) / src[length]。
ta.roc(source, length)
Возвращение
lengthК-линия возвращаетсяsourceПрогноз изменения ВВП
параметр
source(series int/float) Ожидаемые значения серии。length(series int) Количество строк K (длина).
ta.range
Вернуть разницу между минимальным и максимальным значениями последовательности.
ta.range(source, length)
Возвращение
Разница между минимальным и максимальным значениями в последовательности.
параметр
source(series int/float) Ожидаемые значения серии。length(series int) Количество строк K (длина).
ta.macd
MACD (англ. Smoothed Asymmetric Average) [2]. Он должен раскрывать силу, направление, динамику и длительность изменения тенденции цен на акции [2].
ta.macd(source, fastlen, slowlen, siglen)
Пример
pine
[macdLine, signalLine, histLine] = ta.macd(close, 12, 26, 9)
plot(macdLine, color=color.blue)
plot(signalLine, color=color.orange)
plot(histLine, color=color.red, style=plot.style_histogram)
Если вам нужно только одно значение, используйте местоимение, например '_':
Пример
pine
[_, signalLine, _] = ta.macd(close, 12, 26, 9)
plot(signalLine, color=color.orange)
Возвращение
Три модуля серии MACD: MACD-линия, сигнальная линия и прямоугольная линия.
параметр
source(series int/float) Ожидаемые значения серии。fastlen(simple int) скорейший параметрslowlen(simple int) Параметры медленной длины。siglen(simple int) параметр длины сигнала ≠
ta.mode
Вернуть наименьшее значение, если есть несколько значений с одинаковой частотой.
ta.mode(source, length)
Возвращение
Модель последовательности.
параметр
source(series int/float) Ожидаемые значения серии。length(series int) Количество строк K (длина).
ta.median
Возвращается среднее число последовательности.
ta.median(source, length)
Возвращение
Среднее число последовательности.
параметр
source(series int/float) Ожидаемые значения серии。length(series int) Количество строк K (длина).
ta.linreg
Линейная регрессионная кривая. Линия, наиболее соответствующая цене, указанной пользователем в течение определенного периода времени. Она рассчитывается с использованием минимального двоичного умножения. Результаты этой функции рассчитываются по формуле: linreg = intercept + slope * (length - 1 - offset), где intercept и slope используются.sourceЗначение, рассчитанное на наименьшее двоичное умножение ряда.
ta.linreg(source, length, offset)
Возвращение
Линейная кривая регрессии
параметр
source(series int/float) Источник серии <unk>length(series int)offset(simple int) смещение
ta.bb
Брин-пояса. Брин-пояса - это инструмент технического анализа, который определяется группой линий, которые отклоняются от простой движущейся средней цены ценных бумаг (SMA) на два стандартных отклонения (положительные и отрицательные), но могут быть скорректированы в соответствии с предпочтениями пользователя.
ta.bb(series, length, mult)
Пример
pine
[middle, upper, lower] = ta.bb(close, 5, 4)
plot(middle, color=color.yellow)
plot(upper, color=color.yellow)
plot(lower, color=color.yellow)
// the same on pine
f_bb(src, length, mult) =>
float basis = ta.sma(src, length)
float dev = mult * ta.stdev(src, length)
[basis, basis + dev, basis - dev]
[pineMiddle, pineUpper, pineLower] = f_bb(close, 5, 4)
plot(pineMiddle)
plot(pineUpper)
plot(pineLower)
Возвращение
Брин-пояс.
параметр
series(series int/float) Ожидаемые значения серии。length(series int) Количество строк K (длина).mult(simple int/float) Стандартный коэффициент разницы ≠
См. также
ta.sma ta.stdev ta.kc
ta.bbw
Ширина полосы пропускания. Ширина полосы пропускания - расстояние от верхней и нижней полос до средней полосы пропускания.
ta.bbw(series, length, mult)
Пример
pine
plot(ta.bbw(close, 5, 4), color=color.yellow)
// the same on pine
f_bbw(src, length, mult) =>
float basis = ta.sma(src, length)
float dev = mult * ta.stdev(src, length)
((basis + dev) - (basis - dev)) / basis
plot(f_bbw(close, 5, 4))
Возвращение
Пропускная способность Brin.
параметр
series(series int/float) Ожидаемые значения серии。length(series int) Количество строк K (длина).mult(simple int/float) Стандартный коэффициент разницы ≠
См. также
ta.bb ta.sma ta.stdev
ta.cci
CCI (Commodity Path Index) рассчитывается как разница между типичной ценой товара и его простой скользящей средней, разделенной на среднее абсолютное отклонение от типичной цены. Индекс масштабируется по обратной стороне 0.015 для предоставления более читаемых цифр.
ta.cci(source, length)
Возвращение
Индекс товарного канала источника, возвращаемого линией lengthK.
параметр
source(series int/float) Ожидаемые значения серии。length(series int) Количество строк K (длина).
ta.change
Разница между текущим и предыдущим значением, source - source[length]。
ta.change(source, length)
ta.change(source)
Возвращение
Результат отмены закона.
параметр
source(series int/float) Источник серии <unk>length(series int) отклоняется от текущей k-линии к предыдущей k-линии.
ta.mom
sourceЦены иsourceЦеныlengthДвижение перед K-линией. Это всего лишь разница: source - source[length]。
ta.mom(source, length)
Возвращение
sourceЦены иsourceЦеныlengthДвижение до линии K.
параметр
source(series int/float) Ожидаемые значения серии。length(series int) смещение от текущей к-линии к предыдущей к-линии.
См. также
ta.change
ta.cmo
Динамический индикатор колебаний Чандра. Рассчитывается сумма недавних точек роста и недавних точек падения, а затем вычитается их сумма, а затем результат делится на сумму всех изменений цен за тот же период времени
ta.cmo(series, length)
Пример
pine
plot(ta.cmo(close, 5), color=color.yellow)
// the same on pine
f_cmo(src, length) =>
float mom = ta.change(src)
float sm1 = math.sum((mom >= 0) ? mom : 0.0, length)
float sm2 = math.sum((mom >= 0) ? 0.0 : -mom, length)
100 * (sm1 - sm2) / (sm1 + sm2)
plot(f_cmo(close, 5))
Возвращение
Показатель колебания динамики Чанда
параметр
series(series int/float) Ожидаемые значения серии。length(series int) Количество строк K (длина).
См. также
ta.rsi ta.stoch math.sum
ta.percentile_linear_interpolation
Процентное соотношение с использованием линейного метода интервалов между двумя последними рейтингами.
ta.percentile_linear_interpolation(source, length, percentage)
Возвращение
lengthК-линия возвращаетсяsourceПервая процентная цифра P в ряду.
параметр
source(series int/float) Исполняемые значения ряда ((источник) }}length(series int) количество прошедших K строк (длина)percentage(simple int/float) Процент, число в диапазоне от 0 до 100
Примечание
Обратите внимание, что проценты, рассчитанные с помощью данного метода, не являются членами вводной группы данных.
См. также
ta.percentile_nearest_rank
ta.percentile_nearest_rank
Процент, рассчитанный по последнему методу ранжирования.
ta.percentile_nearest_rank(source, length, percentage)
Возвращение
lengthК-линия возвращаетсяsourceПервая процентная цифра P в ряду.
параметр
source(series int/float) Исполняемые значения ряда ((источник) }}length(series int) количество прошедших K строк (длина)percentage(simple int/float) Процент, число в диапазоне от 0 до 100
Примечание
Использование недавнего ранжирования с длиной строк менее 100 к может привести к тому, что одно и то же число будет использоваться для нескольких процентов.
Последние проценты, рассчитанные по рейтингу, являются входящими данными.
100-я процентная точка определяется как максимальное значение в входном наборе данных.
См. также
ta.percentile_linear_interpolation
ta.percentrank
Процентная степень - это процент от предыдущих значений, меньше или равен текущим значениям данной серии.
ta.percentrank(source, length)
Возвращение
lengthК-линия возвращаетсяsourceПроцентный рейтинг:
параметр
source(series int/float) Ожидаемые значения серии。length(series int) Количество строк K (длина).
ta.variance
Дифференциация - это ожидаемое значение (ta.sma) серии квадратных отклонений от среднего значения, которое неофициально измеряет расстояние от среднего значения серии чисел.
ta.variance(source, length, biased)
Возвращение
lengthК-линия возвращаетсяsourceРазница между
параметр
source(series int/float) Ожидаемые значения серии。length(series int) Количество строк K (длина).biased(series bool) определяет, какая оценка должна использоваться.
Примечание
ЕслиbiasedЕсли true, то функция будет рассчитываться с использованием предвзятых оценок для всего общего, если false - с использованием безпредвзятых оценок для образца.
ta.tr
ta.tr(handle_na)
Возвращение
Настоящий диапазон. Это math.max (высокий - низкий, math.abs (высокий - близкий)[1]), math.abs(low - close[1]))。
параметр
handle_na(simple bool) как обрабатывать значение NaN. Если true, и цена закрытия за предыдущий день NaN, то tr будет рассчитываться как высокая-низкая точка за день. В противном случае (((если false) tr в этом случае вернет NaN. Также обратите внимание, что ta.atr использует ta.true).
Примечание
ta.tr(false)иta.trТо же самое.
См. также
ta.atr
ta.mfi
Показатель денежных потоков. Показатель денежных потоков - это технический показатель, который использует цены и объемы сделок для определения перекупа или перепродажи в активах.
ta.mfi(series, length)
Пример
pine
plot(ta.mfi(hlc3, 14), color=color.yellow)
// the same on pine
pine_mfi(src, length) =>
float upper = math.sum(volume * (ta.change(src) <= 0.0 ? 0.0 : src), length)
float lower = math.sum(volume * (ta.change(src) >= 0.0 ? 0.0 : src), length)
mfi = 100.0 - (100.0 / (1.0 + upper / lower))
mfi
plot(pine_mfi(hlc3, 14))
Возвращение
Показатели денежных потоков
параметр
series(series int/float) Ожидаемые значения серии。length(series int) Количество строк K (длина).
ta.kc
Кентнерский канал. Кентнерский канал - это технический показатель, который включает в себя промежуточные скользящие средние, а также каналы вверх и вниз.
ta.kc(series, length, mult)
ta.kc(series, length, mult, useTrueRange)
Пример
pine
[middle, upper, lower] = ta.kc(close, 5, 4)
plot(middle, color=color.yellow)
plot(upper, color=color.yellow)
plot(lower, color=color.yellow)
// the same on pine
f_kc(src, length, mult, useTrueRange) =>
float basis = ta.ema(src, length)
float span = (useTrueRange) ? ta.tr : (high - low)
float rangeEma = ta.ema(span, length)
[basis, basis + rangeEma * mult, basis - rangeEma * mult]
[pineMiddle, pineUpper, pineLower] = f_kc(close, 5, 4, true)
plot(pineMiddle)
plot(pineUpper)
plot(pineLower)
Возвращение
Кентнерский проход
параметр
series(series int/float) Ожидаемые значения серии。length(simple int) Количество строк K (длина).mult(simple int/float) Стандартный коэффициент разницы ≠useTrueRange(simple bool) выборные параметры. Укажите, используется ли истинный диапазон; по умолчанию true. Если значение false, то для расчета диапазона используется выражение ((high-low)).
ta.kcw
Ширина кантонального канала. Ширина кантонального канала - это разница между верхним и нижним каналами, деленная на значение среднего канала.
ta.kcw(series, length, mult)
ta.kcw(series, length, mult, useTrueRange)
Пример
pine
plot(ta.kcw(close, 5, 4), color=color.yellow)
// the same on pine
f_kcw(src, length, mult, useTrueRange) =>
float basis = ta.ema(src, length)
float span = (useTrueRange) ? ta.tr : (high - low)
float rangeEma = ta.ema(span, length)
((basis + rangeEma * mult) - (basis - rangeEma * mult)) / basis
plot(f_kcw(close, 5, 4, true))
Возвращение
Ширина прохода Кентана.
параметр
series(series int/float) Ожидаемые значения серии。length(simple int) Количество строк K (длина).mult(simple int/float) Стандартный коэффициент разницы ≠useTrueRange(simple bool) выборные параметры. Укажите, используется ли истинный диапазон; по умолчанию true. Если значение false, то для расчета диапазона используется выражение ((high-low)).
См. также
ta.kc ta.ema ta.atr ta.bb
ta.correlation
Коэффициент соотношения. Описывает степень, в которой две серии склонны отклоняться от своих значений ta.sma.
ta.correlation(source1, source2, length)
Возвращение
Коэффициент соотношения
параметр
source1(series int/float) Источник серии <unk>source2(series int/float) Целевая серия。length(series int) длина (количество K строк)
См. также
request.security
ta.cross
ta.cross(source1, source2)
Возвращение
Если две последовательности пересекаются, то они являются истинными, иначе - ложными.
параметр
source1(series int/float) Первая серия данных。source2(series int/float) Вторая серия данных。
См. также
ta.change
ta.crossover
source1-series определяется как пересечениеsource2-series, если на текущей K-линииsource1Значение большеsource2И на первой K-линииsource2Значение source1小于source2`Значение
ta.crossover(source1, source2)
Возвращение
Еслиsource1Пройтиsource2Если это не так, то это ложь.
параметр
source1(series int/float) Первая серия данных。source2(series int/float) Вторая серия данных。
ta.crossunder
source1-series определяется какsource2-series, если на текущей K-линииsource1меньше, чемsource2И на первой K-линии,source1Значение большеsource2Значение
ta.crossunder(source1, source2)
Возвращение
Еслиsource1существоватьsource2Подкрепим, и будет true, иначе будет false.
параметр
source1(series int/float) Первая серия данных。source2(series int/float) Вторая серия данных。
ta.atr
Функция ATR (средняя величина реальной колебательности) возвращает RMA реального диапазона. Реальная колебательность - max (высокая - низкая, abs (высокая - близкая)[1]), abs(low - close[1]))。
ta.atr(length)
Пример
pine
plot(ta.atr(14))
//the same on pine
pine_atr(length) =>
trueRange = na(high[1])? high-low : math.max(math.max(high - low, math.abs(high - close[1])), math.abs(low - close[1]))
//true range can be also calculated with ta.tr(true)
ta.rma(trueRange, length)
plot(pine_atr(14))
Возвращение
Средняя величина реальной колебания (ATR)
параметр
length (simple int) длина
ta.sar
Параллельная линия перехода (англ. Parabolic line shifting) - метод, разработанный J. Welles Wilder, Jr. для выявления потенциальных перемен в направлении цены на биржевых рынках.
ta.sar(start, inc, max)
Пример
pine
plot(ta.sar(0.02, 0.02, 0.2), style=plot.style_cross, linewidth=3)
// The same on Pine
pine_sar(start, inc, max) =>
var float result = na
var float maxMin = na
var float acceleration = na
var bool isBelow = na
bool isFirstTrendBar = false
if bar_index == 1
if close > close[1]
isBelow := true
maxMin := high
result := low[1]
else
isBelow := false
maxMin := low
result := high[1]
isFirstTrendBar := true
acceleration := start
result := result + acceleration * (maxMin - result)
if isBelow
if result > low
isFirstTrendBar := true
isBelow := false
result := math.max(high, maxMin)
maxMin := low
acceleration := start
else
if result < high
isFirstTrendBar := true
isBelow := true
result := math.min(low, maxMin)
maxMin := high
acceleration := start
if not isFirstTrendBar
if isBelow
if high > maxMin
maxMin := high
acceleration := math.min(acceleration + inc, max)
else
if low < maxMin
maxMin := low
acceleration := math.min(acceleration + inc, max)
if isBelow
result := math.min(result, low[1])
if bar_index > 1
result := math.min(result, low[2])
else
result := math.max(result, high[1])
if bar_index > 1
result := math.max(result, high[2])
result
plot(pine_sar(0.02, 0.02, 0.2), style=plot.style_cross, linewidth=3)
Возвращение
Параллельная линия направлена к указателю.
параметр
start(simple int/float) началоinc(simple int/float) увеличениеmax(simple int/float) Максимальная.
ta.barssince
Вычислите количество K-строк, начиная с предыдущего условия true.
ta.barssince(condition)
Пример
pine
// get number of bars since last color.green bar
plot(ta.barssince(close >= open))
Возвращение
Количество строк k, если условие true.
Примечание
Если условие никогда не было выполнено до текущей K-линии, функция возвращает na。
Пожалуйста, обратите внимание, что использование данной переменной/функции может привести к перекрашиванию индикатора.
См. также
ta.lowestbars ta.highestbars ta.valuewhen ta.highest ta.lowest
ta.cum
sourceИными словами, этоsourceСумма всех элементов .
ta.cum(source)
Возвращение
Серия подведена.
параметр
source(series int/float)
См. также
math.sum
ta.dmi
Функция dmi возвращает динамический индекс DMI。
ta.dmi(diLength, adxSmoothing)
Пример
pine
len = input.int(17, minval=1, title="DI Length")
lensig = input.int(14, title="ADX Smoothing", minval=1, maxval=50)
[diplus, diminus, adx] = ta.dmi(len, lensig)
plot(adx, color=color.red, title="ADX")
plot(diplus, color=color.blue, title="+DI")
plot(diminus, color=color.orange, title="-DI")
Возвращение
Три подгруппы серии DMI: положительное направление движения ((+DI), отрицательное направление движения ((-DI) и средний показатель направления движения ((ADX)) [2].
параметр
diLength(simple int) DI Period。adxSmoothing(simple int) ADX гладкий цикл
См. также
ta.rsi ta.tsi ta.mfi
ta.falling
ТестыsourceСерия дляlengthНапример, если вы не знаете, что вы делаете, вы не знаете, что вы делаете.
ta.falling(source, length)
Возвращение
Если в настоящее времяsourceменьше, чемlengthЛюбой предыдущий, к которому возвращается линия K.sourceЕсли значение true, то оно true, если нет, то false.
параметр
source(series int/float) Ожидаемые значения серии。length(series int) Количество строк K (длина).
См. также
ta.rising
ta.rising
ТестыsourceСерия дляlength"Клинлонг" набирает обороты?
ta.rising(source, length)
Возвращение
Если в настоящее времяsourceСтоит больше, чемlengthЛюбой предыдущий, к которому возвращается линия K.sourceЕсли значение true, то оно true, если нет, то false.
параметр
source(series int/float) Ожидаемые значения серии。length(series int) Количество строк K (длина).
См. также
ta.falling
ta.pivothigh
Функция возвращает цену на вершину оси. Если нет вершины оси, то возвращается <unk>NaN<unk>.
ta.pivothigh(source, leftbars, rightbars)
ta.pivothigh(leftbars, rightbars)
Пример
pine
leftBars = input(2)
rightBars=input(2)
ph = ta.pivothigh(leftBars, rightBars)
plot(ph, style=plot.style_cross, linewidth=3, color= color.red, offset=-rightBars)
Возвращение
На данный момент это цена или NaN.
параметр
source(series int/float) выборочные параметры.leftbars(series int/float) Левая сила。rightbars(series int/float) Правая длина。
Примечание
Если параметр 'leftbars' или 'rightbars' является серией, вы должны использовать функцию max_bars_back в качестве переменной 'source' [2].
ta.pivotlow
Функция возвращает цену на низкий коренной пункт. Если нет низкого коренного пункта, она возвращает <unk>NaN<unk>.
ta.pivotlow(source, leftbars, rightbars)
ta.pivotlow(leftbars, rightbars)
Пример
pine
leftBars = input(2)
rightBars=input(2)
pl = ta.pivotlow(close, leftBars, rightBars)
plot(pl, style=plot.style_cross, linewidth=3, color= color.blue, offset=-rightBars)
Возвращение
На данный момент это цена или NaN.
параметр
source(series int/float) выборочные параметры ◦ Расчетные значения серии данных ◦ По умолчанию <unk> Low<unk> ◦leftbars(series int/float) Левая сила。rightbars(series int/float) Правая длина。
Примечание
Если параметр 'leftbars' или 'rightbars' является серией, вы должны использовать функцию max_bars_back в качестве переменной 'source' [2].
ta.highest
Наибольшее значение для данного числа прошедших k строк.
ta.highest(source, length)
ta.highest(length)
Возвращение
Наивысшее значение в серии.
параметр
source(series int/float) Ожидаемые значения серии。length(series int) Количество строк K (длина).
Примечание
Две версии args:sourceЭто сериал, в котором рассказывается о жизни.lengthЭто число возвращенных K-линий.
Аргументационная версия:lengthВернутое число K. алгоритм использует high как sourceСериал
См. также
ta.lowest ta.lowestbars ta.highestbars ta.valuewhen ta.barssince
ta.highestbars
Максимальное отклонение от данного числа за k линий.
ta.highestbars(source, length)
ta.highestbars(length)
Возвращение
Отклоняется к самой высокой k-линии
параметр
source(series int/float) Ожидаемые значения серии。length(series int) Количество строк K (длина).
Примечание
Две версии args:sourceЭто сериал, в котором рассказывается о жизни.lengthЭто число возвращенных K-линий.
Аргументационная версия:lengthВернутое число K. алгоритм использует high как sourceСериал
См. также
ta.lowest ta.highest ta.lowestbars ta.barssince ta.valuewhen
ta.stoch
Рассчитывается по уравнению: 100 * (close - lowest, length)) / (highest, high, length) - lowest, length))
ta.stoch(source, high, low, length)
Возвращение
Случайный
параметр
source(series int/float) Источник серии <unk>high(series int/float) Высокая серияlow(series int/float) Нижняя серияlength(series int) длина (количество K строк)
См. также
ta.cog
ta.supertrend
Супертенденциальный индикатор. Супертенденциальный индикатор - это индикатор, который следует за трендом.
ta.supertrend(factor, atrPeriod)
Пример
pine
//@version=5
indicator("Pine Script™ Supertrend")
[supertrend, direction] = ta.supertrend(3, 10)
plot(direction < 0 ? supertrend : na, "Up direction", color = color.green, style=plot.style_linebr)
plot(direction > 0 ? supertrend : na, "Down direction", color = color.red, style=plot.style_linebr)
// The same on Pine Script™
pine_supertrend(factor, atrPeriod) =>
src = hl2
atr = ta.atr(atrPeriod)
upperBand = src + factor * atr
lowerBand = src - factor * atr
prevLowerBand = nz(lowerBand[1])
prevUpperBand = nz(upperBand[1])
lowerBand := lowerBand > prevLowerBand or close[1] < prevLowerBand ? lowerBand : prevLowerBand
upperBand := upperBand < prevUpperBand or close[1] > prevUpperBand ? upperBand : prevUpperBand
int direction = na
float superTrend = na
prevSuperTrend = superTrend[1]
if na(atr[1])
direction := 1
else if prevSuperTrend == prevUpperBand
direction := close > upperBand ? -1 : 1
else
direction := close < lowerBand ? 1 : -1
superTrend := direction == -1 ? lowerBand : upperBand
[superTrend, direction]
[pineSupertrend, pineDirection] = pine_supertrend(3, 10)
plot(pineDirection < 0 ? pineSupertrend : na, "Up direction", color = color.green, style=plot.style_linebr)
plot(pineDirection > 0 ? pineSupertrend : na, "Down direction", color = color.red, style=plot.style_linebr)
Возвращение
Субъекты двух супертенденционных рядов: супертенденционная линия и трендовый направление. Возможные значения 1 (в направлении вниз) и -1 (в направлении вверх).
параметр
factor(series int/float) ATR будет умножено на множитель.atrPeriod(simple int) средняя истинная длина волны
См. также
ta.macd
ta.lowest
Минимальное значение заданного числа прошедших k строк.
ta.lowest(source, length)
ta.lowest(length)
Возвращение
Минимальное значение в серии.
параметр
source(series int/float) Ожидаемые значения серии。length(series int) Количество строк K (длина).
Примечание
Две версии args:sourceЭто сериал, в котором рассказывается о жизни.lengthЭто число возвращенных K-линий.
Аргументационная версия:lengthявляется числом K. алгоритм использует low какsourceСериал
См. также
ta.highest ta.lowestbars ta.highestbars ta.valuewhen ta.barssince
ta.lowestbars
Минимальное отклонение от данного числа прошедших k линий.
ta.lowestbars(source, length)
ta.lowestbars(length)
Возвращение
Сдвигается к нижней линии k.
параметр
source(series int/float) Ожидаемые значения серии。length(series int) возвращает число K.
Примечание
Две версии args:sourceЭто сериал, в котором рассказывается о жизни.lengthЭто число возвращенных K-линий.
Аргументационная версия:lengthявляется числом K. алгоритм использует low какsourceСериал
См. также
ta.lowest ta.highest ta.highestbars ta.barssince ta.valuewhen
ta.valuewhen
Возвращает серию кода кода-источника на K-линии, где кода-условие является истинным в n-м случае последнего появления.
ta.valuewhen(condition, source, occurrence)
Пример
pine
slow = ta.sma(close, 7)
fast = ta.sma(close, 14)
// Get value of `close` on second most recent cross
plot(ta.valuewhen(ta.cross(slow, fast), close, 1))
параметр
condition(series bool) Условия для поиска。source(series int/float/bool/color) Значение, возвращаемое из строки K, удовлетворяющей условиям.occurrenceПоявление условий (simple int) ≠ начинается с нуля и восходит в обратном порядке по времени, поэтому <unk>0<unk> является последним появлением <unk>condition<unk>, <unk>1<unk> является вторым последним появлением, и так далее ≠ должно быть целым числом >= 0。
Примечание
Эта функция должна выполняться на каждой K-линии. Не рекомендуется использовать ее в циклической структуре for или while, поскольку ее поведение может быть неожиданным. Обратите внимание, что использование этой функции может привести к перерисованию индикатора.
См. также
ta.lowestbars ta.highestbars ta.barssince ta.highest ta.lowest
ta.vwap
Средневзвешенные цены
ta.vwap(source)
Возвращение
Средневзвешенная сумма
параметр
source(series int/float) Источник серии <unk>
См. также
ta.vwap
ta.vwma
Функция vwma возвращаетlengthК-линияsourceВзвешенная подвижная средняя величина объема транзакций △ равна: sma ((source * volume, length) / sma ((volume, length) △
ta.vwma(source, length)
Пример
pine
plot(ta.vwma(close, 15))
// same on pine, but less efficient
pine_vwma(x, y) =>
ta.sma(x * volume, y) / ta.sma(volume, y)
plot(pine_vwma(close, 15))
Возвращение
lengthК-линия возвращаетсяsourceВесовая скользящая средняя по объему сделок.
параметр
source(series int/float) Ожидаемые значения серии。length(series int) Количество строк K (длина).
См. также
ta.sma ta.ema ta.rma ta.wma ta.swma ta.alma
ta.wpr
Индикатор Уильямса (Williams %R。。) показывает связь между текущей ценой закрытия и высокой/низкой ценой за прошедший период времени.
ta.wpr(length)
Пример
pine
plot(ta.wpr(14), title="%R", color=color.new(#ff6d00, 0))
Возвращение
Williams %R。
параметр
length(series int) Количество строк K。
plot
plot
На рисунке изображены данные.
plot(series, title, color, linewidth, style, trackprice, histbase, offset, join, editable, show_last, display)
Пример
pine
plot(high+low, title='Title', color=color.new(#00ffaa, 70), linewidth=2, style=plot.style_area, offset=15, trackprice=true)
// You may fill the background between any two plots with a fill() function:
p1 = plot(open)
p2 = plot(close)
fill(p1, p2, color=color.new(color.green, 90))
Возвращение
Отображаемые объекты для fill.
параметр
series(series int/float) Серия данных, которую нужно нарисовать.title(const string) Заголовок рисунка。color(series color) цвет изображения. Вы можете использовать константы, такие как 'color = red' или 'color =#ff001a', а также сложные выражения, такие как 'color = close >= open ? green: red'.linewidth(input int) Ширина линии для рисования. По умолчанию 1 . Не для всех стилей .style(plot_style) plot тип 。 возможные значения: plot.style_line、plot.style_stepline、plot.style_stepline_diamond、plot.style_histogram、plot.style_cross、plot.style_area、plot.style_columns、plot.style_circles、plot.style_linebr、plot.style_areabr。 по умолчанию значение - plot.style_line。trackprice(input bool) Если true, то горизонтальная ценовая линия будет отображаться на уровне последнего показателя.histbase(input int/float) При составлении графики в стиле plot.style_histogram, plot.style_columns или plot.style_area, используется значение значения эталонного уровня ≠ 0.0 ≠offset(series int) перемещение карты влево или вправо на определенное количество линий k. По умолчанию 0join(input bool) Если true, то начертанная точка будет соединена с линией, только для стилей plot.style_cross и plot.style_circles.editable(const bool) Если true, то стиль рисунка может быть отредактирован в диалоговом окне форматирования.show_last(input int) Если установлена, то определяется число k строк, которые будут нанесены на график ((от последней к-линии назад в прошлое)) [2].display(plot_display) Контроль отображает местоположение начертания. Возможные значения: display.none, display.all. По умолчанию display.all.overlay(const bool) параметр расширения платформы FMZ, используемый для настройки текущей функции на матрице (настройка true) или на подматрице (настройка false). По умолчанию он будет выглядеть как false. Если не указать этот параметр, то он будет отображаться в соответствии сstrategyилиindicatorВoverlayПараметры настройкиstrategyилиindicatorНикаких настроекoverlayПараметры обрабатываются в соответствии с параметрами по умолчанию.
См. также
plotshape plotchar bgcolor
plotshape
На графике изображены видимые формы.
plotshape(series, title, style, location, color, offset, text, textcolor, editable, size, show_last, display)
Пример
pine
data = close >= open
plotshape(data, style=shape.xcross)
параметр
series(series bool) Серия данных, отображаемая в виде формы. ❚ Серия рассматривается как серия буль значений всех значений местоположения, кроме location.absolute.title(const string) Заголовок рисунка。style(input string) Тип рисунка。 возможные значения: shape.xcross, shape.cross, shape.triangleup, shape.triangledown, shape.flag, shape.circle, shape.arrowup, shape.arrowdown, shape.labelup, shape.labeldown, shape.square, shape.diamond。 По умолчанию значение является shape.xcross。location(input string) Форма расположения на диаграмме. Возможные значения: location.abovebar, location.belowbar, location.top, location.bottom, location.absolute. По умолчанию это location.abovebar.color(series color) цвет формы 。 Вы можете использовать константы, такие как 'color = red' или 'color =#ff001a', а также сложные выражения, такие как 'color = close >= open ? green: red' 。 Параметры выбора 。offset(series int) Формы, которые перемещаются влево или вправо по определенному количеству строк k. По умолчанию 0text(const string) Текст в форме. Вы можете использовать многострочный текст, разделяя строки с помощью '\n' переводных последовательностей. Пример: 'line one\nline two'textcolor(series color) цвет текста. Вы можете использовать константы, такие как 'textcolor=red' или 'textcolor=#ff001a', а также сложные выражения, такие как 'textcolor = close >= open ? green: red'.editable(const bool) Если true, то стиль plotshape может быть отредактирован в диалоге форматирования.show_last(input int) Если установлена, то определяется число форм, которые будут нанесены на график ((от последней k-линии назад в прошлое))size(const string) Размер символа в диаграмме. Возможные значения: size.auto, size.tiny, size.small, size.normal, size.large, size.huge.display(plot_display) Контроль отображает местоположение начертания. Возможные значения: display.none, display.all. По умолчанию display.all.overlay(const bool) параметр расширения платформы FMZ, используемый для настройки текущей функции на матрице (настройка true) или на подматрице (настройка false). По умолчанию он будет выглядеть как false. Если не указать этот параметр, то он будет отображаться в соответствии сstrategyилиindicatorВoverlayПараметры настройкиstrategyилиindicatorНикаких настроекoverlayПараметры обрабатываются в соответствии с параметрами по умолчанию.
См. также
plot plotchar bgcolor
plotchar
На графике используется любой из данных символов Unicode, чтобы нарисовать видимые формы.
plotchar(series, title, char, location, color, offset, text, textcolor, editable, size, show_last, display)
Пример
pine
data = close >= open
plotchar(data, char='❄')
параметр
series(series bool) Серия данных, отображаемая в виде формы. ❚ Серия рассматривается как серия буль значений всех значений местоположения, кроме location.absolute.title(const string) Заголовок рисунка。char(input string) символы, используемые в качестве визуальных формlocation(input string) Форма расположения на диаграмме. Возможные значения: location.abovebar, location.belowbar, location.top, location.bottom, location.absolute. По умолчанию это location.abovebar.color(series color) цвет формы 。 Вы можете использовать константы, такие как 'color = red' или 'color =#ff001a', а также сложные выражения, такие как 'color = close >= open ? green: red' 。 Параметры выбора 。offset(series int) Формы, которые перемещаются влево или вправо по определенному количеству строк k. По умолчанию 0text(const string) Текст в форме. Вы можете использовать многострочный текст, разделяя строки с помощью '\n' переводных последовательностей. Пример: 'line one\nline two'textcolor(series color) цвет текста. Вы можете использовать константы, такие как 'textcolor=red' или 'textcolor=#ff001a', а также сложные выражения, такие как 'textcolor = close >= open ? green: red'.editable(const bool) Если true, то стиль plotchar может быть отредактирован в диалоге форматирования.show_last(input int) Если установлена, то определяется количество графиков, которые будут нанесены на график ((от последней k-линии назад в прошлое))size(const string) Размер символа в диаграмме. Возможные значения:size.auto,size.tiny,size.small,size.normal,size.large,size.huge. По умолчанию используется значение size.auto.display(plot_display) Контроль отображает местоположение начертания. Возможные значения: display.none, display.all. По умолчанию display.all.overlay(const bool) параметр расширения платформы FMZ, используемый для настройки текущей функции на матрице (настройка true) или на подматрице (настройка false). По умолчанию он будет выглядеть как false. Если не указать этот параметр, то он будет отображаться в соответствии сstrategyилиindicatorВoverlayПараметры настройкиstrategyилиindicatorНикаких настроекoverlayПараметры обрабатываются в соответствии с параметрами по умолчанию.
См. также
plot plotshape bgcolor
plotcandle
Нарисуйте <unk> на диаграмме.
plotcandle(open, high, low, close, title, color, wickcolor, editable, show_last, bordercolor, display)
Пример
pine
indicator("plotcandle example", overlay=true)
plotcandle(open, high, low, close, title='Title', color = open < close ? color.green : color.red, wickcolor=color.black)
параметр
open(series int/float) Открытие серии данных используется в качестве параметров открытия.high(series int/float) Высокий уровень серии данных используется в качестве ячейки.low(series int/float) Данные низкой серии используются в качестве низких значений <unk>。 Необходимые параметры。close(series int/float) Закрыть данные серии как значение закрытой линии k. Необходимые параметрыtitleЗаголовок (const string) plotcandle.color(series color) Цвет ядра. Вы можете использовать константы, такие как 'color = red' или 'color =#ff001a', а также сложные выражения, такие как 'color = close >= open ? green: red'.wickcolor(series color) Цвет светильника.editable(const bool) Если true, то стиль plotcandle может быть отредактирован в диалоге форматирования.show_last(input int) Если установлена, то определяется число строк, начертанных на диаграмме ((от последней k-линии назад в прошлое) }}.bordercolor(series color) Цвет границы экрана. Один из параметров.display(plot_display) Контроль отображает местоположение начертания. Возможные значения: display.none, display.all. По умолчанию display.all.overlay(const bool) параметр расширения платформы FMZ, используемый для настройки текущей функции на матрице (настройка true) или на подматрице (настройка false). По умолчанию он будет выглядеть как false. Если не указать этот параметр, то он будет отображаться в соответствии сstrategyилиindicatorВoverlayПараметры настройкиstrategyилиindicatorНикаких настроекoverlayПараметры обрабатываются в соответствии с параметрами по умолчанию.
Примечание
Если все NaN являются высокими и низкими, то K-линия не должна отображаться.
Максимальные значения "открыть", "высокий", "низкий" и "закрыть" будут установлены на "высокий" и "высокий", а минимальные - на "низкий" и "низкий".
См. также
plotbar
plotarrow
На графике начертаны стрелки вверх и вниз: стрелка вверх начертана на каждом положительном показателе, а стрелка вниз начертана на каждом отрицательном. Если показатель возвращает na, стрелка не начертается.
plotarrow(series, title, colorup, colordown, offset, minheight, maxheight, editable, show_last, display)
Пример
codiff = close - open
plotarrow(codiff, colorup=color.new(color.teal,40), colordown=color.new(color.orange, 40), overlay=true)
параметр
series(series int/float) Нарисуйте серию данных в виде стрелки. Нужные параметры.title(const string) Заголовок рисунка。colorup(series color) Цвет вверх стрелки.colordown(series color) Цвет стрелки вниз.offset(series int) Движение стрелки влево или вправо по определенному количеству K-линий. По умолчанию 0minheight(input int) Минимальная возможная высота стрелки в пикселях.maxheight(input int) Максимально возможная высота стрелки в пикселях. По умолчанию 100editable(const bool) Если true, то стиль plotarrow может быть отредактирован в диалоге форматирования.show_last(input int) Если установлена, то определяется количество стрелок, которые будут нанесены на график ((возвращается в прошлое от последней k-линии))display(plot_display) Контроль отображает местоположение начертания. Возможные значения: display.none, display.all. По умолчанию display.all.overlay(const bool) параметр расширения платформы FMZ, используемый для настройки текущей функции на матрице (настройка true) или на подматрице (настройка false). По умолчанию он будет выглядеть как false. Если не указать этот параметр, то он будет отображаться в соответствии сstrategyилиindicatorВoverlayПараметры настройкиstrategyилиindicatorНикаких настроекoverlayПараметры обрабатываются в соответствии с параметрами по умолчанию.
См. также
plot plotshape plotchar barcolor bgcolor
array
array.pop
Функция удаляет последний элемент из массива и возвращает его значение.
array.pop(id)
Пример
pine
// array.pop example
a = array.new_float(5,high)
removedEl = array.pop(a)
plot(array.size(a))
plot(removedEl)
Возвращение
Значение удаленного элемента.
параметр
id(any array type) Объекты массива.
См. также
array.new_float array.set array.push array.remove array.insert array.shift
array.shift
Функция удаляет первый элемент массива и возвращает его значение.
array.shift(id)
Пример
pine
// array.shift example
a = array.new_float(5,high)
removedEl = array.shift(a)
plot(array.size(a))
plot(removedEl)
Возвращение
Значение удаленного элемента.
параметр
id(any array type) Объекты массива.
См. также
array.unshift array.set array.push array.remove array.includes
array.unshift
Функция вставляет значение в исходное положение массива.
array.unshift(id, value)
Пример
pine
// array.unshift example
a = array.new_float(5, 0)
array.unshift(a, open)
plot(array.get(a, 0))
параметр
id(any array type) Объекты массива.value(series <type of the array's elements>) Добавить значение к начальной позиции массива.
См. также
array.shift array.set array.insert array.remove array.indexof
array.size
Функция возвращает количество элементов в массиве.
array.size(id)
Пример
pine
// array.size example
a = array.new_float(0)
for i = 0 to 9
array.push(a, close[i])
// note that changes in slice also modify original array
slice = array.slice(a, 0, 5)
array.push(slice, open)
// size was changed in slice and in original array
plot(array.size(a))
plot(array.size(slice))
Возвращение
Количество элементов в массиве.
параметр
id(any array type) Объекты массива.
См. также
array.new_float array.sum array.slice array.sort
array.slice
Функция создает фрагменты из существующих массивов. Если объекты в фрагментах изменяются, то изменения будут одновременно применяться к новым и исходным массивам.
array.slice(id, index_from, index_to)
Пример
pine
// array.slice example
a = array.new_float(0)
for i = 0 to 9
array.push(a, close[i])
// take elements from 0 to 4
// *note that changes in slice also modify original array
slice = array.slice(a, 0, 5)
plot(array.sum(a) / 10)
plot(array.sum(slice) / 5)
Возвращение
Ошибочная копия расщепления массива.
параметр
id(any array type) Объекты массива.index_from(series int) Индекс, начинающийся с нуля, для начала экстрагирования.index_to(series int) Индекс, начинающийся с нуля, до завершения извлечения. Функция извлекает элементы, предшествующие этому индексу.
См. также
array.new_float array.get array.sort
array.abs
Возвращает массив, содержащий абсолютные значения для каждого элемента исходного массива.
array.abs(id)
параметр
id(int[]/float[Объекты массивов.
См. также
array.new_float array.insert array.slice array.reverse order.ascending order.descending
array.binary_search
Функция возвращает индекс значения, если он не найден, возвращает -1.
array.binary_search(id, val)
Пример
pine
// array.binary_search
a = array.from(5, -2, 0, 9, 1)
array.sort(a) // [-2, 0, 1, 5, 9]
position = array.binary_search(a, 0) // 1
plot(position)
параметр
id(int[]/float[Объекты массивов.val(series int/float) Значение поиска в массиве。
Примечание
Бинарный поиск применяется к предварительно сортированным по восходящему порядку массивам. Вначале он сравнивает элементы в середине массива с целевыми значениями. Если элементы совпадают с целевыми значениями, он возвращает их место в массиве. Если значение элемента больше целевого значения, поиск продолжается в нижней половине массива.
См. также
array.new_float array.insert array.slice array.reverse order.ascending order.descending
array.binary_search_leftmost
Если значение найдено, функция возвращает индекс этого значения. Когда значение не найдено, функция возвращает индекс следующего наименьшего элемента, если он находится в массиве, то слева от местоположения значения.
array.binary_search_leftmost(id, val)
Пример
pine
// array.binary_search_leftmost
a = array.from(5, -2, 0, 9, 1)
array.sort(a) // [-2, 0, 1, 5, 9]
position = array.binary_search_leftmost(a, 3) // 2
plot(position)
параметр
id(int[]/float[Объекты массивов.val(series int/float) Значение поиска в массиве。
Примечание
Бинарный поиск применяется к предварительно сортированным по восходящему порядку массивам. Вначале он сравнивает элементы в середине массива с целевыми значениями. Если элементы совпадают с целевыми значениями, он возвращает их место в массиве. Если значение элемента больше целевого значения, поиск продолжается в нижней половине массива.
См. также
array.new_float array.insert array.slice array.reverse order.ascending order.descending
array.binary_search_rightmost
Если значение найдено, функция возвращает индекс этого значения. Когда значение не найдено, функция возвращает индекс элементов справа от его местоположения в массиве.
array.binary_search_rightmost(id, val)
Пример
pine
// array.binary_search_rightmost
a = array.from(5, -2, 0, 9, 1)
array.sort(a) // [-2, 0, 1, 5, 9]
position = array.binary_search_rightmost(a, 3) // 3
plot(position)
параметр
id(int[]/float[Объекты массивов.val(series int/float) Значение поиска в массиве。
Примечание
Бинарный поиск действует на сортированный массив в возрастающем порядке. Сначала он сравнивает элементы в середине массива с целевым значением. Если элемент соответствует целевому значению, он возвращает его место в массиве. Если значение элемента больше целевого значения, поиск продолжается в нижней части массива.
См. также
array.new_float array.insert array.slice array.reverse order.ascending order.descending
array.sort
Функция сортирует элементы массива.
array.sort(id, order)
Пример
pine
// array.sort example
a = array.new_float(0,0)
for i = 0 to 5
array.push(a, high[i])
array.sort(a, order.descending)
if barstate.islast
runtime.log(str.tostring(a))
параметр
id(int[]/float[]/string[Объекты массивов.order(sort_order) Порядок сортировки: order.ascending (по умолчанию) или order.descending.
См. также
array.new_float array.insert array.slice array.reverse order.ascending order.descending
array.sort_indices
Возвращает индексируемый массив, который, когда используется для индексации исходного массива, будет обращаться к его элементам в том порядке, в котором они были упорядочены. Он не изменяет исходный массив.
array.sort_indices(id, order)
Пример
pine
// array.sort_indices
a = array.from(5, -2, 0, 9, 1)
sortedIndices = array.sort_indices(a) // [1, 2, 4, 0, 3]
indexOfSmallestValue = array.get(sortedIndices, 0) // 1
smallestValue = array.get(a, indexOfSmallestValue) // -2
plot(smallestValue)
параметр
id(int[]/float[]/string[Объекты массивов.order(sort_order) Порядок сортировки: order.ascending или order.descending.
См. также
array.new_float array.insert array.slice array.reverse order.ascending order.descending
array.clear
Эта функция удаляет все элементы из массива.
array.clear(id)
Пример
pine
// array.clear example
a = array.new_float(5,high)
array.clear(a)
array.push(a, close)
plot(array.get(a,0))
plot(array.size(a))
параметр
id(any array type) Объекты массива.
См. также
array.new_float array.insert array.push array.remove array.pop
array.concat
Эта функция используется для объединения двух массивов. Она переносит все элементы из второго массива в первый массив, а затем возвращает первый массив.
array.concat(id1, id2)
Пример
pine
// array.concat example
a = array.new_float(0,0)
b = array.new_float(0,0)
for i = 0 to 4
array.push(a, high[i])
array.push(b, low[i])
c = array.concat(a,b)
plot(array.size(a))
plot(array.size(b))
plot(array.size(c))
Возвращение
Первый массив содержит объединенные элементы из второго массива.
параметр
id1(any array type) Первый объект в массиве.id2(any array type) Второй объект массива ≠
См. также
array.new_float array.insert array.slice
array.copy
Функция создает копию существующего массива.
array.copy(id)
Пример
pine
// array.copy example
length = 5
a = array.new_float(length, close)
b = array.copy(a)
a := array.new_float(length, open)
plot(array.sum(a) / length)
plot(array.sum(b) / length)
Возвращение
Копия массива.
параметр
id(any array type) Объекты массива.
См. также
array.new_float array.get array.slice array.sort
array.stdev
Функция возвращает стандартную погрешность элементов массива.
array.stdev(id, biased)
Пример
pine
// array.stdev example
a = array.new_float(0)
for i = 0 to 9
array.push(a, close[i])
plot(array.stdev(a))
Возвращение
Элементы массива не соответствуют стандартам.
параметр
id(int[]/float[Объекты массивов.biased(series bool) определяет, какая оценка должна использоваться.
Примечание
ЕслиbiasedЕсли true, то функция будет рассчитываться с использованием предвзятых оценок для всего общего, если false - с использованием безпредвзятых оценок для образца.
См. также
array.new_float array.max array.min array.avg
array.standardize
Функция возвращает массив стандартизированных элементов.
array.standardize(id)
Пример
pine
// array.standardize example
a = array.new_float(0)
for i = 0 to 9
array.push(a, close[i])
b = array.standardize(a)
plot(array.min(b))
plot(array.max(b))
Возвращение
Массив элементов стандартизации.
параметр
id(int[]/float[Объекты массивов.
См. также
array.max array.min array.mode array.avg array.variance array.stdev
array.variance
Функция возвращает разницу между элементами массива.
array.variance(id, biased)
Пример
pine
// array.variance example
a = array.new_float(0)
for i = 0 to 9
array.push(a, close[i])
plot(array.variance(a))
Возвращение
Квадратная разница элементов массива.
параметр
id(int[]/float[Объекты массивов.biased(series bool) определяет, какая оценка должна использоваться.
Примечание
ЕслиbiasedЕсли true, то функция будет рассчитываться с использованием предвзятых оценок для всего общего, если false - с использованием безпредвзятых оценок для образца.
См. также
array.new_float array.stdev array.min array.avg array.covariance
array.covariance
Функция возвращает коэффициент разности двух массивов.
array.covariance(id1, id2, biased)
Пример
pine
// array.covariance example
a = array.new_float(0)
b = array.new_float(0)
for i = 0 to 9
array.push(a, close[i])
array.push(b, open[i])
plot(array.covariance(a, b))
Возвращение
Координационная разница двух массивов.
параметр
id1(int[]/float[Объекты массивов.id2(int[]/float[Объекты массивов.biased(series bool) определяет, какая оценка должна использоваться.
Примечание
ЕслиbiasedЕсли true, то функция будет рассчитываться с использованием предвзятых оценок для всего общего, если false - с использованием безпредвзятых оценок для образца.
См. также
array.new_float array.max array.stdev array.avg array.variance
array.fill
Функция устанавливает элементы массива как отдельные значения. Если индекс не указан, то устанавливаются все элементы. Если предоставлен только начальный индекс ((по умолчанию 0), то устанавливаются элементы, начинающиеся с этого индекса. Если одновременно использовать два параметра индексации, то устанавливаются элементы, индексированные от начала до, но не включающие конечный индекс ((по умолчанию na).
array.fill(id, value, index_from, index_to)
Пример
pine
// array.fill example
a = array.new_float(10)
array.fill(a, close)
plot(array.sum(a))
параметр
id(any array type) Объекты массива.value(series <type of the array's elements>) используется для заполнения массива.index_from(series int) Начальный индекс, по умолчанию 0。index_to(series int) конечный индекс, по умолчанию na。 должен быть больше, чем индекс последнего элемента, который должен быть установлен。
См. также
array.new_float array.set array.slice
array.includes
Функция возвращает true, если она найдена в массиве, и false, если она не найдена.
array.includes(id, value)
Пример
pine
// array.includes example
a = array.new_float(5,high)
p = close
if array.includes(a, high)
p := open
plot(p)
Возвращение
Если значение находится в массиве, то оно true, в противном случае false.
параметр
id(any array type) Объекты массива.value(series <type of the array's elements>Значение, которое нужно искать в массиве.
См. также
array.new_float array.indexof array.shift array.remove array.insert
array.insert
Функция изменяет содержание массива, добавляя новые элементы в соответствующих местах.
array.insert(id, index, value)
Пример
pine
// array.insert example
a = array.new_float(5, close)
array.insert(a, 0, open)
plot(array.get(a, 5))
параметр
id(any array type) Объекты массива.index(series int) индекс вставки.value(series <type of the array's elements>) Добавить значение в массив.
См. также
array.new_float array.set array.push array.remove array.pop array.unshift
array.join
Функция создает и возвращает новые строки, разделенные указанными разделителями.
array.join(id, separator)
Пример
pine
// array.join example
a = array.new_float(5, 5)
runtime.log(array.join(a, ","))
параметр
id(int[]/float[]/string[Объекты массивов.separator(series string) используется для разделения элементов каждого ряда.
См. также
array.new_float array.set array.insert array.remove array.pop array.unshift
array.lastindexof
Функция возвращает индекс последнего появления значения. Если значение не найдено, возвращается -1.
array.lastindexof(id, value)
Пример
pine
// array.lastindexof example
a = array.new_float(5,high)
index = array.lastindexof(a, high)
plot(index)
Возвращение
Индекс элементов
параметр
id(any array type) Объекты массива.value(series <type of the array's elements>Значение, которое нужно искать в массиве.
См. также
array.new_float array.set array.push array.remove array.insert
array.max
Функция возвращает наибольшее значение, или n-е наибольшее значение в данном массиве.
array.max(id, nth)
Пример
pine
// array.max
a = array.from(5, -2, 0, 9, 1)
secondHighest = array.max(a, 2) // 1
plot(secondHighest)
Возвращение
Наибольшее значение в массиве или n-е наибольшее значение.
параметр
id(int[]/float[Объекты массивов.nth(series int) возвращает n-е наибольшее значение, где 0 является наибольшим.
См. также
array.new_float array.min array.sum
array.min
Функция возвращает наименьшее значение, или n-е наименьшее значение в данной последовательности.
array.min(id, nth)
Пример
pine
// array.min
a = array.from(5, -2, 0, 9, 1)
secondLowest = array.min(a, 1) // 0
plot(secondLowest)
Возвращение
Наименьшее значение в массиве или n-е наименьшее значение.
параметр
id(int[]/float[Объекты массивов.nth(series int) возвращает n-е минимальное значение, где 0 является минимальным.
См. также
array.new_float array.max array.sum
array.median
Функция возвращает средние значения элементов массива.
array.median(id)
Пример
pine
// array.median example
a = array.new_float(0)
for i = 0 to 9
array.push(a, close[i])
plot(array.median(a))
Возвращение
Среднее число элементов массива.
параметр
id(int[]/float[Объекты массивов.
См. также
array.avg array.variance array.min
array.mode
Функция возвращает модель элементов массива. Если существует несколько значений с одинаковой частотой, возвращается минимальное значение.
array.mode(id)
Пример
pine
// array.mode example
a = array.new_float(0)
for i = 0 to 9
array.push(a, close[i])
plot(array.mode(a))
Возвращение
Схема элементов массива.
параметр
id(int[]/float[Объекты массивов.
См. также
array.new_float array.avg array.variance array.min
array.percentile_linear_interpolation
Возвращает указанный процент значения массива (процентная цифра) меньше или равна его значению, используя линейные вставки.
array.percentile_linear_interpolation(id, percentage)
параметр
id(int[]/float[Объекты массивов.percentage(series int/float) Должен быть равен или меньше процента от возвращенного значения.
Примечание
В статистике процент - это процент рейтинговых пунктов, которые появляются на каком-то уровне или ниже определенного уровня. Это измерение показывает, сколько процентов в стандартном частотном распределении ниже уровня процента, который вы измеряете. Линейное интервальное значение оценивает значение между двумя рейтингами.
См. также
array.new_float array.insert array.slice array.reverse order.ascending order.descending
array.percentile_nearest_rank
Используя метод последнего порядка, возвращается значение массива, в котором указанная процентная величина (%) меньше или равна ее значению.
array.percentile_nearest_rank(id, percentage)
параметр
id(int[]/float[Объекты массивов.percentage(series int/float) Должен быть равен или меньше процента от возвращенного значения.
Примечание
В статистике процент - это процент рейтинговых пунктов, которые появляются на каком-то уровне или ниже определенного уровня. Это измерение показывает, сколько процентов в стандартном частотном распределении рейтинга ниже того уровня, который вы измеряете.
См. также
array.new_float array.insert array.slice array.reverse order.ascending order.descending
array.percentrank
Возвращает средний процентный рейтинг в матрице.
array.percentrank(id, index)
параметр
id(int[]/float[Объекты массивов.index(series int) рассчитывает значение его процентного ранжирования.
Примечание
Процентное ранжирование - это процент от количества элементов в массиве, которые меньше или равны эталонному значению.
См. также
array.new_float array.insert array.slice array.reverse order.ascending order.descending
array.range
Функция возвращает разницу между минимальными и максимальными значениями данного массива.
array.range(id)
Пример
pine
// array.range example
a = array.new_float(0)
for i = 0 to 9
array.push(a, close[i])
plot(array.range(a))
Возвращение
Разница между минимальным и максимальным значениями в массиве.
параметр
id(int[]/float[Объекты массивов.
См. также
array.new_float array.min array.max array.sum
array.remove
Функция изменяет содержание массива, удаляя элементы с указанным индексом.
array.remove(id, index)
Пример
pine
// array.remove example
a = array.new_float(5,high)
removedEl = array.remove(a, 0)
plot(array.size(a))
plot(removedEl)
Возвращение
Значение удаленного элемента.
параметр
id(any array type) Объекты массива.index(series int) Индекс элемента, который нужно удалить.
См. также
array.new_float array.set array.push array.insert array.pop array.shift
array.reverse
Эта функция переворачивает массив. Первый элемент массива становится последним, а последний элемент массива становится первым.
array.reverse(id)
Пример
pine
// array.reverse example
a = array.new_float(0)
for i = 0 to 9
array.push(a, close[i])
plot(array.get(a, 0))
array.reverse(a)
plot(array.get(a, 0))
параметр
id(any array type) Объекты массива.
См. также
array.new_float array.sort array.push array.set array.avg
array.from
Функция принимает переменное количество параметров одного из следующих типов: int, float, bool, string, line, color, linefill, и возвращает массив соответствующего типа.
array.from(arg0, arg1, ...)
Пример
pine
// array.from_example
arr = array.from("Hello", "World!") // arr (string[]) will contain 2 elements: {Hello}, {World!}.
plot(close)
Возвращение
Значения элементов массива
параметр
arg0, arg1, ...(series int/float/bool/color/string/line/linefill) Архивные параметры。
array.new
Функция создает новый<type>Объекты элементарного массива.
array.new(size, initial_value)
Пример
pine
// array.new<string> example
a = array.new<string>(1, "Hello, World!")
runtime.log(array.get(a, 0))
Пример
pine
// array.new<color> example
a = array.new<color>()
array.push(a, color.red)
array.push(a, color.green)
plot(close, color = array.get(a, close > open ? 1 : 0))
Пример
pine
// array.new<float> example
length = 5
var a = array.new<float>(length, close)
if array.size(a) == length
array.remove(a, 0)
array.push(a, close)
plot(array.sum(a) / length, "SMA")
Пример
pine
// array.new<line> example
// draw last 15 lines
var a = array.new<line>()
array.push(a, line.new(bar_index - 1, close[1], bar_index, close))
if array.size(a) > 15
ln = array.shift(a)
line.delete(ln)
Возвращение
ID объекта массива, который можно использовать вместе с другими массивами.*Функция ().
параметр
sizeПервоначальный размер последовательности (series int).initial_value(series <type>) Начальное значение всех элементов последовательности.
Примечание
Индексы массивов начинаются с 0.
Если вы хотите инициализировать массив и одновременно указать все его элементы, используйте функцию array.from.
См. также
array.from array.push array.get array.size array.remove array.shift array.sum
array.new_bool
Функция создает новый массивный объект, состоящий из элементов типа bool.
array.new_bool(size, initial_value)
Пример
pine
// array.new_bool example
length = 5
a = array.new_bool(length, close > open)
plot(array.get(a, 0) ? close : open)
Возвращение
ID объекта массива, который можно использовать вместе с другими массивами.*Функция ().
параметр
sizeПервоначальный размер последовательности (series int).initial_value(series bool) Начальное значение всех элементов последовательности.
Примечание
Индексы массивов начинаются с 0.
См. также
array.new_float array.get array.slice array.sort
array.new_float
Функция создает новый объект массива элементов типа плавучих точек.
array.new_float(size, initial_value)
Пример
pine
// array.new_float example
length = 5
a = array.new_float(length, close)
plot(array.sum(a) / length)
Возвращение
ID объекта массива, который можно использовать вместе с другими массивами.*Функция ().
параметр
sizeПервоначальный размер последовательности (series int).initial_value(series int/float) Начальное значение для всех элементов серии。 выборочное。 по умолчанию <unk>na<unk>。
Примечание
Индексы массивов начинаются с 0.
См. также
array.new_bool array.get array.slice array.sort
array.new_int
Функция создает новый массивный объект, состоящий из элементов типа int.
array.new_int(size, initial_value)
Пример
pine
// array.new_int example
length = 5
a = array.new_int(length, int(close))
plot(array.sum(a) / length)
Возвращение
ID объекта массива, который можно использовать вместе с другими массивами.*Функция ().
параметр
sizeПервоначальный размер последовательности (series int).initial_value(series int) Начальное значение для всех элементов серии。 является выборочным。 по умолчанию <unk>na<unk>。
Примечание
Индексы массивов начинаются с 0.
См. также
array.new_float array.get array.slice array.sort
array.new_string
Функция создает новый массивный объект для элемента типа строки。
array.new_string(size, initial_value)
Пример
pine
// array.new_string example
length = 5
a = array.new_string(length, "text")
runtime.log(array.get(a, 0))
Возвращение
ID объекта массива, который можно использовать вместе с другими массивами.*Функция ().
параметр
sizeПервоначальный размер последовательности (series int).initial_value(series string) Начальное значение для всех элементов последовательности.
Примечание
Индексы массивов начинаются с 0.
См. также
array.new_float array.get array.slice
array.get
Функция возвращает значение элемента в указанном индексе.
array.get(id, index)
Пример
pine
// array.get example
a = array.new_float(0)
for i = 0 to 9
array.push(a, close[i] - open[i])
plot(array.get(a, 9))
Возвращение
Значения элементов массива
параметр
id(any array type) Объекты массива.index(series int) Индекс элемента, для которого возвращается его значение.
См. также
array.new_float array.set array.slice array.sort
array.push
Функция добавляет значение в массив.
array.push(id, value)
Пример
pine
// array.push example
a = array.new_float(5, 0)
array.push(a, open)
plot(array.get(a, 5))
параметр
id(any array type) Объекты массива.value(series <type of the array's elements>) добавляется в конец массива.
См. также
array.new_float array.set array.insert array.remove array.pop array.unshift
array.set
Функция устанавливает значение элемента как указанный индекс.
array.set(id, index, value)
Пример
pine
// array.set example
a = array.new_float(10)
for i = 0 to 9
array.set(a, i, close[i])
plot(array.sum(a) / 10)
параметр
id(any array type) Объекты массива.index(series int) Изменить индекс элемента.value(series <type of the array's elements>) новые значения, которые нужно установить.
См. также
array.new_float array.get array.slice
array.sum
Функция возвращает сумму элементов массива.
array.sum(id)
Пример
pine
// array.sum example
a = array.new_float(0)
for i = 0 to 9
array.push(a, close[i])
plot(array.sum(a))
Возвращение
Сумма элементов массива.
параметр
id(int[]/float[Объекты массивов.
См. также
array.new_float array.max array.min
array.avg
Функция возвращает среднее значение элементов массива.
array.avg(id)
Пример
pine
// array.avg example
a = array.new_float(0)
for i = 0 to 9
array.push(a, close[i])
plot(array.avg(a))
Возвращение
Средние значения элементов массива.
параметр
id(int[]/float[Объекты массивов.
См. также
array.new_float array.max array.min array.stdev
array.indexof
Функция возвращает индекс первой появления значения. Если значение не найдено, возвращается -1.
array.indexof(id, value)
Пример
pine
// array.indexof example
a = array.new_float(5,high)
index = array.indexof(a, high)
plot(index)
Возвращение
Индекс элементов
параметр
id(any array type) Объекты массива.value(series <type of the array's elements>Значение, которое нужно искать в массиве.
См. также
array.lastindexof array.get array.lastindexof array.remove array.insert
strategy
существоватьstrategyВ соответствующих встроенных функциях число стоп-пойнтов определяется как кратное число скачков цены. Например:strategy.exitФункцияprofit、lossПараметры в точках обозначают остановку, остановку, параметрыprofitНастройка на 10, то есть цена скачет умножить на 10 как стоп-дифференциал, цена скачет как встроенная переменнаяsyminfo.mintick。
strategy
Функция устанавливает несколько атрибутов стратегии:
Примечание: цитаты только для поддержкиtitle,shorttitle,overlay,pyramiding,default_qty_type,default_qty_valueПараметры, другие параметры могут быть настроены через интерфейсные параметры языковой политики PINE.
strategy(title, shorttitle, overlay, format, precision, scale, pyramiding, calc_on_order_fills, calc_on_every_tick, max_bars_back, backtest_fill_limits_assumption, default_qty_type, default_qty_value, initial_capital, currency, slippage, commission_type, commission_value, process_orders_on_close, close_entries_rule, margin_long, margin_short, explicit_plot_zorder, max_lines_count, max_labels_count, max_boxes_count, risk_free_rate)
Пример
pine
strategy("Strategy", overlay = true)
// Enter long by market if current open is greater than previous high.
strategy.entry("Long", strategy.long, 1, when = open > high[1])
// Generate a full exit bracket (profit 10 points, loss 5 points per contract) from the entry named "Long".
strategy.exit("Exit", "Long", profit = 10, loss = 5)
параметр
title(const string) Заголовок индикатора, который будет отображаться в плагин-интерфейсе индикатора/стратегии.shorttitle(const string) короткий заголовок индикатора, который будет виден в графическом примере.overlay(const bool) Если true, то этот показатель будет добавлен как накладной к основному ряду. Если false - он будет добавлен в отдельное окно диаграммы. По умолчанию false.(const string) Типы возможных значений форматирования показателя на оси цены: format.inherit, format.price, format.volume。 по умолчанию format.inherit。format(const int) Число, следующее за числом плавающих точек показателя стоимости на оси цены. Должно быть не отрицательным целым числом и не больше 16. Если это не сделано, используйте формат родительской серии. Если format - format.inherit и этот параметр установлен, format превращается в format.price.precision(scale_type) Показатель должен следовать координатам цены. Возможные значения: scale.right,scale.left,scale.none.scalepyramiding(const int) Максимальное количество входных заказов, разрешенных в одном направлении. Если это значение равняется 0, то только один входный заказ может быть открыт в одном направлении, и любые другие входные заказы будут отклонены.(const bool) дополнительные интрабарные заказы рассчитываются. Если параметр настроен на true<unk>, то политика будет пересчитываться, как только K-строка будет заполнена внутри заказа (не только при закрытии k-строки). По умолчанию это false<unk>.calc_on_order_fills(const bool) Дополнительная интрабарная стратегия рассчитывается. Если параметр true, политика будет рассчитываться в режиме реального времени, не закрывая k-линии. Эта стратегия не влияет на исторические данные.calc_on_every_tick(const int) Максимальное количество элементов, которые можно использовать в стратегии ссылок на историю. Если в коде сценария ссылаются на историю данных переменных, то используется '[В случае, если параметр [max_bars_back] не имеет значения для всех переменных, то этот параметр будет применяться к каждой встроенной переменной или пользовательской переменной в сценарии. Размер переменной буферной зоны в сценарии Pine обычно автоматически обнаруживается. Однако в некоторых случаях это невозможно, и это является причиной того, что параметр позволяет пользователю вручную установить нижнюю границу этого значения.max_bars_back(const int) Примечание о выполнении лимитных цен. Лимитные цены будут торговаться в интрабаре только в том случае, если рыночная цена превышает определенное количество тиков на уровне лимитных цен.backtest_fill_limits_assumptiondefault_qty_type(const string) определено дляqtyЗначения параметров указываются в функциях strategy.entry или strategy.order. Возможные значения: strategy.fixed - контракт/акции/часы, strategy.cash - денежная сумма, или strategy.percent_of_equity - процент доступных прав и интересов.default_qty_value(const int/float) Количество операций по умолчанию для функций strategy.entry или strategy.order, когда их параметр 'qty' не определен, их единицы определяются параметрами, используемыми вместе с параметром 'default_qty_type'(const string) Учетная валюта данной стратегии. Выборная. По умолчанию это валюта товара на графике. Возможные значения: currency.NONE, currency.USD, currency.EUR, currency.AUD, currency.GBP, currency.NZD, currency.CAD, currency.CHF, currency.HKD, currency.JPY, currency.NOK, currency.SEK, currency.SGD, currency.TRY, currency.ZAR, currency.BTC, currency.ETH, currency.MYR, currency.KRWcurrency(const int) Сдвиг точки с использованием tick в качестве единицы предложения, будет добавлен/вычитается из цены сделки на куплю/продажу или остановку. Если mintick = 0.01 и сдвиг точки = 5, то общий сдвиг точки будет равен 5 * 0.01 = 0.05slippage(const string) Тип комиссионных за каждый заказ. Допустимые значения: strategy.commission.percent, strategy.commission.cash_per_contract, strategy.commission.cash_per_order.commission_type(const int/float) стоимость комиссии заказа. В зависимости от выбранного типа (тип комиссии) включается процент или сумма.commission_value(const bool) при настройке на <unk>true<unk>, будут генерироваться другие попытки выполнения ордеров после закрытия диаграмма и завершения стратегических вычислений. Если ордеры являются рыночными, то брокерский симулятор будет выполнять их до открытия следующего диаграмма. Если ордеры являются ценовыми, то ордеры будут выполняться только при выполнении ценовых условий.process_orders_on_close(const string) Определяет порядок закрытия ордера. Допустимые значения: 'FIFO' или 'ANY'. FIFO (First-In, First-Out) означает, что при открытии нескольких сделок первая сделка должна быть закрыта. Это правило применяется к акциям, фьючерсам и американской валюте (в соответствии с правилом NFA 2-43b).close_entries_rule(const int) показывает количество последних строк. По умолчанию 50, максимально допустимое значение 500.max_lines_count(const int) показывает количество недавних тег-картин. По умолчанию 50 и максимально допустимое значение 500.max_labels_count(const int) Количество показанных в последнем окне рисунков: 50 по умолчанию, 500 - максимально допустимо.max_boxes_count(const int/float) Поверхностная гарантия - это процент от цены покупки ценных бумаг, покрываемых наличными деньгами или залогом. Должна быть не отрицательная.margin_long(const int/float) Позиция по безналичной позиции является процентной долей от цены покупки ценных бумаг, которая должна быть покрыта наличными деньгами или залогом. Должна быть не отрицательной.margin_short(const bool) Указывает, как будут отображаться графики, заполнения и горизонтальные линии показателей. Если true, то графики будут отображаться в том порядке, в каком они отображаются в коде показателей, причем каждый новый график будет отображаться на вершине предыдущего. Это применимо только к plot*Функции () , fill и hline.explicit_plot_zorder(const int/float) Количество средств, первоначально доступных для стратегии торговли, представлено в валюте, определенной в валютном пакете.initial_capital(const int/float) Безрисковая рентабельность - ежегодное процентное изменение стоимости инвестиций с минимальным риском или нулем, используемое для расчета коэффициентов Sharpe и Sortino. По умолчанию 2risk_free_rate
Примечание
Каждый сценарий стратегии должен содержать призыв к стратегии.
Код PineScript, использующий параметр calc_on_every_tick = true, может выполнять различные вычисления для исторических записей и реального времени.
При использовании нестандартного типа диаграммы в качестве основы стратегии вам необходимо знать, что результаты будут отличаться. Заказы будут выполняться по цене, указанной в данной таблице (например, для Heikin Ashi будет использоваться цена Heikin Ashi (в среднем, а не реальная рыночная цена). Поэтому мы настоятельно рекомендуем использовать стандартный тип диаграммы в вашей стратегии.
См. также
indicator
strategy.entry
Это приказ о входе на рынок. Если уже есть заказ с идентичным идентификатором, то можно изменить его. Если нет заказа с указанным идентификатором, то выставляется новый заказ. Для отмены указания о входе следует использовать команды strategy.cancel или strategy.cancel_all.
strategy.entry(id, direction, qty, limit, stop, oca_name, oca_type, comment, when, alert_message)
Пример
pine
strategy(title = "simple strategy entry example")
strategy.entry("enter long", strategy.long, 1, when = open > high[1]) // enter long by market if current open great then previous high
strategy.entry("enter short", strategy.short, 1, when = open < low[1]) // enter short by market if current open less then previous low
параметр
id(series string) Необходимые параметры。 Идентификатор заказа。 Заказ может быть отменен или изменен ссылкой на его идентификатор。direction(strategy_direction) Необходимый параметр. Направление позиции на рынке: strategy.long - многоголовый, strategy.short - пустой.qty(series int/float) параметры выборочные. Договор/количество акций/часов/количество единиц сделки.limit(series int/float) параметры выборочные. Лимитированная цена заказа. Если указано, тип заказа - "limit" или "stop-limit". Другие типы заказа - "NaN".stop(series int/float) параметры выбираемы. Стоп-стоп заказа. Если указано, тип заказа "стоп" или "стоп-лимит". Другие типы заказа - "NaN".(series string) параметр, который можно выбрать. Заказ относится к названию группы OCA. Если заказ не относится ни к одной группе OCA, то должен быть пустой знак.Примечание: FMZ не поддерживает этот параметр.oca_name(input string) параметры выбираются. Тип группы заказов OCA. Допустимые значения: strategy.oca.none - заказ не должен принадлежать к какой-либо конкретной группе OCA; strategy.oca.cancel - заказ должен принадлежать к группе OCA, и, как только заказ будет сделан, все другие заказы в той же группе будут отменены; strategy.oca.reduce - заказ должен принадлежать к группе OCA, и если X количество контрактов заказа было размещено, то количество других контрактов заказа в той же группе OCA уменьшается на X.Примечание: FMZ не поддерживает этот параметр.oca_typecomment(series string) параметры выборочные. Другие инструкции к заказу.when(series bool) параметры. Состояние заказа. Если "true", то заказ размещен. Если "false", то ничего не происходит.alert_message(series string) Выбираемый параметр, используемый при использовании позиционирующего знака {{strategy.order.alert_message}} в диалоговом окне создания диалогов в окне создания диалогов в окне создания диалогов}}
strategy.close
Это приказ с выходом из ордера с присвоенным ID. Если есть несколько входящих ордеров с одинаковым ID, они выходят одновременно. Если при запуске команды нет открытых ордеров с присвоенным ID, то приказ не вступает в силу.
strategy.close(id, when, comment, qty, qty_percent, alert_message)
Пример
pine
strategy("closeEntry Demo", overlay=false)
strategy.entry("buy", strategy.long, when = open > close)
strategy.close("buy", when = open < close, qty_percent = 50, comment = "close buy entry for 50%")
plot(strategy.position_size)
параметр
id(series string) Необходимые параметры。 Идентификатор заказа。 Заказ может быть закрыт ссылкой на его идентификатор。when(series bool) выборочный параметр ◦ условия команды ◦qty(series int/float) выбираемый параметр. Количество выходящих контрактов/долей/часов/единиц. По умолчанию 'NaN'qty_percent(series int/float) определяет процент плавных позиций ((0-100) ≠ , приоритетом которых является приоритет ниже параметра 'qty' ≠ , по умолчанию 100 ≠comment(series string) параметры выборочные. Другие инструкции к заказу.alert_message(series string) Выбираемый параметр, используемый при использовании позиционирующего знака {{strategy.order.alert_message}} в диалоговом окне создания диалогов в окне создания диалогов в окне создания диалогов}}
strategy.close_all
Выход из текущей рыночной позиции, чтобы она осталась равной.
strategy.close_all(when, comment, alert_message)
Пример
pine
strategy("closeAll Demo", overlay=false)
strategy.entry("buy", strategy.long, when = open > close)
strategy.close_all(when = open < close, comment = "close all entries")
plot(strategy.position_size)
параметр
when(series bool) выборочный параметр ◦ условия команды ◦comment(series string) параметры выборочные. Другие инструкции к заказу.alert_message(series string) Выбираемый параметр, используемый при использовании позиционирующего знака {{strategy.order.alert_message}} в диалоговом окне создания диалогов в окне создания диалогов в окне создания диалогов}}
strategy.exit
Это приказ о выходе из заданного входа или всего рыночного положения. Если заказ с одинаковым идентификатором уже привязан, то можно изменить заказ. Если входный заказ не заключен, но есть выходный заказ, то выходный заказ будет приостановлен до тех пор, пока после заключения входного заказа не будет возможно разместить выходный заказ. Чтобы приостановить выходный заказ, следует использовать команду strategy.cancel или strategy.cancel_all. Если функция strategy.exit была вызвана один раз, то выход будет только один раз.
strategy.exit(id, from_entry, qty, qty_percent, profit, limit, loss, stop, trail_price, trail_points, trail_offset, oca_name, comment, when, alert_message)
Пример
pine
strategy(title = "simple strategy exit example")
strategy.entry("long", strategy.long, 1, when = open > high[1]) // enter long by market if current open great then previous high
strategy.exit("exit", "long", profit = 10, loss = 5) // generate full exit bracket (profit 10 points, loss 5 points per contract) from entry with name "long"
параметр
id(series string) Необходимые параметры。 Идентификатор заказа。 Заказ может быть отменен или изменен ссылкой на его идентификатор。from_entry(series string) параметры выборочные. Выход с указанием входящего указателя. Для выхода из всех позиций следует использовать пустую строку. По умолчанию пустая строка.qty(series int/float) выбираемый параметр. Количество выходящих контрактов/долей/часов/единиц. По умолчанию 'NaN'qty_percent(series int/float) определяет процент плавных позиций ((0-100) ≠ , приоритетом которых является приоритет ниже параметра 'qty' ≠ , по умолчанию 100 ≠profit(series int/float) параметры выборочные. Цель прибыли (в точках). Если указано, то при достижении установленного объема прибыли (в точках) выходит из позиции с предельной ценой.limit(series int/float) параметры выбора ◦ Цель прибыли (укажите цену) ◦ Выход из рыночной позиции (укажите цену) ◦ Приоритетность параметра 'limit' выше, чем приоритетность параметра 'profit' (если значение не является 'NaN', то 'limit' заменяет 'profit') ◦ По умолчанию <unk>NaN<unk>loss(series int/float) параметры выбираются. Стоп-убыток (в точках) Если это указано, то при достижении указанного размера убытков (в точках) выходит из позиции с одним стоп-убытком.stop(series int/float) параметры выборочные. Стоп-убыток (укажите цену) Если указано, то выходит из позиции по указанной цене (или хуже). Приоритет параметра "стоп-убыток" выше, чем приоритет параметра "убыток" (если значение не является "NaN", то "стоп-убыток" заменяет "убыток").trail_price(series int/float) параметры выборочные. Отслеживать уровень активации стоп-стандарта (укажите цену) Если указано, то при достижении указанного уровня цены будет размещен отслеживаемый стоп-стандарт. В параметре отслеживания стоп-стандарта в строке trail_offset указывается смещение, используемое для определения начальной цены отслеживаемого стоп-стандарта (учитывается в точках): X-точка ниже уровня активации для выхода из многоголового; X-точка выше уровня активации для выхода из пустого.trail_points(series int/float) параметры выборочные. Отслеживать уровень активации стоп-ложа (в точках указаны прибыли). Если указано, то при достижении рассчитанного уровня цены (в точках указана сумма прибыли) размещают отслеживающий стоп-ложа.trail_offset(series int/float) параметры выбираются. Следить за уровнем активации стоп-стоп (в точках) Следить за первоначальной ценой стоп-стопа: X-точки ниже "trail_price" или "trail_points" для выхода из многоголовной; X-точки выше "trail_price" или "trail_points" для выхода из пустой. По умолчанию - <unk>NaN<unk>(series string) параметры выборочные. Наименование группы OCA (oca_type = strategy.oca.reduce) Цель прибыли, остановка убытков / отслеживание убытков. Если имя не указано, оно будет автоматически генерироваться.Примечание: FMZ не поддерживает этот параметр.oca_namecomment(series string) параметры выборочные. Другие инструкции к заказу.when(series bool) параметры. Состояние заказа. Если "true", то заказ размещен. Если "false", то ничего не происходит.alert_message(series string) Выбираемый параметр, используемый при использовании позиционирующего знака {{strategy.order.alert_message}} в диалоговом окне создания диалогов в окне создания диалогов в окне создания диалогов}}
strategy.cancel
Это команды с использованием имени для отмены/отключения всех заранее закрепленных списков, которые генерируются следующими функциями: strategy.order, strategy.entry и strategy.exit.
strategy.cancel(id, when)
Пример
pine
strategy(title = "simple order cancellation example")
conditionForBuy = open > high[1]
strategy.entry("long", strategy.long, 1, limit = low, when = conditionForBuy) // enter long using limit order at low price of current bar if conditionForBuy is true
strategy.cancel("long", when = not conditionForBuy) // cancel the entry order with name "long" if conditionForBuy is false
параметр
id(series string) Обязательный параметр。 идентификатор заказа。 расположение этого идентификатора для отмены заказа。when(series bool) параметры. Отменить заказ в соответствии с ID. Если true, то заказ будет отменен.
strategy.cancel_all
Это отмена/отключение всех предварительно заложенных команд, сгенерированных следующими функциями: strategy.order, strategy.entry и strategy.exit.
strategy.cancel_all(when)
Пример
pine
strategy(title = "simple all orders cancellation example")
conditionForBuy1 = open > high[1]
strategy.entry("long entry 1", strategy.long, 1, limit = low, when = conditionForBuy1) // enter long by limit if conditionForBuy1 is true
conditionForBuy2 = conditionForBuy1 and open[1] > high[2]
strategy.entry("long entry 2", strategy.long, 1, limit = ta.lowest(low, 2), when = conditionForBuy2) // enter long by limit if conditionForBuy2 is true
conditionForStopTrading = open < ta.lowest(low, 2)
strategy.cancel_all(conditionForStopTrading) // cancel both limit orders if the conditon conditionForStopTrading is true
параметр
when(series bool) параметры. Отменить все условия заказа. Если условие истинно, то все активные заказы будут отменены.
strategy.order
Это команда для следующего заказа. Если заказ с одинаковым ID уже прикреплен, то заказ может быть изменен. Если нет заказа с указанным ID, то новый заказ будет выдан. Чтобы остановить заказ, следует использовать команду strategy.cancel или strategy.cancel_all. В отличие от функции strategy.entry, функция strategy.order не подвержена влиянию формы пирамиды.
strategy.order(id, direction, qty, limit, stop, oca_name, oca_type, comment, when, alert_message)
Пример
strategy(title = "simple strategy order example")
strategy.order("buy", strategy.long, 1, when = open > high[1]) // buy by market if current open great then previous high
strategy.order("sell", strategy.short, 1, when = open < low[1]) // sell by market if current open less then previous low
параметр
id(series string) Необходимые параметры。 Идентификатор заказа。 Заказ может быть отменен или изменен ссылкой на его идентификатор。direction(strategy_direction) Необходимый параметр. Направление заказа: strategy.long - покупать, strategy.short - продавать.qty(series int/float) параметры выборочные. Договор/количество акций/часов/количество единиц сделки.limit(series int/float) параметры выборочные. Лимитированная цена заказа. Если указано, тип заказа - "limit" или "stop-limit". Другие типы заказа - "NaN".stop(series int/float) параметры выбираемы. Стоп-стоп заказа. Если указано, тип заказа "стоп" или "стоп-лимит". Другие типы заказа - "NaN".(series string) параметр, который можно выбрать. Заказ относится к названию группы OCA. Если заказ не относится ни к одной группе OCA, то должен быть пустой знак.Примечание: FMZ не поддерживает этот параметр.oca_name(input string) параметры выбираются. Тип группы заказов OCA. Допустимые значения: strategy.oca.none - заказ не должен принадлежать к какой-либо конкретной группе OCA; strategy.oca.cancel - заказ должен принадлежать к группе OCA, и, как только заказ будет сделан, все другие заказы в той же группе будут отменены; strategy.oca.reduce - заказ должен принадлежать к группе OCA, и если X количество контрактов заказа было размещено, то количество других контрактов заказа в той же группе OCA уменьшается на X.Примечание: FMZ не поддерживает этот параметр.oca_typecomment(series string) параметры выборочные. Другие инструкции к заказу.when(series bool) параметры. Состояние заказа. Если "true", то заказ размещен. Если "false", то ничего не происходит.alert_message(series string) Выбираемый параметр, используемый при использовании позиционирующего знака {{strategy.order.alert_message}} в диалоговом окне создания диалогов в окне создания диалогов в окне создания диалогов}}
strategy.opentrades.entry_bar_index
bar_index, возвращающий вход в неравновесную позицию
strategy.opentrades.entry_bar_index(trade_num)
Ждать 10 K-линий и закрыть позицию.
Пример
pine
strategy("`strategy.opentrades.entry_bar_index` Example")
barsSinceLastEntry() =>
strategy.opentrades > 0 ? bar_index - strategy.opentrades.entry_bar_index(strategy.opentrades - 1) : na
// Enter a long position if there are no open positions.
if strategy.opentrades == 0
strategy.entry("Long", strategy.long)
// Close the long position after 10 bars.
if barsSinceLastEntry() >= 10
strategy.close("Long")
параметр
trade_num(series int) Номер сделки с неравновесной позицией 。 Номер сделки с первой сделкой - ноль 。
См. также
strategy.closedtrades.entry_bar_index strategy.closedtrades.exit_bar_index
strategy.opentrades.entry_id
ID, возвращающий вход в неравновесную сделку.
strategy.opentrades.entry_id(trade_num)
Пример
pine
strategy("`strategy.opentrades.entry_id` Example", overlay = true)
// We enter a long position when 14 period sma crosses over 28 period sma.
// We enter a short position when 14 period sma crosses under 28 period sma.
longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28))
shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28))
// Strategy calls to enter a long or short position when the corresponding condition is met.
if longCondition
strategy.entry("Long entry at bar #" + str.tostring(bar_index), strategy.long)
if shortCondition
strategy.entry("Short entry at bar #" + str.tostring(bar_index), strategy.short)
// Display ID of the latest open position.
if barstate.islastconfirmedhistory
runtime.log("Last opened position is " + strategy.opentrades.entry_id(strategy.opentrades - 1))
Возвращение
ID, возвращающий вход в неравновесную сделку.
параметр
trade_num(series int) Номер сделки с неравновесной позицией 。 Номер сделки с первой сделкой - ноль 。
Примечание
Если trade_num не находится в пределах, функция возвращает na:0 в strategy.opentrades-1。
См. также
strategy.opentrades.entry_bar_index strategy.opentrades.entry_time
strategy.opentrades.entry_price
Возвращение входной цены на неравновесную сделку.
strategy.opentrades.entry_price(trade_num)
Пример
pine
strategy("strategy.closedtrades.entry_price Example 1")
// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars.
if bar_index % 15 == 0
strategy.entry("Long", strategy.long)
if bar_index % 20 == 0
strategy.close("Long")
// Return the entry price for the latest closed trade.
entryPrice = strategy.closedtrades.entry_price(strategy.closedtrades - 1)
plot(entryPrice, "Long entry price")
Расчет средней неравновесной цены
Пример
pine
strategy("strategy.opentrades.entry_price Example 2", pyramiding = 2)
// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars.
if bar_index % 15 == 0
strategy.entry("Long", strategy.long)
if bar_index % 20 == 0
strategy.close("Long")
// Calculate average open position price.
avgOpenPositionPrice() =>
sumOpenPositionPrice = 0.0
for tradeNo = 0 to strategy.opentrades - 1
sumOpenPositionPrice += strategy.opentrades.entry_price(tradeNo) * strategy.opentrades.size(tradeNo) / strategy.position_size
result = nz(sumOpenPositionPrice / strategy.opentrades)
plot(avgOpenPositionPrice())
параметр
trade_num(series int) Номер сделки с неравновесной позицией 。 Номер сделки с первой сделкой - ноль 。
См. также
strategy.closedtrades.exit_price
strategy.opentrades.entry_time
Возвращение к UNIX времени входа в неравновесную торговлю.
strategy.opentrades.entry_time(trade_num)
Пример
pine
strategy("strategy.opentrades.entry_time Example")
// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars.
if bar_index % 15 == 0
strategy.entry("Long", strategy.long)
if bar_index % 20 == 0
strategy.close("Long")
// Calculates duration in milliseconds since the last position was opened.
timeSinceLastEntry()=>
strategy.opentrades > 0 ? (time - strategy.opentrades.entry_time(strategy.opentrades - 1)) : na
plot(timeSinceLastEntry() / 1000 * 60 * 60 * 24, "Days since last entry")
параметр
trade_num(series int) Номер сделки с неравновесной позицией 。 Номер сделки с первой сделкой - ноль 。
См. также
strategy.closedtrades.entry_time strategy.closedtrades.exit_time
strategy.opentrades.profit
Потери, возвращенные к сделкам с неравновесными позициями. Убытки выражены как отрицательные.
strategy.opentrades.profit(trade_num)
Возвращение прибыли от последней открытой позиции
Пример
pine
strategy("`strategy.opentrades.profit` Example 1", commission_type = strategy.commission.percent, commission_value = 0.1)
// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars.
if bar_index % 15 == 0
strategy.entry("Long", strategy.long)
if bar_index % 20 == 0
strategy.close("Long")
plot(strategy.opentrades.profit(strategy.opentrades - 1), "Profit of the latest open trade")
Расчет прибыли от всех неравновесных сделок
Пример
pine
strategy("`strategy.opentrades.profit` Example 2", pyramiding = 5)
// Strategy calls to enter 5 long positions every 2 bars.
if bar_index % 2 == 0
strategy.entry("Long", strategy.long, qty = 5)
// Calculate open profit or loss for the open positions.
tradeOpenPL() =>
sumProfit = 0.0
for tradeNo = 0 to strategy.opentrades - 1
sumProfit += strategy.opentrades.profit(tradeNo)
result = sumProfit
plot(tradeOpenPL(), "Profit of all open trades")
параметр
trade_num(series int) Номер сделки с неравновесной позицией 。 Номер сделки с первой сделкой - ноль 。
См. также
strategy.closedtrades.profit strategy.openprofit strategy.netprofit strategy.grossprofit
strategy.opentrades.size
Возвращает направление сделки и количество контрактов в неравновесной сделке. Если это значение > 0, то рыночная позиция является многоглавой. Если это значение < 0, то рыночная позиция является пустой.
strategy.opentrades.size(trade_num)
Пример
pine
strategy("`strategy.opentrades.size` Example 1")
// We calculate the max amt of shares we can buy.
amtShares = math.floor(strategy.equity / close)
// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars
if bar_index % 15 == 0
strategy.entry("Long", strategy.long, qty = amtShares)
if bar_index % 20 == 0
strategy.close("Long")
// Plot the number of contracts in the latest open trade.
plot(strategy.opentrades.size(strategy.opentrades - 1), "Amount of contracts in latest open trade")
Расчет процентной доли средней прибыли от сделки с неравномерной позицией
Пример
pine
strategy("`strategy.opentrades.size` Example 2")
// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars.
if bar_index % 15 == 0
strategy.entry("Long", strategy.long)
if bar_index % 20 == 0
strategy.close("Long")
// Calculate profit for all open trades.
profitPct = 0.0
for tradeNo = 0 to strategy.opentrades - 1
entryP = strategy.opentrades.entry_price(tradeNo)
exitP = close
profitPct += (exitP - entryP) / entryP * strategy.opentrades.size(tradeNo) * 100
// Calculate average profit percent for all open trades.
avgProfitPct = nz(profitPct / strategy.opentrades)
параметр
trade_num(series int) Номер сделки с неравновесной позицией 。 Номер сделки с первой сделкой - ноль 。
См. также
strategy.closedtrades.size strategy.position_size strategy.opentrades strategy.closedtrades
strategy.closedtrades.entry_bar_index
bar_index, возвращающий вход на торги, которые были закрыты.
strategy.closedtrades.entry_bar_index(trade_num)
Пример
pine
strategy("strategy.closedtrades.entry_bar_index Example")
// Enter long trades on three rising bars; exit on two falling bars.
if ta.rising(close, 3)
strategy.entry("Long", strategy.long)
if ta.falling(close, 2)
strategy.close("Long")
// Function that calculates the average amount of bars in a trade.
avgBarsPerTrade() =>
sumBarsPerTrade = 0
for tradeNo = 0 to strategy.closedtrades - 1
// Loop through all closed trades, starting with the oldest.
sumBarsPerTrade += strategy.closedtrades.exit_bar_index(tradeNo) - strategy.closedtrades.entry_bar_index(tradeNo) + 1
result = nz(sumBarsPerTrade / strategy.closedtrades)
plot(avgBarsPerTrade())
параметр
trade_num(series int) Номер сделки, на которой была проведена ликвидация. Номер первой сделки - 0.
См. также
strategy.closedtrades.exit_bar_index strategy.opentrades.entry_bar_index
strategy.closedtrades.exit_price
Возвращение к начальной цене сделки, которая была ликвидирована.
strategy.closedtrades.exit_price(trade_num)
Пример
pine
strategy("strategy.closedtrades.exit_price Example 1")
// We are creating a long trade every 5 bars
if bar_index % 5 == 0
strategy.entry("Long", strategy.long)
strategy.close("Long")
// Return the exit price from the latest closed trade.
exitPrice = strategy.closedtrades.exit_price(strategy.closedtrades - 1)
plot(exitPrice, "Long exit price")
Процент средней прибыли от всех ликвидированных сделок
Пример
pine
strategy("strategy.closedtrades.exit_price Example 2")
// Strategy calls to create single short and long trades.
if bar_index == last_bar_index - 15
strategy.entry("Long Entry", strategy.long)
else if bar_index == last_bar_index - 10
strategy.close("Long Entry")
strategy.entry("Short", strategy.short)
else if bar_index == last_bar_index - 5
strategy.close("Short")
// Calculate profit for both closed trades.
profitPct = 0.0
for tradeNo = 0 to strategy.closedtrades - 1
entryP = strategy.closedtrades.entry_price(tradeNo)
exitP = strategy.closedtrades.exit_price(tradeNo)
profitPct += (exitP - entryP) / entryP * strategy.closedtrades.size(tradeNo) * 100
// Calculate average profit percent for both closed trades.
avgProfitPct = nz(profitPct / strategy.closedtrades)
plot(avgProfitPct)
параметр
trade_num(series int) Номер сделки, на которой была проведена ликвидация. Номер первой сделки - 0.
См. также
strategy.closedtrades.entry_price
strategy.closedtrades.exit_bar_index
Возвращает bar_index, вышедший из сделки, когда позиция была уравнена.
strategy.closedtrades.exit_bar_index(trade_num)
Пример
pine
strategy("strategy.closedtrades.exit_bar_index Example 1")
// Strategy calls to place a single short trade. We enter the trade at the first bar and exit the trade at 10 bars before the last chart bar.
if bar_index == 0
strategy.entry("Short", strategy.short)
if bar_index == last_bar_index - 10
strategy.close("Short")
// Calculate the amount of bars since the last closed trade.
barsSinceClosed = strategy.closedtrades > 0 ? bar_index - strategy.closedtrades.exit_bar_index(strategy.closedtrades - 1) : na
plot(barsSinceClosed, "Bars since last closed trade")
Вычислите среднее число K-линий для каждой сделки.
Пример
pine
strategy("strategy.closedtrades.exit_bar_index Example 2")
// Enter long trades on three rising bars; exit on two falling bars.
if ta.rising(close, 3)
strategy.entry("Long", strategy.long)
if ta.falling(close, 2)
strategy.close("Long")
// Function that calculates the average amount of bars per trade.
avgBarsPerTrade() =>
sumBarsPerTrade = 0
for tradeNo = 0 to strategy.closedtrades - 1
// Loop through all closed trades, starting with the oldest.
sumBarsPerTrade += strategy.closedtrades.exit_bar_index(tradeNo) - strategy.closedtrades.entry_bar_index(tradeNo) + 1
result = nz(sumBarsPerTrade / strategy.closedtrades)
plot(avgBarsPerTrade())
параметр
trade_num(series int) Номер сделки, на которой была проведена ликвидация. Номер первой сделки - 0.
См. также
bar_index
strategy.closedtrades.entry_id
id, возвращающий вход в ликвидированную сделку
strategy.closedtrades.entry_id(trade_num)
Пример
pine
strategy("strategy.closedtrades.entry_id Example", overlay = true)
var isOpen = false
var openIndex = -1
// Enter a short position and close at the previous to last bar.
if not barstate.ishistory and not isOpen
strategy.entry("Short at bar #" + str.tostring(bar_index), strategy.short)
isOpen := true
openIndex := bar_index
if openIndex != -1 and bar_index > openIndex + 100
strategy.close_all()
// Display ID of the last entry position.
if barstate.islastconfirmedhistory
runtime.log("Last Entry ID is: " + strategy.closedtrades.entry_id(strategy.closedtrades - 1))
Возвращение
id, возвращающий вход в ликвидированную сделку
параметр
trade_num(series int) Номер сделки, на которой была проведена ликвидация. Номер первой сделки - 0.
Примечание
Если trade_num не находится в пределах, то функция возвращает na:0 в strategy.closedtrades-1。
См. также
strategy.closedtrades.entry_bar_index strategy.closedtrades.entry_time
strategy.closedtrades.entry_price
Возвращение входной цены на ликвидированную сделку.
strategy.closedtrades.entry_price(trade_num)
Пример
pine
strategy("strategy.closedtrades.entry_price Example 1")
// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars.
if bar_index % 15 == 0
strategy.entry("Long", strategy.long)
if bar_index % 20 == 0
strategy.close("Long")
// Return the entry price for the latest entry.
entryPrice = strategy.closedtrades.entry_price(strategy.closedtrades - 1)
plot(entryPrice, "Long entry price")
Процент средней прибыли от всех ликвидированных сделок
Пример
pine
strategy("strategy.closedtrades.entry_price Example 2")
// Strategy calls to create single short and long trades
if bar_index == last_bar_index - 15
strategy.entry("Long Entry", strategy.long)
else if bar_index == last_bar_index - 10
strategy.close("Long Entry")
strategy.entry("Short", strategy.short)
else if bar_index == last_bar_index - 5
strategy.close("Short")
// Calculate profit for both closed trades.
profitPct = 0.0
for tradeNo = 0 to strategy.closedtrades - 1
entryP = strategy.closedtrades.entry_price(tradeNo)
exitP = strategy.closedtrades.exit_price(tradeNo)
profitPct += (exitP - entryP) / entryP * strategy.closedtrades.size(tradeNo) * 100
// Calculate average profit percent for both closed trades.
avgProfitPct = nz(profitPct / strategy.closedtrades)
plot(avgProfitPct)
параметр
trade_num(series int) Номер сделки, на которой была проведена ликвидация. Номер первой сделки - 0.
См. также
strategy.closedtrades.exit_price strategy.closedtrades.size strategy.closedtrades
strategy.closedtrades.entry_time
Возвращение к UNIX-время входа в торговое пространство с уравненным положением.
strategy.closedtrades.entry_time(trade_num)
Пример
pine
strategy("strategy.closedtrades.entry_time Example", overlay = true)
// Enter long trades on three rising bars; exit on two falling bars.
if ta.rising(close, 3)
strategy.entry("Long", strategy.long)
if ta.falling(close, 2)
strategy.close("Long")
// Calculate the average trade duration
avgTradeDuration() =>
sumTradeDuration = 0
for i = 0 to strategy.closedtrades - 1
sumTradeDuration += strategy.closedtrades.exit_time(i) - strategy.closedtrades.entry_time(i)
result = nz(sumTradeDuration / strategy.closedtrades)
// Display average duration converted to seconds and formatted using 2 decimal points
if barstate.islastconfirmedhistory
runtime.log(str.tostring(avgTradeDuration() / 1000, "#.##") + " seconds")
параметр
trade_num(series int) Номер сделки, на которой была проведена ликвидация. Номер первой сделки - 0.
См. также
strategy.opentrades.entry_time strategy.closedtrades.exit_time time
strategy.closedtrades.profit
Убыток, возвращаемый к сделке, которая была ликвидирована. Убыток представлен как отрицательная стоимость.
strategy.closedtrades.profit(trade_num)
Пример
pine
strategy("`strategy.closedtrades.profit` Example")
// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars.
if bar_index % 15 == 0
strategy.entry("Long", strategy.long)
if bar_index % 20 == 0
strategy.close("Long")
// Calculate average gross profit by adding the difference between gross profit and commission.
avgGrossProfit() =>
sumGrossProfit = 0.0
for tradeNo = 0 to strategy.closedtrades - 1
sumGrossProfit += strategy.closedtrades.profit(tradeNo) - strategy.closedtrades.commission(tradeNo)
result = nz(sumGrossProfit / strategy.closedtrades)
plot(avgGrossProfit(), "Average gross profit")
параметр
trade_num(series int) Номер сделки, на которой была проведена ликвидация. Номер первой сделки - 0.
См. также
strategy.opentrades.profit strategy.closedtrades.commission
strategy.closedtrades.size
Возвращает направление сделки и количество контрактов в сделке, которая была уравнена. Если это значение > 0, то рыночная позиция является многоглавой. Если это значение < 0, то рыночная позиция является пустой.
strategy.closedtrades.size(trade_num)
Пример
pine
strategy("`strategy.closedtrades.size` Example 1")
// We calculate the max amt of shares we can buy.
amtShares = math.floor(strategy.equity / close)
// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars
if bar_index % 15 == 0
strategy.entry("Long", strategy.long, qty = amtShares)
if bar_index % 20 == 0
strategy.close("Long")
// Plot the number of contracts traded in the last closed trade.
plot(strategy.closedtrades.size(strategy.closedtrades - 1), "Number of contracts traded")
Расчет процентной доли средней прибыли от сделки с плавным положением
Пример
pine
strategy("`strategy.closedtrades.size` Example 2")
// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars.
if bar_index % 15 == 0
strategy.entry("Long", strategy.long)
if bar_index % 20 == 0
strategy.close("Long")
// Calculate profit for both closed trades.
profitPct = 0.0
for tradeNo = 0 to strategy.closedtrades - 1
entryP = strategy.closedtrades.entry_price(tradeNo)
exitP = strategy.closedtrades.exit_price(tradeNo)
profitPct += (exitP - entryP) / entryP * strategy.closedtrades.size(tradeNo) * 100
// Calculate average profit percent for both closed trades.
avgProfitPct = nz(profitPct / strategy.closedtrades)
plot(avgProfitPct)
параметр
trade_num(series int) Номер сделки, на которой была проведена ликвидация. Номер первой сделки - 0.
См. также
strategy.opentrades.size strategy.position_size strategy.closedtrades strategy.opentrades
strategy.closedtrades.exit_time
Возвращение к UNIX-время выхода из сделки с уравненным положением.
strategy.closedtrades.exit_time(trade_num)
Пример
pine
strategy("strategy.closedtrades.exit_time Example 1")
// Enter long trades on three rising bars; exit on two falling bars.
if ta.rising(close, 3)
strategy.entry("Long", strategy.long)
if ta.falling(close, 2)
strategy.close("Long")
// Calculate the average trade duration.
avgTradeDuration() =>
sumTradeDuration = 0
for i = 0 to strategy.closedtrades - 1
sumTradeDuration += strategy.closedtrades.exit_time(i) - strategy.closedtrades.entry_time(i)
result = nz(sumTradeDuration / strategy.closedtrades)
// Display average duration converted to seconds and formatted using 2 decimal points.
if barstate.islastconfirmedhistory
label.new(bar_index, high, str.tostring(avgTradeDuration() / 1000, "#.##") + " seconds")
X секунд, чтобы открыть закрытую позицию
Пример
strategy("strategy.closedtrades.exit_time Example 2")
// Strategy calls to emulate a single long trade at the first bar.
if bar_index == 0
strategy.entry("Long", strategy.long)
reopenPositionAfter(timeSec) =>
if strategy.closedtrades > 0
if time - strategy.closedtrades.exit_time(strategy.closedtrades - 1) >= timeSec * 1000
strategy.entry("Long", strategy.long)
// Reopen last closed position after 120 sec.
reopenPositionAfter(120)
if ta.change(strategy.opentrades)
strategy.exit("Long", stop = low * 0.9, profit = high * 2.5)
параметр
trade_num(series int) Номер сделки, на которой была проведена ликвидация. Номер первой сделки - 0.
См. также
strategy.closedtrades.entry_time
strategy.risk.allow_entry_in
Эта функция может быть использована для определения того, в каком направлении на рынке допускается открытие позиции.
strategy.risk.allow_entry_in(value)
Пример
pine
strategy("strategy.risk.allow_entry_in")
strategy.risk.allow_entry_in(strategy.direction.long)
strategy.entry("Long", strategy.long, when = open > close)
// Instead of opening a short position with 10 contracts, this command will close long entries.
strategy.entry("Short", strategy.short, when = open < close, qty = 10)
параметр
value(simple string) Допустимое направление. Возможные значения:strategy.direction.all、strategy.direction.long、strategy.direction.short
strategy.risk.max_position_size
Целью этого правила является определение максимального значения рыночной позиции. Это правило влияет на следующие функции:strategy.entry。 Количество входных ячеек может быть уменьшено (если это необходимо) до числа контрактов/акций/рук/единиц, так что общая стоимость позиции не превышает значения, указанного в 'strategy.risk.max_position_size'。 Если минимальное количество все же нарушает правила, то ордеры не будут размещаться。
strategy.risk.max_position_size(contracts)
Пример
pine
strategy("risk.max_position_size Demo", default_qty_value = 100)
strategy.risk.max_position_size(10)
strategy.entry("buy", strategy.long, when = open > close)
plot(strategy.position_size) // max plot value will be 10
параметр
contracts(simple int/float) Необходимые параметры. Максимальное количество контрактов/акций/рук/единиц позиции.
math
math.abs
Если...number >= 0,numberАбсолютное значениеnumberв противном случае -number。
math.abs(number)
Возвращение
numberАбсолютные значения
math.acos
Функция acos возвращает обратный диапазон числа ((в виде арки), например cos ((acos ((y)) = y в пределах y.[-1, 1]。
math.acos(angle)
Возвращение
Обратное значение. Если y выходит за пределы[-1,1], угол возвращения в[0, Pi] или na в пределах.
math.random
Возвращает псевдослучайные значения. Функция будет генерировать различные последовательности значений для каждого выполняемого сценария. Использование одинаковых значений для выбранных параметров семени будет создавать повторяющиеся последовательности.
math.random(min, max, seed)
Возвращение
Это случайная величина.
параметр
min(series int/float) Нижняя граница диапазона случайных значений。 Это значение не включается в диапазон。 По умолчанию 0。max(series int/float) Верхний предел диапазона случайных значений.seed(input int) выборочный параметр. При использовании одного и того же семени, позволяет последовательно вызывать эту функцию, чтобы произвести повторяющийся набор значений.
math.asin
Функция asin возвращает число обратной коэффициентной линии (((в дуге), коэффициент ((asin ((y)) = y в пределах y[-1, 1]。
math.asin(angle)
Возвращение
Противосигнальное значение. Если y выходит за пределы[-1,1], угол возвращения в[- в диапазоне Pi / 2, Pi / 2] или na.
math.atan
Функция atan возвращает число обратного отрезка ((в виде дуги), tan (((atan ((y)) = y в любой y.
math.atan(angle)
Возвращение
обратная резкость; угол возвращения в[- в пределах [Pi / 2, Pi / 2].
math.ceil
Вертикальная функция возвращает наименьшее (наиболее близкое к отрицательной бесконечности) целое число, большее или равное этому.
math.ceil(number)
Возвращение
Минимальное целое число меньше или равно данному числу
См. также
math.floor math.round
math.cos
Кос функция возвращает угловой тригоносец.
math.cos(angle)
Возвращение
Треугольные ароматы уголков.
параметр
angle(series int/float) угол, по дуге
math.exp
numberФункция exp e.numberВторое число, где e - число Аура.
math.exp(number)
Возвращение
Мы можем сделать это, но мы не можем сделать это.numberЯ не знаю, что делать.
См. также
math.pow
math.floor
math.floor(number)
Возвращение
меньше или равно наибольшему целому числу данного числа.
См. также
math.ceil math.round
math.log
Никаких.numberЕстественный аргумент > 0 - единственное y, что делает e^y = number。
math.log(number)
Возвращение
numberЕстественные аргументы.
См. также
math.log10
math.log10
numberЧасто используемый (или основанный на 10) аргумент - это коэффициент, к которому нужно поднять 10 для полученияnumber。10^y = number。
math.log10(number)
Возвращение
numberАргитектура на основе 10 ≠ <unk> <unk> <unk> .
См. также
math.log
math.pow
Функция математической ячейки
math.pow(base, exponent)
Пример
pine
// math.pow
plot(math.pow(close, 2))
Возвращение
baseПовышение доexponentЕслиbaseЭто ряд, который рассчитывается по элементам.
параметр
base(series int/float) указывает, какую основу использовать.exponent(series int/float) указать индекс.
math.sign
Знак (signum) кода кода кода равен нулю, если кода кода больше 0, то 1,0, если кода кода меньше 0, то -1,0.
math.sign(number)
Возвращение
Знак параметров.
math.sin
Функция косината возвращает косину треугольника для одного угла.
math.sin(angle)
Возвращение
Треугольная совокупность углов.
параметр
angle(series int/float) угол, по дуге
math.sqrt
Любые.numberКвадратный корень >=0 - единственное, что делает y >=0 равной y^2.number。
math.sqrt(number)
Возвращение
numberКвадратный корень
См. также
math.pow
math.tan
Тройная прямоугольница, от которой возвращается равенство tan.
math.tan(angle)
Возвращение
Угол треугольника прямоугольный.
параметр
angle(series int/float) угол, по дуге
math.round
Возвращение.numberЕсли используется ∞, то ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞, ∞.precisionВ качестве аргумента, возвращается четырехконечное число, входящее в меньшую цифру.
math.round(number)
math.round(number, precision)
Возвращение
numberЗначения в окружности к ближайшему целому числу, или в зависимости от точности.
параметр
number(series int/float) Окружить пять входящих значений.precision(series int) выборочный параметр.numberБудет округлое число, округлое к ближайшему целому числу, когда параметры не предоставлены.
Примечание
Обратите внимание, что для значения 'na' функция возвращает 'na'.
См. также
math.ceil math.floor
math.max
Возвращает наибольшую из нескольких значений.
math.max(number0, number1, ...)
Пример
pine
// math.max
plot(math.max(close, open))
plot(math.max(close, math.max(open, 42)))
Возвращение
Наибольшее из нескольких заданных значений.
См. также
math.min
math.min
Возвращает наименьшее из нескольких значений.
math.min(number0, number1, ...)
Пример
pine
// math.min
plot(math.min(close, open))
plot(math.min(close, math.min(open, 42)))
Возвращение
Наименьшее из нескольких заданных значений.
См. также
math.max
math.avg
Вычислите среднее значение всех рядов ((соответствующие элементы) <unk>).
math.avg(number0, number1, ...)
Возвращение
Средняя
См. также
math.sum ta.cum ta.sma
math.round_to_mintick
Возвращает значение mintick, окруженное к товару, то есть можно делить на ближайшее значение syminfo.mintick без остатка и окружить вверх.
math.round_to_mintick(number)
Возвращение
number"Все, что мы делаем, - мы делаем для того, чтобы выиграть".
параметр
number(series int/float) Окружить пять входящих значений.
См. также
math.ceil math.floor
math.sum
Функция sum возвращает скользящий синтез последнего значения y для x.
math.sum(source, length)
Возвращение
lengthК-линия возвращаетсяsourceВсего.
параметр
source(series int/float) Ожидаемые значения серии。length(series int) Количество строк K (длина).
math.todegrees
Из угла в единицах арки возвращается приблизительный эквивалентный угол в единицах степени.
math.todegrees(radians)
Возвращение
Угловые величины измеряются в единицах.
параметр
radians(series int/float) Угол в единицах дуги.
math.toradians
Из угла в единицах измерения возвращается приблизительный эквивалентный угол в единицах дуги.
math.toradians(degrees)
Возвращение
Угловые значения в единицах дуги.
параметр
degrees(series int/float) Угол, измеряемый в единицах.
others
fixnan
Для данного ряда NaN заменяется на предыдущие значения, не относящиеся к NaN.
fixnan(source)
Возвращение
Серия без пробелов.
параметр
source(series int/float/bool/color)
nz
Замените значение NaN на нуль (или указанное число) в ряду.
nz(source, replacement)
nz(source)
Пример
pine
// nz
plot(nz(ta.sma(close, 100)))
Возвращение
sourceЗначение, если это неnaЕслиsourceВ этом случаеna, возвращает 0, если используется 1, возвращаетreplacementПараметры
параметр
source(series int/float/bool/color) Серия значений, которые должны быть выполнены.replacement(series int/float/bool/color) заменяет значения всех <unk>na<unk> в серии <unk>source
na
Если NaN, то значение теста ≠
na(x)
Возвращение
Если x не является действительным числом, то истинно ((x является NaN), иначе ложно.
int
Преобразовать na или отсечь float в int ≠
int(x)
Возвращение
Переведите значение параметра после int.
См. также
float bool color string
float
Настройка na на плавающий.
float(x)
Возвращение
Преобразовать в значение параметра после float
См. также
int bool color string
alert
Вызывание событий в режиме реального времени в режиме K-линии и создание предупреждений на основе событий в качестве индикатора или стратегии, ранее созданной диалоговой панели создания предупреждений.
alert(message, freq)
Пример
pine
// alert() example
ma = ta.sma(close, 14)
xUp = ta.crossover(close, ma)
if xUp
// Trigger the alert the first time a cross occurs during the real-time bar.
alert("Price (" + str.tostring(close) + ") crossed over MA (" + str.tostring(ma) + ").", alert.freq_once_per_bar)
plot(ma)
plotchar(xUp, "xUp", "▲", location.top, size = size.tiny)
параметр
message(series string) Сообщение, отправляемое при срабатывании сигнализации.freq(input string) Частота срабатывания. Возможные значения: alert.freq_all (все функции вызовы срабатывают), alert.freq_once_per_bar (первая функция в K-строке вызовы срабатывают), alert.freq_once_per_bar_close (функциональный вызов срабатывает только в режиме реального времени в течение последнего сценария K-строка и срабатывает только при закрытии). По умолчанию alert.freq_once_per_bar.
Примечание
В Help Center рассказывается, как создать подобные оповещения.
В отличие от alertcondition, вызов alert не считается дополнительным рисунком.
Функция может быть вызвана как в глобальном, так и в локальном масштабе.
Функциональный вызов не показывает ничего на графике.
Параметр <unk>freq<unk> влияет только на частоту выстрела при использовании этой функции.
См. также
alertcondition
alertcondition
Создание условий оповещения можно использовать в диалоговом окне создания оповещения. Обратите внимание, что alertcondition не создает оповещение, а только предоставляет вам дополнительные параметры в диалоговом окне создания оповещения. Кроме того, эффект alertcondition не виден на диаграмме.
alertcondition(condition, title, message)
Пример
pine
// alertcondition
alertcondition(close >= open, title='Alert on Green Bar', message='Green Bar!')
параметр
condition(series bool) Серия булов, используемая для сигнализации. True - сигнал, false - отсутствие сигнала.title(const string) Заголовок условий оповещения.message(const string) Показать сообщение при запуске сигнализации.
Примечание
Обратите внимание, что в Pine v4 вызовы предупреждающих условий генерируют дополнительный график. Все эти вызовы учитываются, когда мы рассчитываем количество выходной серии для каждого сценария.
См. также
alert
indicator
Для совместимостиTrading ViewКод стратегии, фактически не требующий вызова.
См. также
strategy
time
Функция time возвращает UNIX-время текущей K-линии в указанном временном диапазоне и в момент сделки, возвращает NaN, если точка времени не находится в момент сделки. Примечание: FMZ не поддерживаетсяsessionПараметры
time(timeframe, session, timezone)
time(timeframe, session)
time(timeframe)
Пример
pine
timeinrange(res, sess) => not na(time(res, sess, "America/New_York")) ? 1 : 0
plot(timeinrange("1", "1300-1400"), color=color.red)
// This plots 1.0 at every start of 10 minute bar on a 1 minute chart:
newbar(res) => ta.change(time(res)) == 0 ? 0 : 1
plot(newbar("10"))
Когда вы настраиваете сеанс, вы можете указать не только час и минуту, но и дату недели.
Если дата не указана, то считается, что время торгов установлено с воскресенья (1) по субботу (7), то есть 1100-2000 фунтов стерлингов то же самое, что и 1100-1200: 1234567 фунтов стерлингов.
Вы можете изменить его, указав дату. Например, для товаров, которые торгуются 7 дней в неделю и торгуются 24 часа в сутки, следующий сценарий не будет цветовым для субботы и воскресенья:
Пример
pine
// Time
t1 = time(timeframe.period, "0000-0000:23456")
bgcolor(t1 ? color.new(color.blue, 90) : na)
Один.sessionПараметры могут содержать несколько разных периодов торговли, разделенных запятой. Например, следующий сценарий будет выделять K-линию с 10:00 до 11:00 и с 14:00 до 15:00 (только в будние дни):
Пример
pine
// Time
t1 = time(timeframe.period, "1000-1100,1400-1500:23456")
bgcolor(t1 ? color.new(color.blue, 90) : na)
Возвращение
Время Unix.
параметр
timeframe(simple string) Период времени。 Пустая строка интерпретируется как текущий период времени на графике。(simple string) Спецификация времени сделки。 параметр, используемый по умолчанию для времени сделки с товаром。 пустая строка интерпретируется как время сделки с товаром。 FMZ не поддерживается。sessiontimezone(simple string)sessionЧасовой пояс для параметров。 может использоваться только в том случае, если в ячейке сеанса указана <unk>。 является выборочным。 по умолчанию является syminfo.timezone。 может быть указана с помощью обозначения GMT ((например, <unk>GMT-5<unk>) или названия базы данных IANA-часового пояс ((например, <unk>America/New_York<unk>) <unk>。
Примечание
UNIX-время - это количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 UTC.
year
year(time)
year(time, timezone)
Возвращение
Год, в котором предоставляется время UNIX ((переменные часовые пояса) <unk>).
параметр
time(series int) Unix-время в миллисекундах.timezone(series string) Выбираемый параметр ◦ часовой пояс ◦
Примечание
UNIX-время - это количество миллисекунд с 1 января 1970 года UTC 00:00:00. По умолчанию часовой пояс syminfo.timezone. Вы можете использовать timestamp для проверки возможных значений.
Обратите внимание, что эта функция возвращает год в зависимости от времени открытия K-линии. Для ночных торговых часов (например, EURUSD в понедельник начинается с 17:00 UTC-4 в воскресенье), значение может быть ниже года в день торговли.
См. также
year time month dayofmonth dayofweek hour minute second
month
month(time)
month(time, timezone)
Возвращение
Месяцы, предоставляющие время UNIX ((переменные часовые пояса) }}.
параметр
time(series int) Unix-время в миллисекундах.timezone(series string) Выбираемый параметр ◦ часовой пояс ◦
Примечание
UNIX-время - это количество миллисекунд с 1 января 1970 года UTC 00:00:00. По умолчанию часовой пояс syminfo.timezone. Вы можете использовать timestamp для проверки возможных значений.
Обратите внимание, что эта функция возвращает месяц в зависимости от времени открытия K-линии. Для ночных торговых часов (например, EURUSD начинает торговать в понедельник с 17:00 UTC-4 по воскресеньям) значение может быть ниже, чем в месяц торгового дня.
См. также
month time year dayofmonth dayofweek hour minute second
hour
hour(time)
hour(time, timezone)
Возвращение
Часы, предоставляющие время UNIX ((переменные часовые пояса) <unk>).
параметр
time(series int) Unix-время в миллисекундах.timezone(series string) Выбираемый параметр ◦ часовой пояс ◦
Примечание
UNIX-время - это количество миллисекунд с 1 января 1970 года UTC 00:00:00. По умолчанию часовой пояс syminfo.timezone. Вы можете использовать timestamp для проверки возможных значений.
См. также
hour time year month dayofmonth dayofweek minute second
minute
minute(time)
minute(time, timezone)
Возвращение
Минуты, предоставляемые в UNIX-время ((переменные часовые пояса)).
параметр
time(series int) Unix-время в миллисекундах.timezone(series string) Выбираемый параметр ◦ часовой пояс ◦
Примечание
UNIX-время - это количество миллисекунд с 1 января 1970 года UTC 00:00:00. По умолчанию часовой пояс syminfo.timezone. Вы можете использовать timestamp для проверки возможных значений.
См. также
minute time year month dayofmonth dayofweek hour second
second
second(time)
second(time, timezone)
Возвращение
Показать количество секунд UNIX-времени ((переменные часовые пояса)).
параметр
time(series int) Unix-время в миллисекундах.timezone(series string) Выбираемый параметр ◦ часовой пояс ◦
Примечание
UNIX-время - это количество миллисекунд с 1 января 1970 года UTC 00:00:00. По умолчанию часовой пояс syminfo.timezone. Вы можете использовать timestamp для проверки возможных значений.
См. также
second time year month dayofmonth dayofweek hour minute
weekofyear
weekofyear(time)
weekofyear(time, timezone)
Возвращение
Обеспечивает циклы UNIX-времени ((переменные часовые пояса)) [2].
параметр
time(series int) Unix-время в миллисекундах.timezone(series string) Выбираемый параметр ◦ часовой пояс ◦
Примечание
UNIX-время - это количество миллисекунд с 1 января 1970 года UTC 00:00:00. По умолчанию часовой пояс syminfo.timezone. Вы можете использовать timestamp для проверки возможных значений.
Обратите внимание, что эта функция возвращает неделю в зависимости от времени открытия линии K. Для ночных торговых часов (например, EURUSD, чьи торговые часы в понедельник начинаются с 17:00 в воскресенье), это значение может быть ниже, чем неделя в торговый день.
См. также
weekofyear time year month dayofmonth dayofweek hour minute second
dayofweek
dayofweek(time)
dayofweek(time, timezone)
Возвращение
Каждый день недели, предоставляющий время UNIX ((переменные часовые пояса) }}.
параметр
time(series int) Unix-время в миллисекундах.timezone(series string) Выбираемый параметр ◦ часовой пояс ◦
Примечание
Обратите внимание, что эта функция возвращает дату в зависимости от времени открытия K-линии. Для ночных торговых часов (например, EURUSD в понедельник начинается с 17:00 по воскресеньям) значение может быть ниже, чем дата дня торговли.
UNIX-время - это количество миллисекунд с 1 января 1970 года UTC 00:00:00. По умолчанию часовой пояс syminfo.timezone. Вы можете использовать timestamp для проверки возможных значений.
См. также
time dayofmonth
dayofmonth
dayofmonth(time)
dayofmonth(time, timezone)
Возвращение
Месячные даты, предоставляющие время UNIX ((переменные часовые пояса) }}.
параметр
time(series int) Unix-время в миллисекундах.timezone(series string) Выбираемый параметр ◦ часовой пояс ◦
Примечание
UNIX-время - это количество миллисекунд с 1 января 1970 года UTC 00:00:00. По умолчанию часовой пояс syminfo.timezone. Вы можете использовать timestamp для проверки возможных значений.
Обратите внимание, что эта функция возвращает дату в зависимости от времени открытия K-линии. Для ночных торговых часов (например, EURUSD в понедельник начинается с 17:00 UTC-4 в воскресенье), значение может быть ниже, чем дата дня торговли.
timestamp
Функция тайм-ап возвращает указанные даты и часы по UNIX времени.
timestamp(dateString)
timestamp(year, month, day, hour, minute, second)
timestamp(timezone, year, month, day, hour, minute, second)
Пример
pine
// timestamp
plot(timestamp(2016, 01, 19, 09, 30), linewidth=3, color=color.green)
plot(timestamp(syminfo.timezone, 2016, 01, 19, 09, 30), color=color.blue)
plot(timestamp(2016, 01, 19, 09, 30), color=color.yellow)
plot(timestamp("GMT+6", 2016, 01, 19, 09, 30))
plot(timestamp(2019, 06, 19, 09, 30, 15), color=color.lime)
plot(timestamp("GMT+3", 2019, 06, 19, 09, 30, 15), color=color.fuchsia)
plot(timestamp("Feb 01 2020 22:10:05"))
plot(timestamp("2011-10-10T14:48:00"))
plot(timestamp("04 Dec 1995 00:12:00 GMT+5"))
Возвращение
Время Unix.
параметр
timezone(series string) Временное поясное место. . . . . . . . . . . . . . . . . . . .year(series int) годmonth(series int) месяцday(series int) Датаhour(series int) (возможные параметры) час. По умолчанию 0minute(series int) (возможные параметры) минуты. По умолчанию 0second(series int) (возможный параметр) Second。 по умолчанию 0。dateString(const string) Строка, содержащая дату, а также выбор времени и часового пояса. Формат должен соответствовать стандартам IETF RFC 2822 или ISO 8601 ((<unk>DD MMM YYYY hh:mm:ss±hhmm<unk> или<unk>YYYYY-MM-DDThh:mm:ss±hh:mm<unk>, а значит<unk>20 Feb 2020<unk> или<unk>2020-02-20<unk>). Если время не предоставлено, используйте<unk>00:00<unk>. Если не предоставлено ни одного часового пояса, используйте GMT+0。 Обратите внимание, что это отличается от обычного поведения функции, которая возвращает время часового пояса, в котором находится биржа。
Примечание
UNIX-время - это количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 UTC.
См. также
time timenow syminfo.timezone
fill
Используйте предоставленный цвет, чтобы заполнить фон между двумя рисунками или hline.
fill(hline1, hline2, color, title, editable, fillgaps, display)
fill(plot1, plot2, color, title, editable, show_last, fillgaps, display)
Пример
pine
h1 = hline(20)
h2 = hline(10)
fill(h1, h2, color=color.new(color.blue, 90))
p1 = plot(open)
p2 = plot(close)
fill(p1, p2, color=color.new(color.green, 90))
параметр
hline1(hline) Первый hline объект. Необходимые параметры.hline2(hline) Второй объект hline. Нужные параметры.plot1(plot) Первый объект начертания. Необходимые параметрыplot2(plot) Второй объект начертания. Нужные параметры.color(series color) цвет изображения. Вы можете использовать константы, такие как 'color = red' или 'color =#ff001a', а также сложные выражения, такие как 'color = close >= open ? green: red'.title(const string) создан заголовок для заполнения объекта.editable(const bool) Если true, то заполненный стиль может быть отредактирован в диалоге форматирования.show_last(input int) Если установлена, то определяется количество k строк, заполняющих график ((от последней k строк назад) <unk>fillgaps(const bool) Контролирует последовательное заполнение пробелов, то есть, когда один из вызовов plot() возвращает значение na. Если настроить на true, то последнее заполнение будет продолжать заполнять пробелы.display(plot_display) Контролирует заполненное отображение. Возможные значения: display.none, display.all. По умолчанию display.all.
См. также
plot barcolor bgcolor hline
hline
Горизонтальная линия на заданном уровне фиксированной цены.
hline(price, title, color, linestyle, linewidth, editable, display)
Пример
pine
// input.hline
hline(3.14, title='Pi', color=color.blue, linestyle=hline.style_dotted, linewidth=2)
// You may fill the background between any two hlines with a fill() function:
h1 = hline(20)
h2 = hline(10)
fill(h1, h2, color=color.new(color.green, 90))
Возвращение
Hline-объекты, которые можно использовать для fill.
параметр
price(input int/float) Значение, которое будет отображаться объектом.titleЗаголовок объекта (const string)color(input color) Цвет рендеринга. Должна быть константа ((невыражение))linestyle(hline_style) Стиль рендеринга. Возможные значения: solid, dotted, dotted.linewidth(input int) Ширина рендеринговой линии ≠ 1 ≠ 1editable(const bool) Если true, тоhline стиль может быть отредактирован в диалоговом окне форматирования.display(plot_display) Место отображения в контрольной строке. Возможные значения: display.none, display.all. По умолчанию display.all.overlay(const bool) параметр расширения платформы FMZ, используемый для настройки текущей функции на матрице (настройка true) или на подматрице (настройка false). По умолчанию он будет выглядеть как false. Если не указать этот параметр, то он будет отображаться в соответствии сstrategyилиindicatorВoverlayПараметры настройкиstrategyилиindicatorНикаких настроекoverlayПараметры обрабатываются в соответствии с параметрами по умолчанию.
bgcolor
Фон, заполненный K-линией в указанном цвете.
bgcolor(color, offset, editable, show_last, title, display, overlay)
Пример
pine
// bgcolor example
bgcolor(close < open ? color.new(color.red,70) : color.new(color.green, 70))
параметр
color(series color) Цвет, заполняющий фон. Вы можете использовать константы, такие как <unk>red<unk> или <unk>#ff001a<unk>, а также сложные выражения, такие как 'close >= open ? green: red‛.offset(series int) Движение цветовой серии влево или вправо на определенном количестве k строк. По умолчанию 0editable(const bool) Если true, то стиль bgcolor может быть отредактирован в диалоге форматирования.show_last(input int) Если установлена, то определяется количество k строк, заполняющих график ((от последней k строк назад) <unk>titleЗаголовок (const string) bgcolor. Выбираемые параметры.display(plot_display) Контролирует местоположение бгколора. Возможные значения: display.none, display.all. По умолчанию display.all.overlay(const bool) параметр расширения платформы FMZ, используемый для настройки текущей функции на матрице (настройка true) или на подматрице (настройка false). По умолчанию он будет выглядеть как false. Если не указать этот параметр, то он будет отображаться в соответствии сstrategyилиindicatorВoverlayПараметры настройкиstrategyилиindicatorНикаких настроекoverlayПараметры обрабатываются в соответствии с параметрами по умолчанию.
См. также
plot
barcolor
Настройка цвета K-линии.
barcolor(color, offset, editable, show_last, title, display)
Пример
pine
barcolor(close < open ? color.black : color.white)
параметр
color(series color) Цвет K-линии。 Вы можете использовать константы, такие как <unk>red<unk> или <unk>#ff001a<unk>, а также сложные выражения, такие как 'close >= open ? green: red‛。 Необходимые параметры。offset(series int) Движение цветовой серии влево или вправо на определенном количестве k строк. По умолчанию 0editable(const bool) Если true, то стиль barcolor может быть отредактирован в диалоге форматирования.show_last(input int) Если установлена, то определяется количество k строк, заполняющих график ((от последней k строк назад) <unk>title(const string) Barcolor заголовок 。 параметры 。display(plot_display) Контролирует место отображения цвета K-линии. Возможные значения: display.none, display.all. По умолчанию display.all.
error
Совместимые с PINE v4 версииerrorФункции иruntime.errorСогласие.
Встроенные переменные
order
order.ascending
Определить, в каком порядке массив от минимального до максимального.
тип
sort_order
См. также
array.new_float array.sort
order.descending
Определить, в каком порядке распоряжается матрица от наибольшей до наименьшей.
тип
sort_order
См. также
array.new_float array.sort
timeframe
timeframe.isdaily
Если текущее разрешение - ежедневное разрешение, то возвращается true, в противном случае возвращается false.
тип
simple bool
См. также
timeframe.isdwm timeframe.isintraday timeframe.isminutes timeframe.isseconds timeframe.isweekly timeframe.ismonthly
timeframe.isdwm
Вернуть true, если текущее разрешение является ежедневным или еженедельным или ежемесячным, иначе вернуть false.
тип
simple bool
См. также
timeframe.isintraday timeframe.isminutes timeframe.isseconds timeframe.isdaily timeframe.isweekly timeframe.ismonthly
timeframe.isintraday
Вернуть true, если текущий цикл является циклом в сутки (минуты или секунды), в противном случае вернуть false.
тип
simple bool
См. также
timeframe.isminutes timeframe.isseconds timeframe.isdwm timeframe.isdaily timeframe.isweekly timeframe.ismonthly
timeframe.isminutes
Вернуть true, если текущий цикл является минутным, и false, если нет.
тип
simple bool
См. также
timeframe.isdwm timeframe.isintraday timeframe.isseconds timeframe.isdaily timeframe.isweekly timeframe.ismonthly
timeframe.ismonthly
Если текущее разрешение - это разрешение на месяц, то возвращается true, в противном случае возвращается false.
тип
simple bool
См. также
timeframe.isdwm timeframe.isintraday timeframe.isminutes timeframe.isseconds timeframe.isdaily timeframe.isweekly
timeframe.isseconds
Если текущий цикл составляет секунды, то возвращается true, в противном случае возвращается false.
тип
simple bool
См. также
timeframe.isdwm timeframe.isintraday timeframe.isminutes timeframe.isdaily timeframe.isweekly timeframe.ismonthly
timeframe.isweekly
Если текущее разрешение - это разрешение на неделю, то возвращается true, в противном случае возвращается false.
тип
simple bool
См. также
timeframe.isdwm timeframe.isintraday timeframe.isminutes timeframe.isseconds timeframe.isdaily timeframe.ismonthly
timeframe.multiplier
Временные циклы умножаются, например, '60' - 60, 'D' - 1, '5D' - 5, '12M' - 12。
тип
simple int
См. также
syminfo.ticker syminfo.tickerid timeframe.period
timeframe.period
Временный цикл. Например, '60' - 60 минут, 'D' - день, 'W' - неделя, 'M' - месяц, '5D' - 5 дней, '12M' - год, '3M' - квартал.
тип
simple string
См. также
syminfo.ticker syminfo.tickerid timeframe.multiplier
display
display.none
Название константы, указывающей местоположение картинки. Нигде не отображается.
тип
plot_display
См. также
plot plotshape plotchar
display.all
Название константы, указывающей место, где будет отображаться картинка.
тип
plot_display
См. также
plot plotshape plotchar plotarrow plotbar plotcandle
shape
shape.xcross
Стиль формы функции plotshape.
тип
const string
См. также
plotshape
shape.cross
Стиль формы функции plotshape.
тип
const string
См. также
plotshape
shape.triangleup
Стиль формы функции plotshape.
тип
const string
См. также
plotshape
shape.triangledown
Стиль формы функции plotshape.
тип
const string
См. также
plotshape
shape.flag
Стиль формы функции plotshape.
тип
const string
См. также
plotshape
shape.circle
Стиль формы функции plotshape.
тип
const string
См. также
plotshape
shape.arrowup
Стиль формы функции plotshape.
тип
const string
См. также
plotshape
shape.arrowdown
Стиль формы функции plotshape.
тип
const string
См. также
plotshape
shape.labelup
Стиль формы функции plotshape.
тип
const string
См. также
plotshape
shape.labeldown
Стиль формы функции plotshape.
тип
const string
См. также
plotshape
shape.square
Стиль формы функции plotshape.
тип
const string
См. также
plotshape
shape.diamond
Стиль формы функции plotshape.
тип
const string
См. также
plotshape
color
color.aqua
#00BCD4 - именная константа цвета.
тип
const color
color.black
является именной константой цвета #363A45.
тип
const color
color.blue
является именной константой цвета #2962ff。
тип
const color
color.fuchsia
Именная константа цвета #E040FB
тип
const color
color.gray
является именной константой цвета #787B86.
тип
const color
color.green
Это именная константа цвета # 4CAF50.
тип
const color
color.lime
является именной константой цвета #00E676.
тип
const color
color.maroon
Именная константа цвета #880E4F.
тип
const color
color.navy
является именной константой цвета #311B92 ≠
тип
const color
color.olive
#808000 - именная константа цвета.
тип
const color
color.orange
#FF9800 является именной константой цвета <unk>.
тип
const color
color.purple
является именной константой цвета #9C27B0
тип
const color
color.red
#FF5252 является именной константой цвета <unk>.
тип
const color
color.silver
Именная константа цвета #B2B5BE.
тип
const color
color.teal
color.teal
является именной константой цвета #00897B.
тип
const color
color.white
#FFFFFF является именной константой цвета.
тип
const color
color.yellow
Название константы #FFEB3B
тип
const color
plot
plot.style_line
Название константы стиля 'Line', используется в качестве функции plotstyleПараметры в параметрах.
тип
plot_style
См. также
plot plot.style_linebr plot.style_stepline plot.style_stepline_diamond plot.style_histogram plot.style_cross plot.style_area plot.style_areabr plot.style_columns plot.style_circles
plot.style_linebr
Название константы в стиле 'Line With Breaks', используется в качестве функции plotstyleПараметры для параметров. аналогично plot.style_line, за исключением того, что пустоты в данных не заполняются.
тип
plot_style
См. также
plot plot.style_line plot.style_stepline plot.style_stepline_diamond plot.style_histogram plot.style_cross plot.style_area plot.style_areabr plot.style_columns plot.style_circles
plot.style_histogram
Именная константа в стиле 'Histogram', используемая в функции plotstyleПараметры в параметрах.
тип
plot_style
См. также
plot plot.style_line plot.style_linebr plot.style_stepline plot.style_stepline_diamond plot.style_cross plot.style_area plot.style_areabr plot.style_columns plot.style_circles
plot.style_columns
Название константы в стиле 'Columns', используется в функции plotstyleПараметры в параметрах.
тип
plot_style
См. также
plot plot.style_line plot.style_linebr plot.style_stepline plot.style_stepline_diamond plot.style_histogram plot.style_cross plot.style_area plot.style_areabr plot.style_circles
plot.style_circles
Название константы в стиле 'Circles', используется в качестве графикаstyleПараметры в параметрах.
тип
plot_style
См. также
plot plot.style_line plot.style_linebr plot.style_stepline plot.style_stepline_diamond plot.style_histogram plot.style_cross plot.style_area plot.style_areabr plot.style_columns
plot.style_area
Название константы типа 'Area', используемая в функции plotstyleПараметры в параметрах.
тип
plot_style
См. также
plot plot.style_line plot.style_linebr plot.style_stepline plot.style_stepline_diamond plot.style_histogram plot.style_areabr plot.style_cross plot.style_columns plot.style_circles
plot.style_areabr
Название константы в стиле 'Area With Breaks' используется в качестве функции plotstyleПараметры параметров. аналогично plot.style_area, за исключением того, что пустоты в данных не заполнены.
тип
plot_style
См. также
plot plot.style_line plot.style_linebr plot.style_stepline plot.style_stepline_diamond plot.style_histogram plot.style_cross plot.style_area plot.style_columns plot.style_circles
plot.style_cross
Название константы типа 'Cross', используемая в качестве функции plotstyleПараметры в параметрах.
тип
plot_style
См. также
plot plot.style_line plot.style_linebr plot.style_stepline plot.style_stepline_diamond plot.style_histogram plot.style_area plot.style_areabr plot.style_columns plot.style_circles
plot.style_stepline
Именная константа типа Step Line, используемая в качестве функции plotstyleПараметры в параметрах.
тип
plot_style
См. также
plot plot.style_stepline_diamond plot.style_linebr plot.style_histogram plot.style_cross plot.style_area plot.style_areabr plot.style_columns plot.style_circles
plot.style_stepline_diamond
Именная константа в стиле Step Line With Diamonds, используемая в качестве функции plotstyleПараметры для параметров. Подобно plot.style_stepline, кроме изменений данных также обозначены иероглифами.
тип
plot_style
См. также
plot plot.style_line plot.style_linebr plot.style_histogram plot.style_cross plot.style_area plot.style_areabr plot.style_columns plot.style_circles
location
location.abovebar
location.abovebar
plotshape, значение местоположения функции plotchar。 Форма изображается над линией основной серии k。
тип
const string
См. также
plotshape plotchar location.belowbar location.top location.bottom location.absolute
location.belowbar
plotshape, значение местоположения функции plotchar.
тип
const string
См. также
plotshape plotchar location.abovebar location.top location.bottom location.absolute
location.top
plotshape, значение местоположения функции plotchar.
тип
const string
См. также
plotshape plotchar location.abovebar location.belowbar location.bottom location.absolute
location.bottom
plotshape, значение местоположения функции plotchar.
тип
const string
См. также
plotshape plotchar location.abovebar location.belowbar location.top location.absolute
location.absolute
plotshape, значение местоположения функции plotchar. Формы начертаны на графике, используя значение индикатора в качестве координатов цены.
тип
const string
См. также
plotshape plotchar location.abovebar location.belowbar location.top location.bottom
size
size.auto
size.auto
Значение величины функции plotshape, plotchar. Размер формы автоматически приспосабливается к размеру линии.
тип
const string
См. также
plotshape plotchar size.tiny size.small size.normal size.large size.huge
size.tiny
plotshape, значение величины функции plotchar. Размер формы мелкий.
тип
const string
См. также
plotshape plotchar size.auto size.small size.normal size.large size.huge
size.small
plotshape, значение величины функции plotchar. Размер формы мал.
тип
const string
См. также
plotshape plotchar size.auto size.tiny size.normal size.large size.huge
size.normal
plotshape, значение величины функции plotchar. Размер формы обычный.
тип
const string
См. также
plotshape plotchar size.auto size.tiny size.small size.large size.huge
size.large
plotshape, значение величины функции plotchar.
тип
const string
См. также
plotshape plotchar size.auto size.tiny size.small size.normal size.huge
size.huge
plotshape, значение величины функции plotchar.
тип
const string
См. также
plotshape plotchar size.auto size.tiny size.small size.normal size.large
alert
alert.freq_once_per_bar
Именная константа, используемая вместе с параметром 'freq' функции alert().
Первый вызов функции в строке K вызывает тревогу.
тип
const string
См. также
alert
alert.freq_all
Именная константа, используемая вместе с параметром 'freq' функции alert().
Все вызовы функций вызывают тревогу.
тип
const string
См. также
alert
alert.freq_once_per_bar_close
Именная константа, используемая вместе с параметром 'freq' функции alert().
Вызов этой функции происходит только в режиме реального времени во время последнего сценария K-линии и вызывает тревогу при закрытии.
тип
const string
См. также
alert
format
format.inherit
является именной константой.
тип
const string
См. также
format.price format.volume
format.price
является именной константой.
тип
const string
Примечание
Если format - format.price, то задается значение точности по умолчанию. Вы можете изменить значение точности с помощью параметров точности функции указателя.
См. также
format.inherit format.volume
format.volume
является именной константой.
тип
const string
См. также
format.inherit format.price
syminfo
syminfo.ticker
Код товара без префикса биржи, например 'MSFT'。
тип
simple string
См. также
syminfo.tickerid timeframe.period timeframe.multiplier
syminfo.tickerid
Код товара с префиксом биржи, например, BATS: MSFT, NASDAQ: MSFT.
тип
simple string
См. также
syminfo.ticker timeframe.period timeframe.multiplier
syminfo.basecurrency
Основная валюта товара. Для кода товара - BTCUSD, возвращается BTC.
тип
simple string
См. также
syminfo.currency syminfo.ticker
syminfo.currency
Валюта товара. Код валюты возвращаемого товара: <unk> USD<unk>, <unk> EUR<unk> и т. д.
тип
simple string
См. также
syminfo.basecurrency syminfo.ticker
syminfo.type
Тип текущего товарного кода. Возможные значения: stock, futures, index, forex, crypto, fund, dr.
тип
simple string
См. также
syminfo.ticker
syminfo.mintick
Минимальные измерения текущего сорта. В FMZ, на релиз/ретрансляционном интерфейсе в "Pine Language Exchange Class Repository"Точность валюты ценообразованияЭто можно контролировать.Точность валюты ценообразованияНастройка 2 означает, что цена торгуется точно до второго числа, при этом наименьшее изменение цены в единице равен 0.01 <unk> . значение syminfo.mintick равен 0.01 <unk> .
тип
simple float
См. также
syminfo.pointvalue
syminfo.pointvalue
Точечная стоимость текущего товара
тип
simple float
См. также
syminfo.mintick
syminfo.timezone
Обменные часовые пояса основного ряда графиков. Возможные значения см. в timestamp.
тип
simple string
См. также
timestamp
barstate
barstate.islastconfirmedhistory
Если сценарий выполняется на последней K-линии набора данных в момент закрытия рынка, или сценарий выполняется на K-линии перед реальной K-линией, возвращает true, если рынок открыт. В противном случае возвращает false.
тип
series bool
Примечание
Код PineScript с этой переменной позволяет выполнять различные вычисления для исторических записей и реального времени.
Пожалуйста, обратите внимание, что использование данной переменной/функции может привести к перекрашиванию индикатора.
См. также
barstate.isfirst barstate.islast barstate.ishistory barstate.isrealtime barstate.isnew
barstate.isnew
Если сценарий рассчитывается на новой k-линии, то возвращается true, в противном случае false.
тип
series bool
Примечание
Код PineScript с этой переменной позволяет выполнять различные вычисления для исторических записей и реального времени.
Пожалуйста, обратите внимание, что использование данной переменной/функции может привести к перекрашиванию индикатора.
См. также
barstate.isfirst barstate.islast barstate.ishistory barstate.isrealtime barstate.isconfirmed barstate.islastconfirmedhistory
barstate.isfirst
Вернуть true, если текущая k-строка является первой k-строкой из группы k-строк, в противном случае false.
тип
series bool
Примечание
Код PineScript с этой переменной позволяет выполнять различные вычисления для исторических записей и реального времени.
Пожалуйста, обратите внимание, что использование данной переменной/функции может привести к перекрашиванию индикатора.
См. также
barstate.islast barstate.ishistory barstate.isrealtime barstate.isnew barstate.isconfirmed barstate.islastconfirmedhistory
barstate.islast
Вернуть true, если текущая k-строка является последней k-строкой из k-строковой группы, в противном случае false.
тип
series bool
Примечание
Код PineScript с этой переменной позволяет выполнять различные вычисления для исторических записей и реального времени.
Пожалуйста, обратите внимание, что использование данной переменной/функции может привести к перекрашиванию индикатора.
См. также
barstate.isfirst barstate.ishistory barstate.isrealtime barstate.isnew barstate.isconfirmed barstate.islastconfirmedhistory
barstate.ishistory
Если текущая k-линия является исторической k-линией, то возвращается true, в противном случае возвращается false.
тип
series bool
Примечание
Код PineScript с этой переменной позволяет выполнять различные вычисления для исторических записей и реального времени.
Пожалуйста, обратите внимание, что использование данной переменной/функции может привести к перекрашиванию индикатора.
См. также
barstate.isfirst barstate.islast barstate.isrealtime barstate.isnew barstate.isconfirmed barstate.islastconfirmedhistory
barstate.isconfirmed
Если сценарий рассчитывает последнее (закрытое) обновление текущей k-линии, возвращает true. Следующий сценарий будет рассчитывать данные новой K-линии.
тип
series bool
Примечание
Код PineScript с этой переменной позволяет выполнять различные вычисления для исторических записей и реального времени.
Не рекомендуется использовать barstate.isconfirmed в выражении request.security. Оно непредсказуемо из-за значения запроса request.security.
Пожалуйста, обратите внимание, что использование данной переменной/функции может привести к перекрашиванию индикатора.
См. также
barstate.isfirst barstate.islast barstate.ishistory barstate.isrealtime barstate.isnew barstate.islastconfirmedhistory
barstate.isrealtime
Если текущая k-линия является реальной k-линией, то возвращается true, в противном случае возвращается false.
тип
series bool
Примечание
Код PineScript с этой переменной позволяет выполнять различные вычисления для исторических записей и реального времени.
Пожалуйста, обратите внимание, что использование данной переменной/функции может привести к перекрашиванию индикатора.
См. также
barstate.isfirst barstate.islast barstate.ishistory barstate.isnew barstate.isconfirmed barstate.islastconfirmedhistory
barstate.time
Пока нет
ta
ta.accdist
Индекс накопления/распределения
тип
series float
ta.iii
Индекс интенсивности диска.
тип
series float
Пример
pine
// Intraday Intensity Index
plot(ta.iii, color=color.yellow)
// the same on pine
f_iii() =>
(2 * close - high - low) / ((high - low) * volume)
plot(f_iii())
ta.nvi
Отрицательный вес.
тип
series float
Пример
pine
// Negative Volume Index
plot(ta.nvi, color=color.yellow)
// the same on pine
f_nvi() =>
float ta_nvi = 1.0
float prevNvi = (nz(ta_nvi[1], 0.0) == 0.0) ? 1.0: ta_nvi[1]
if nz(close, 0.0) == 0.0 or nz(close[1], 0.0) == 0.0
ta_nvi := prevNvi
else
ta_nvi := (volume < nz(volume[1], 0.0)) ? prevNvi + ((close - close[1]) / close[1]) * prevNvi : prevNvi
result = ta_nvi
plot(f_nvi())
ta.pvi
Показатель пропорциональности.
тип
series float
Пример
pine
// Positive Volume Index
plot(ta.pvi, color=color.yellow)
// the same on pine
f_pvi() =>
float ta_pvi = 1.0
float prevPvi = (nz(ta_pvi[1], 0.0) == 0.0) ? 1.0: ta_pvi[1]
if nz(close, 0.0) == 0.0 or nz(close[1], 0.0) == 0.0
ta_pvi := prevPvi
else
ta_pvi := (volume > nz(volume[1], 0.0)) ? prevPvi + ((close - close[1]) / close[1]) * prevPvi : prevPvi
result = ta_pvi
plot(f_pvi())
ta.obv
Показатель энергетического потока.
тип
series float
Пример
pine
// On Balance Volume
plot(ta.obv, color=color.yellow)
// the same on pine
f_obv() =>
ta.cum(math.sign(ta.change(close)) * volume)
plot(f_obv())
ta.pvt
Показатель ценовой тенденции.
тип
series float
Пример
pine
// Price-Volume Trend
plot(ta.pvt, color=color.yellow)
// the same on pine
f_pvt() =>
ta.cum((ta.change(close) / close[1]) * volume)
plot(f_pvt())
ta.wad
Вильгельм Доу, линейка воздушных сил.
тип
series float
Пример
pine
// Williams Accumulation/Distribution
plot(ta.wad, color=color.yellow)
// the same on pine
f_wad() =>
trueHigh = math.max(high, close[1])
trueLow = math.min(low, close[1])
mom = ta.change(close)
gain = (mom > 0) ? close - trueLow : (mom < 0) ? close - trueHigh : 0
ta.cum(gain)
plot(f_wad())
ta.wvad
Вильгельм вариантный дисперсия.
тип
series float
Пример
pine
// Williams Variable Accumulation/Distribution
plot(ta.wvad, color=color.yellow)
// the same on pine
f_wvad() =>
(close - open) / (high - low) * volume
plot(f_wvad())
math
math.e
Именная константа урала. Она равна 2.7182818284590452.
тип
const float
См. также
math.phi math.pi math.rphi
math.phi
Именная константа золотого деления ≠ 1.6180339887498948.
тип
const float
См. также
math.e math.pi math.rphi
math.pi
Это именная константа постоянного Ахмеда. Она равна 3.1415926535897932.
тип
const float
См. также
math.e math.phi math.rphi
math.rphi
Номинальная константа Золотого деления. Она равна 0.6180339887498948.
тип
const float
См. также
math.e math.pi math.phi
strategy
strategy.equity
Нынешние права и интересы: ((strategy.initial_capital + strategy.netprofit + strategy.openprofit))
тип
series float
См. также
strategy.netprofit strategy.openprofit strategy.position_size
strategy.position_size
Направление и масштаб текущей рыночной позиции. Если значение > 0, то рыночная позиция длинная. Если значение < 0, то рыночная позиция короткая. Абсолютное значение - количество контрактов / акций / рук / единиц в сделке (размер позиции).
тип
series float
См. также
strategy.position_avg_price
strategy.position_avg_price
Если рыночная позиция будет гладкой, то NaN-диоксид будет возвращен назад.
проиллюстрировать
Средняя цена в FMZ PINE Script - это цена, включающая в себя комиссионные. Например: цена заказа - 8000, продажи направления, количество - 1 рука ((один, лист), средняя цена после сделки - не 8000, меньше 8000 ((включает в себя комиссионные).
тип
series float
См. также
strategy.position_size
strategy.long
Много направлений.
тип
strategy_direction
См. также
strategy.entry strategy.exit
strategy.short
Пустое направление.
тип
strategy_direction
См. также
strategy.entry strategy.exit
strategy.closedtrades
Количество закрытых сделок за весь промежуток.
тип
series int
См. также
strategy.position_size strategy.opentrades
strategy.opentrades
Количество сделок, которые не были закрыты или продолжаются. Если нет, то показывается 0.
тип
series int
См. также
strategy.position_size
strategy.netprofit
Общая денежная стоимость всех завершенных сделок.
тип
series float
См. также
strategy.openprofit strategy.position_size strategy.grossprofit
strategy.grossprofit
Общая денежная стоимость всех выигрышных сделок, завершенных.
тип
series float
См. также
strategy.netprofit
strategy.openprofit
Нереализованные убытки от текущих незакрытых позиций.
тип
series float
См. также
strategy.netprofit strategy.position_size
strategy.direction.long
Стратегии, которые могут сделать больше
тип
const string
См. также
strategy.risk.allow_entry_in
strategy.direction.short
Стратегии, которые не работают
тип
const string
См. также
strategy.risk.allow_entry_in
strategy.direction.all
Стратегии, которые позволяют делать больше и делать меньше
тип
const string
См. также
strategy.risk.allow_entry_in
dayofweek
dayofweek
Текущая k-линейная неделя в обменном часовом поясе.
тип
series int
Примечание
Обратите внимание, что эта переменная возвращает день в зависимости от времени открытия K-линии. Для ночных торговых часов (например, EURUSD, чьи торговые часы в понедельник начинаются в воскресенье в 17:00) значение может быть ниже, чем в день торговли.
Для сравнения можно использовать переменные dayofweek.sunday, dayofweek.monday, dayofweek.tuesday, dayofweek.wednesday, dayofweek.thursday, dayofweek.friday и dayofweek.saturday.
См. также
time dayofmonth
dayofweek.sunday
является именной константой значения возвращаемой функции dayofweek и значения переменной dayofweek.
тип
const int
См. также
dayofweek.monday dayofweek.tuesday dayofweek.wednesday dayofweek.thursday dayofweek.friday dayofweek.saturday
dayofweek.monday
является именной константой значения возвращаемой функции dayofweek и значения переменной dayofweek.
тип
const int
См. также
dayofweek.sunday dayofweek.tuesday dayofweek.wednesday dayofweek.thursday dayofweek.friday dayofweek.saturday
dayofweek.tuesday
является именной константой значения возвращаемой функции dayofweek и значения переменной dayofweek.
тип
const int
См. также
dayofweek.sunday dayofweek.monday dayofweek.wednesday dayofweek.thursday dayofweek.friday dayofweek.saturday
dayofweek.wednesday
является именной константой значения возвращаемой функции dayofweek и значения переменной dayofweek.
тип
const int
См. также
dayofweek.sunday dayofweek.monday dayofweek.tuesday dayofweek.thursday dayofweek.friday dayofweek.saturday
dayofweek.thursday
является именной константой значения возвращаемой функции dayofweek и значения переменной dayofweek.
тип
const int
См. также
dayofweek.sunday dayofweek.monday dayofweek.tuesday dayofweek.wednesday dayofweek.friday dayofweek.saturday
dayofweek.friday
является именной константой значения возвращаемой функции dayofweek и значения переменной dayofweek.
тип
const int
См. также
dayofweek.sunday dayofweek.monday dayofweek.tuesday dayofweek.wednesday dayofweek.thursday dayofweek.saturday
dayofweek.saturday
является именной константой значения возвращаемой функции dayofweek и значения переменной dayofweek.
тип
const int
См. также
dayofweek.sunday dayofweek.monday dayofweek.tuesday dayofweek.wednesday dayofweek.thursday dayofweek.friday
hline
hline.style_dashed
является именной константой в виде точечной линии функции Hline.
тип
hline_style
См. также
hline.style_solid hline.style_dotted
hline.style_dotted
hline.style_dotted
является именной константой точечной линейной формы функции Hline.
тип
hline_style
См. также
hline.style_solid hline.style_dashed
hline.style_solid
Именная константа, которая является линейным типом истинного центра функции Hline.
тип
hline_style
См. также
hline.style_dotted hline.style_dashed
barmerge
barmerge.gaps_on
Дать запрошенную стратегию объединения данных. Объединить данные с возможными разрывами.
тип
barmerge_gaps
См. также
request.security barmerge.gaps_off
barmerge.gaps_off
Стратегия запрошенных данных для объединения. Данные объединяются непрерывно, все пробелы заполняются с помощью предыдущих недавних существующих значений.
тип
barmerge_gaps
См. также
request.security barmerge.gaps_on
barmerge.lookahead_on
Стратегия запрошенного местоположения данных. Запрошенный бархат объединяется с текущим бархаром в соответствии с временем открытия k-линии. Такая стратегия объединения может привести к неблагоприятному влиянию на историю вычисления данных, полученных из будущих линий. Это не принимается в стратегии обратного тестирования, но может использоваться в показателях.
тип
barmerge_lookahead
См. также
request.security barmerge.lookahead_off
barmerge.lookahead_off
Политика запрошенного местоположения данных. Запрошенный бархат объединяется с текущим бархатом в соответствии с временем закрытия k-линии. Такая политика объединения запрещает влияние истории вычислений на получение данных из будущих линий.
тип
barmerge_lookahead
См. также
request.security barmerge.lookahead_on
others
hl2
Это [наивысшая цена + наименьшая цена]/2.
тип
series float
См. также
open high low close volume time hlc3 hlcc4 ohlc4
hlc3
Это [высочайшая цена + низкая цена + конечная цена]/3
тип
series float
См. также
open high low close volume time hl2 hlcc4 ohlc4
hlcc4
Это [высокий + низкий + конец + конец]/4.
тип
series float
См. также
open high low close volume time hl2 hlc3 ohlc4
ohlc4
Это кнопка кнопки: ((открытая цена + наивысшая цена + наименьшая цена + закрытая цена) / 4
тип
series float
См. также
open high low close volume time hl2 hlc3 hlcc4
na
Double.NaN (нецифровое) ≠
тип
simple na
Пример
pine
// na
plot(bar_index < 10 ? na : close) // CORRECT
plot(close == na ? close[1] : close) // INCORRECT!
plot(na(close) ? close[1] : close) // CORRECT
Примечание
Если вы хотите проверить, является ли какое-либо значение NaN, используйте встроенную функцию na。
См. также
na
bar_index
Нынешний индекс ценовой палки. Числа начинаются с нуля, первая строка индексируется как 0
тип
series int
Пример
pine
// bar_index
plot(bar_index)
plot(bar_index > 5000 ? close : 0)
Примечание
Обратите внимание, что bar_index заменил n в версии 4 [2].
Имейте в виду, что индекс K считается 0。 начиная с первой исторической линии K.
Пожалуйста, обратите внимание, что использование данной переменной/функции может привести к перекрашиванию индикатора.
См. также
barstate.isfirst barstate.islast barstate.isrealtime
last_bar_index
Индекс последней K-линии диаграмма. Индекс K начинается с нуля на первой K-линии.
тип
series int
Пример
strategy("Mark Last X Bars For Backtesting", overlay = true, calc_on_every_tick = true)
lastBarsFilterInput = input.int(100, "Bars Count:")
// Here, we store the 'last_bar_index' value that is known from the beginning of the script's calculation.
// The 'last_bar_index' will change when new real-time bars appear, so we declare 'lastbar' with the 'var' keyword.
var lastbar = last_bar_index
// Check if the current bar_index is 'lastBarsFilterInput' removed from the last bar on the chart, or the chart is traded in real-time.
allowedToTrade = (lastbar - bar_index <= lastBarsFilterInput) or barstate.isrealtime
bgcolor(allowedToTrade ? color.new(color.green, 80) : na)
Возвращение
Конечный исторический K-индекс закрытия или реальный K-индекс открытия.
Примечание
Пожалуйста, обратите внимание, что использование этой переменной может привести к перекрашиванию показателя.
См. также
bar_index last_bar_time barstate.ishistory barstate.isrealtime
time
Текущее k-линейное время в формате UNIX. Это количество миллисекунд с 00:00:00 UTC 1 января 1970 года.
timenow
Текущее время в формате UNIX. Это миллисекунды с 00:00:00 UTC 1 января 1970 года.
тип
series int
Примечание
Пожалуйста, обратите внимание, что использование данной переменной/функции может привести к перекрашиванию индикатора.
См. также
timestamp time dayofmonth dayofweek
тип
series int
Примечание
Обратите внимание, что эта переменная будет возвращать время в зависимости от времени открытия K-линии. Таким образом, для ночных торговых периодов (например, EURUSD, чья понедельник начинается с 17:00 по воскресеньям), эта переменная может возвращать время до назначенной даты торгового дня. Например, на EURUSD, диагональ dayofmonth (время) может быть меньше, чем дата торгового дня 1, потому что K-линия на текущую дату фактически открыта в предыдущий день.
См. также
time dayofmonth dayofweek
year
Обменная часовая зона текущего года k линия.
тип
series int
Примечание
Обратите внимание, что эта переменная возвращает год в зависимости от времени открытия K-линии. Для ночных торговых часов (например, EURUSD, чьи торговые часы в понедельник начинаются в воскресенье в 17:00) значение может быть ниже, чем год в торговый день.
См. также
year time month weekofyear dayofmonth dayofweek hour minute second
month
Текущая лунная линия k в часовом поясе биржи.
тип
series int
Примечание
Обратите внимание, что эта переменная возвращает месяц в зависимости от времени открытия K-линии. Для ночных торговых часов (например, EURUSD, чьи торговые часы в понедельник начинаются в воскресенье в 17:00) значение может быть ниже, чем в месяц, в день торговли.
См. также
month time year weekofyear dayofmonth dayofweek hour minute second
hour
Текущий час в часовом поясе биржи k-линия.
тип
series int
См. также
hour time year month weekofyear dayofmonth dayofweek minute second
minute
Текущие минуты в часовом поясе биржи kline.
тип
series int
См. также
minute time year month weekofyear dayofmonth dayofweek hour second
second
Текущая секундная линия k в часовом поясе биржи.
тип
series int
См. также
second time year month weekofyear dayofmonth dayofweek hour minute
open
Нынешняя цена.
тип
series float
Примечание
Можно использовать оператор квадратных скобок.[] для просмотра предыдущих значений, например <unk> open[1],open[2]。
См. также
high low close volume time hl2 hlc3 hlcc4 ohlc4
high
Самые высокие цены на данный момент
тип
series float
Примечание
Можно использовать оператор квадратных скобок.[] для просмотра предыдущих значений, например: high[1],high[2]。
См. также
open low close volume time hl2 hlc3 hlcc4 ohlc4
low
Низкая цена.
тип
series float
Примечание
Можно использовать оператор квадратных скобок.[] для просмотра предыдущих значений, например <unk> low[1],low[2]。
См. также
open high close volume time hl2 hlc3 hlcc4 ohlc4
close
Цена закрытия текущей K-линии или цена последней сделки на K-линии в реальном времени, которая еще не завершена.
тип
series float
Примечание
Можно использовать оператор квадратных скобок.[] для доступа к предыдущим значениям, например <unk> close[1],close[2]。
См. также
open high low volume time hl2 hlc3 hlcc4 ohlc4
volume
Текущая пропускная способность K-линии.
тип
series float
Примечание
Можно использовать оператор квадратных скобок.[] для просмотра предыдущих значений, например ◦ volume[1],volume[2]。
См. также
open high low close time hl2 hlc3 hlcc4 ohlc4
weekofyear
Число недель в текущей k-линейной части часового пояса.
тип
series int
Примечание
Обратите внимание, что эта переменная возвращает неделю в зависимости от времени открытия K-линии. Для ночных торговых часов (например, EURUSD, чьи торговые часы в понедельник начинаются с 17:00 в воскресенье), значение может быть ниже, чем неделя в торговый день.
См. также
weekofyear time year month dayofmonth dayofweek hour minute second
dayofmonth
Дата текущего времени k-линии в часовом поясе.
тип
series int
Примечание
Обратите внимание, что эта переменная возвращает день в зависимости от времени открытия K-линии. Для ночных торговых часов (например, EURUSD, чьи торговые часы в понедельник начинаются в воскресенье в 17:00) значение может быть ниже, чем в день торговли.
- 1





