Возвращается значениеСреднее число элементов массива.
Параметры
id
(int[]/float[]) массивные объекты.До встречи
array.avg
array.variance
array.min
Функция возвращает модель элемента массива. Если есть несколько значений с одинаковой частотой, она возвращает минимальное значение.
array.mode(id)
Примеры
// 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(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(id, percentage)
Параметры
id
(int[]/float[]) массивные объекты.percentage
(series int/float) должна быть равна или меньше процента от значения возвращенного значения.ПримечанияВ статистике процент - это процент, который появляется в рейтинговых пунктах, которые находятся ниже или ниже определенного балла. Этот показатель показывает процентную долю в стандартном частотном распределении, которое ниже процентного рейтинга, который вы измеряете.
До встречи
array.new_float
array.insert
array.slice
array.reverse
order.ascending
order.descending
Возвращается процентный рейтинг среднего значения массива.
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(id)
Примеры
// 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(id, index)
Примеры
// 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(id)
Примеры
// 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
Функция использует параметры одного из следующих типов: int, float, boole, string, line, color, linefill, и возвращает массив соответствующего типа.
array.from(arg0, arg1, ...)
Примеры
// 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) Параметры множества.Функция создает новую<type>
Объект элементарной матрицы.
array.new(size, initial_value)
Примеры
// array.new<string> example
a = array.new<string>(1, "Hello, World!")
runtime.log(array.get(a, 0))
Примеры
// 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))
Примеры
// 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")
Примеры
// 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) начальный размер последовательности↑ опциональный↑ по умолчанию 0↑initial_value
(series ПримечанияИндекс матрицы начинается с нуля. Если вы хотите инициализировать массив и одновременно указать все его элементы, используйте функцию array.from.
До встречи
array.from
array.push
array.get
array.size
array.remove
array.shift
array.sum
Функция создает новый объект массива, состоящий из элементов типа bool.
array.new_bool(size, initial_value)
Примеры
// array.new_bool example
length = 5
a = array.new_bool(length, close > open)
plot(array.get(a, 0) ? close : open)
Возвращается значениеФункция ID ======================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
Параметры
size
(series int) начальный размер последовательности↑ опциональный↑ по умолчанию 0↑initial_value
(series bool) Начальное значение всех элементов серии↑ опциональное↑ по умолчанию ПримечанияИндекс матрицы начинается с нуля.
До встречи
array.new_float
array.get
array.slice
array.sort
Функция создает новый объект массива плавающих элементов.
array.new_float(size, initial_value)
Примеры
// array.new_float example
length = 5
a = array.new_float(length, close)
plot(array.sum(a) / length)
Возвращается значениеФункция ID ======================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
Параметры
size
(series int) начальный размер последовательности↑ опциональный↑ по умолчанию 0↑initial_value
(series int/float) Начальное значение всех элементов серии.ПримечанияИндекс матрицы начинается с нуля.
До встречи
array.new_bool
array.get
array.slice
array.sort
Функция создает новый объект массива, состоящий из элементов типа int.
array.new_int(size, initial_value)
Примеры
// array.new_int example
length = 5
a = array.new_int(length, int(close))
plot(array.sum(a) / length)
Возвращается значениеФункция ID ======================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
Параметры
size
(series int) начальный размер последовательности↑ опциональный↑ по умолчанию 0↑initial_value
(series int) Начальное значение всех элементов серии↑ опциональное↑ по умолчанию ПримечанияИндекс матрицы начинается с нуля.
До встречи
array.new_float
array.get
array.slice
array.sort
Функция создает новый объект массива с элементом типа строки.
array.new_string(size, initial_value)
Примеры
// array.new_string example
length = 5
a = array.new_string(length, "text")
runtime.log(array.get(a, 0))
Возвращается значениеФункция ID ======================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================================
Параметры
size
(series int) начальный размер последовательности↑ опциональный↑ по умолчанию 0↑initial_value
(series string) Начальное значение для всех элементов серии↑ опциональное↑ по умолчанию ПримечанияИндекс матрицы начинается с нуля.
До встречи
array.new_float
array.get
array.slice
Функция возвращает значение элемента в указанном индексе.
array.get(id, index)
Примеры
// 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(id, value)
Примеры
// 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(id, index, value)
Примеры
// 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(id)
Примеры
// 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(id)
Примеры
// 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
Функция возвращает значение в индекс, в котором оно впервые появилось. Если значение не найдено, возвращается −1.
array.indexof(id, value)
Примеры
// 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.exit
Функцииprofit
、loss
Параметры с точками означают остановку, остановку, параметрыprofit
Установка на 10, то есть один скачок в цене умножен на 10 в качестве разницы в цене, который является встроенной переменной.syminfo.mintick
。
Функция устанавливает несколько свойств политики.
Обратите внимание, это только поддержка.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)
Примеры
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 - он будет добавлен в отдельное окно графика.format
precision
scale
pyramiding
(const int) Максимально допустимое количество в одном направлении. Если это значение 0, то можно открыть только один входный заказ в одном направлении, и любые другие входные заказы будут отвергнуты.calc_on_order_fills
calc_on_every_tick
max_bars_back
backtest_fill_limits_assumption
default_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, когда их параметры currency
slippage
commission_type
commission_value
process_orders_on_close
close_entries_rule
max_lines_count
max_labels_count
max_boxes_count
margin_long
margin_short
explicit_plot_zorder
initial_capital
risk_free_rate
ПримечанияКаждый сценарий стратегии должен иметь призыв к стратегии. Код PineScript, использующий параметр calc_on_every_tick = true, может выполнять различные вычисления на исторические записи и данные в режиме реального времени. При использовании нестандартных типов графиков в качестве основы стратегии, вы должны знать, что результаты будут отличаться. Заказы будут выполняться по ценам в этой таблице (e.g. for Heikin Ashi будет использоваться цена Heikin Ashi (средняя) а не реальная рыночная цена). Поэтому мы настоятельно рекомендуем вам использовать стандартные типы графиков в вашей стратегии.
До встречи
indicator
Это команда для входа на рынок. Если заказ с одинаковым ID уже вывешен, можно изменить заказ. Если заказ с не указанным ID, новый заказ будет отправлен. Для отмены входа следует использовать команду strategy.cancel или strategy.cancel_all. По сравнению с функцией strategy.order, функция strategy.entry под влиянием пирамиды может правильно перевернуть рыночную позицию.
strategy.entry(id, direction, qty, limit, stop, oca_name, oca_type, comment, when, alert_message)
Примеры
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) опциональные параметры↑ количество контрактов/долей/менеджеров/единиц сделок↑ значение по умолчанию − NaN − NaN‖.limit
(series int/float) Выбираемый параметр. Предельная цена заказа. Если указано, тип заказа - "limit" или "stop-limit". Другие типы заказа - "NaN".stop
(series int/float) Выбираемый параметр. Стоп-лимит ордера. Если указано, тип ордера - "stop" или "stop-limit"; другие типы ордеров - "NaN".oca_name
oca_type
comment
(series string) Выбираемые параметры.when
(series bool) опциональный параметр; состояние заказа; если true, то заказ размещен; если false, то ничего не происходит; если previously placed order with the same ID was not revoked; по умолчанию true.alert_message
(series string) опциональный параметр, используемый для замены символа {{strategy.order.alert_message}} в поле {{strategy.order.alert_message}} в диалоговом окне для создания сигналов.Это команда с указанием идентификатора ордера на выход. Если есть несколько входных ордеров с одним и тем же идентификатором, то они выходят одновременно. Если на момент запуска команды не указано идентификатор открытого ордера, команда не действует.
strategy.close(id, when, comment, qty, qty_percent, alert_message)
Примеры
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) Опциональные параметры. Количество контрактов/количества акций/числа участников/единиц, с которыми сделка была прекращена.qty_percent
(series int/float) определяет процентную ставку на баланс ((0-100)). Его приоритет ниже приоритета параметра comment
(series string) Выбираемые параметры.alert_message
(series string) опциональный параметр, используемый для замены символа {{strategy.order.alert_message}} в поле {{strategy.order.alert_message}} в диалоговом окне для создания сигналов.В этом случае, если вы хотите выйти из текущей рыночной позиции, то вы должны сделать это.
strategy.close_all(when, comment, alert_message)
Примеры
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.order.alert_message}} в диалоговом окне для создания сигналов.Это приказ выхода, указывающий вход или весь рыночный статус. Если заказ с одинаковым ИД уже выложен, он может быть изменен. Если входный заказ не выполнен, но возникает выходный заказ, он будет приостановлен до тех пор, пока после его совершения не будет размещен выходный заказ. Чтобы остановить выходный заказ, следует использовать команду strategy.cancel или strategy.cancel_all. Если функция strategy.exit вызвана один раз, выход будет выполнен только один раз. Если выходить несколько раз, выход будет выполнен один раз.应该多次调用命令strategy.exitЕсли вы используете стоп-лосс и следите за стоп-лосом, тип ордера которых - стоп-один, только один из них будет размещен (один будет выполнен первым). Если все следующие параметры: стоп-профит, стоп-лимит, стоп-лосс, стоп-один, стоп-трейл_поинты, стоп-трейл_оффсет - все находятся на уровне NaN, то ордер будет провалиться.
strategy.exit(id, from_entry, qty, qty_percent, profit, limit, loss, stop, trail_price, trail_points, trail_offset, oca_name, comment, when, alert_message)
Примеры
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) Опциональные параметры. Количество контрактов/количества акций/числа участников/единиц, с которыми сделка была прекращена.qty_percent
(series int/float) определяет процентную ставку на баланс ((0-100)). Его приоритет ниже приоритета параметра profit
(series int/float) Выбираемый параметр. Цель прибыли. Если указано, выйти из позиции с ограничительным ордером при достижении указанной суммы прибыли.limit
(series int/float) Выбираемый параметр. Цель прибыли (требуется указать цену). Если указано, выйти из позиции по указанной цене (или лучше). Приоритет параметра наноlimit больше, чем приоритетность параметра наноprofit (если значение не наноNaN нано, то наноlimit нанозаменяет наноprofit нано).loss
(series int/float) Выбираемый параметр ─ стоп-потери ─ Если указано, выйти из позиции на стоп-потери при достижении указанной суммы потерь ─ По умолчанию на NaN stop
(series int/float) Выбираемый параметр. Стоп-лосс (требуется указать цену). Если указано, то выход из позиции будет осуществляться по указанной цене (или хуже). Приоритет параметра стоп-лосса выше приоритета параметра нано-потеря нано-потеря.trail_price
(series int/float) Опциональные параметры.• Следить за уровнем активации стоп-лосса (требуется указать цену).• Если указано, то после достижения указанного уровня цены будет размещен стоп-лосс.• В параметре "Strail_offset" определяется отклонение, используемое для определения первоначальной цены стоп-лосса (с точки): X-точка ниже уровня активации для выхода из многотысячного ряда; X-точка выше уровня активации для выхода из пустого ряда.• По умолчанию значение - NaN-точка.trail_points
(series int/float) Опциональный параметр: ‒ уровень активации стоп-лосса для отслеживания (указанный точками прибыли); ‒ если указано, когда достигается уровень рассчитанной цены (указанная сумма прибыли), то размещается стоп-лосса для отслеживания. ‒ в параметре ‒ отклонение от начальной цены стоп-лосса для отслеживания (указанный точками): ‒ X-точка ниже уровня активации для выхода из полиголы; ‒ X-точка выше уровня активации для выхода из полиголы. ‒ по умолчанию ‒ ‒ NaN-точка.trail_offset
(series int/float) Опциональный параметр.Уровень активации стоп-лосса для отслеживания (отмечается точкой). Уклонение с точки используется для определения начальной цены для отслеживания стоп-лосса: X-точка ниже козырька trail_price или козырька trail_points для выхода из множества точек; X-точка выше козырька trail_price или козырька trail_points для выхода из пустого козыря.oca_name
comment
(series string) Выбираемые параметры.when
(series bool) опциональный параметр; состояние заказа; если true, то заказ размещен; если false, то ничего не происходит; если previously placed order with the same ID was not revoked; по умолчанию true.alert_message
(series string) опциональный параметр, используемый для замены символа {{strategy.order.alert_message}} в поле {{strategy.order.alert_message}} в диалоговом окне для создания сигналов.Это упоминание имени для отмены / отмены всех предварительно вывешенных команд, генерируемых следующими функциями: strategy.order, strategy.entry andstrategy.exit。
strategy.cancel(id, when)
Примеры
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.order,strategy.entry和strategy.exit。
strategy.cancel_all(when)
Примеры
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) Опциональный параметр↑ Условия для отмены всех заказов↑ Если условие верно, то все активные заказы будут отменены↑ По умолчанию значение Это команда следующего заказа. Если заказ с одинаковым 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) опциональные параметры↑ количество контрактов/долей/менеджеров/единиц сделок↑ значение по умолчанию − NaN − NaN‖.limit
(series int/float) Выбираемый параметр. Предельная цена заказа. Если указано, тип заказа - "limit" или "stop-limit". Другие типы заказа - "NaN".stop
(series int/float) Выбираемый параметр. Стоп-лимит ордера. Если указано, тип ордера - "stop" или "stop-limit"; другие типы ордеров - "NaN".oca_name
oca_type
comment
(series string) Выбираемые параметры.when
(series bool) опциональный параметр; состояние заказа; если true, то заказ размещен; если false, то ничего не происходит; если previously placed order with the same ID was not revoked; по умолчанию true.alert_message
(series string) опциональный параметр, используемый для замены символа {{strategy.order.alert_message}} в поле {{strategy.order.alert_message}} в диалоговом окне для создания сигналов.Возвращает bar_index, который не был введен в балансовую торговлю.
strategy.opentrades.entry_bar_index(trade_num)
Ждите 10 K-линий и выровняйте
Примеры
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) Номер сделки, которая не была выведена на баланс. Номер первой сделки - 0.До встречи
strategy.closedtrades.entry_bar_index
strategy.closedtrades.exit_bar_index
Возвращается ID входа в невыплаченную сделку.
strategy.opentrades.entry_id(trade_num)
Примеры
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) Номер сделки, которая не была выведена на баланс. Номер первой сделки - 0.ПримечанияЕсли trade_num не находится в диапазоне, функция возвращает na:0 к strategy.opentrades−1.
До встречи
strategy.opentrades.entry_bar_index
strategy.opentrades.entry_time
Например, в случае, если вы не хотите, чтобы ваши деньги были возвращены, вы можете использовать их в качестве сбережений.
strategy.opentrades.entry_price(trade_num)
Примеры
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")
Расчет средней неравномерной цены
Примеры
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) Номер сделки, которая не была выведена на баланс. Номер первой сделки - 0.До встречи
strategy.closedtrades.exit_price
Возвращается время UNIX, в которое не вводились сделки.
strategy.opentrades.entry_time(trade_num)
Примеры
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) Номер сделки, которая не была выведена на баланс. Номер первой сделки - 0.До встречи
strategy.closedtrades.entry_time
strategy.closedtrades.exit_time
Возвращается прибыль и убытки от неравновешенных сделок.
strategy.opentrades.profit(trade_num)
Возвращение прибыли последней сделки
Примеры
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")
Расчет прибыли от всех неисключенных сделок
Примеры
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) Номер сделки, которая не была выведена на баланс. Номер первой сделки - 0.До встречи
strategy.closedtrades.profit
strategy.openprofit
strategy.netprofit
strategy.grossprofit
Возвращается направление торговли и количество контрактов на небрежной сделке. Если значение > 0, то рыночная позиция является многоголовой. Если значение < 0, то рыночная позиция является пустой головой.
strategy.opentrades.size(trade_num)
Примеры
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")
Расчет процента средней прибыли от неисключенных сделок
Примеры
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) Номер сделки, которая не была выведена на баланс. Номер первой сделки - 0.До встречи
strategy.closedtrades.size
strategy.position_size
strategy.opentrades
strategy.closedtrades
Возвращает bar_index, который был введен в балансовую торговлю.
strategy.closedtrades.entry_bar_index(trade_num)
Примеры
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(trade_num)
Примеры
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")
Вычислить процент средней прибыли по всем сделкам, которые были выведены на баланс
Примеры
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
Возвращается bar_index, который был выведен из балансовой торговли.
strategy.closedtrades.exit_bar_index(trade_num)
Примеры
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 строк на одну транзакцию.
Примеры
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
Возвращает ID входа в сделку.
strategy.closedtrades.entry_id(trade_num)
Примеры
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(trade_num)
Примеры
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")
Вычислить процент средней прибыли по всем сделкам, которые были выведены на баланс
Примеры
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
Возвращение времени UNIX, в которое были введены сделки.
strategy.closedtrades.entry_time(trade_num)
Примеры
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(trade_num)
Примеры
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
Возвращается направление и количество контрактов в сделке, которая уже выведена на баланс. Если это значение > 0, то рыночная позиция является многоголовой. Если это значение < 0, то рыночная позиция является пустой головой.
strategy.closedtrades.size(trade_num)
Примеры
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")
Процент средней прибыли на сделке
Примеры
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.closedtrade
ВуаоянКак можно работать с несколькими сделками одновременно?
Легкие облака.Пожалуйста, расскажите, может pine иметь больше транзакций, не так ли? Или перемещаться по транзакциям, как JS?
Лиза20231Спасибо за подробную документацию.
художественностьОго! Как этот скрипт pine использует на платформе симулятор okex?
художественностьЭто означает, что стратегию tradingview можно скопировать прямо на платформу изобретателя и использовать!
Изобретатели количественного измерения - мечтыЯзык PINE может выполнять только одноразовые стратегии, а многоразовые стратегии лучше всего использовать для написания дизайна в Python, JavaScript, C++.
Изобретатели количественного измерения - мечтыО, да, OKX особенный, их аналогичная среда и реальная среда имеют один и тот же адрес, только в другом месте есть разница.
Легкие облака.Не могу использовать okx анимационный диск.
Изобретатели количественного измерения - мечтыЭта разнообразная архитектура не может быть решена, поскольку на каждой бирже есть разные интерфейсы и разные ограничения на частоту интерфейсов, что создает много проблем.
Изобретатели количественного измерения - мечтыХорошо, спасибо за предложение, сообщите об этом по этому поводу.
Легкие облака.Я считаю, что лучше всего совмещать с JS, чтобы JS лучше адаптировался к различным способам торговли.
Тенденционный охотникЕсли вы хотите, чтобы вы были в курсе, что вы хотите, чтобы вы были в курсе, что вы хотите, чтобы вы были в курсе.
Изобретатели количественного измерения - мечтыНепристойность.
Легкие облака.Хорошо, спасибо, Джимми.
Изобретатели количественного измерения - мечтыЗдравствуйте, но на данный момент стратегия языка PINE работает только с одной разновидностью.
Изобретатели количественного измерения - мечтыСпасибо за вашу поддержку. Документы будут продолжать совершенствоваться.
Изобретатели количественного измерения - мечтыДа, это так.
Изобретатели количественного измерения - мечтыПИНЕ-классовая библиотека шаблонов, параметры которой позволяют установить базовые адреса обменных пунктов.