Изменить значения поля
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")
Значение поля объекта может быть изменено с помощью:=
оператора переназначения.
Коллекция объектов
Пример объявляет пустой массив, который будет содержать объекты типа порядка, определенного пользователем:
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")
или
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")
Копировать объект
Когда существующий объект присваивается новой переменной, оба относятся к одному и тому же объекту.
//@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 одного и того же объекта.
Для создания копии, которая является независимой от исходного объекта, в этом случае мы можем использовать встроенный метод копии ((). В этом примере мы объявляем переменную pivot2 для ссылки на скопированный экземпляр объекта pivot1. Теперь, изменение pivot2.x не изменит pivot1.x, потому что он относится к поле x отдельного объекта:
//@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
Глубокая копия
//@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" // Modify the base type field of labelInfo1 to see if it affects labelInfo2
labelInfo1.order.price := 999 // Modify the composite type field of labelInfo1 to see if it affects labelInfo2
runtime.log(labelInfo1)
runtime.log(labelInfo2)
runtime.error("stop")
Результаты теста показывают, что labelInfo.copy ((labelInfo1) является глубокой копией при исполнении, и изменение любого поля labelInfo1 не повлияет на labelInfo2.
Методы в языке 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)
Можно переписать эквивалентно как:
//@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
currently.
Методы, определенные пользователем
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)
Измененный на:
//@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)
Вы можете видеть, что первый параметр в параметровом списке пользовательских методов, объявленных с ключевым словом метод: maintainQueue и calcBB является типаarray<float>
, что означает, что метод является методом переменной типаarray<float>
, так что вы можете видеть, что следующий код называется для расчета индикатора Боллинджера.
[sampleMean, highBand, lowBand] = sourceArray.maintainQueue(sourceInput, newSample).calcBB(multiplier, newSample)
Методы перегрузки
Используемые методы могут заменять и перегружать существующие встроенные методы и пользовательские методы с одним и тем же идентификатором. Эта функция позволяет пользователям определять несколько рутин, связанных с различными подписями аргументов под одним и тем же именем метода. В качестве простого примера предположим, что мы хотим определить метод для идентификации типа переменной. Поскольку мы должны четко указать тип объекта, связанного с пользовательским методом, мы должны определить перегрузки для каждого типа, который мы хотим, чтобы он узнал. Далее мы определяем метод getType ((), который возвращает строку представления типа переменной
//@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, числовой тип будет рассматриваться как данные с плавающей запятой (float).
При вызове функции можно передавать аргументы. Можно присваивать имена аргументов для присвоения значений. Можно напрямую передавать переменные в соответствующих позициях аргументов. Также поддерживается смешанное использование. Например:
plot(close, title="test plot") // Pass the argument close directly; specify the argument title and assign the string "test plot"
После указания назначения имени аргумента вы больше не можете напрямую передавать переменную в качестве аргумента, и последующие аргументы должны быть написаны в форме назначения имени аргумента.
// plot(close, title="test", color.red) // Although the third argument of plot is the color value, but this will report an error
plot(close, title="test", color=color.red) // Correct writing
plot(close, "test", color.red) // Correct writing
Преобразовать прошедший период времени вtimeframe
аргумент в секунды.
timeframe.in_seconds(timeframe)
Пример
// 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
.
Аргументы
timeframe
(простая строка) Временные рамки. необязательно. по умолчанию timeframe.period.ПримечанияДляtimeframe
Функция >=
См. также
input.timeframe
timeframe.period
Создает идентификатор тикера для запроса выравниваемого среднего значения представления int.
ticker.heikinashi(symbol)
Пример
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
(простая строка) идентификатор кода продукта.См. также
syminfo.tickerid
syminfo.ticker
request.security
Запросить внешние данные.
request.data(url, attribute)
Пример
/*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, "perpetual-spot difference")
plot(futuresPrice, "futures prices", overlay=true)
plot(spotPrice, "spot prices", 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)
Возвратная стоимостьАргумент атрибута определяет серию данных.
Аргументы
url
(простая строка) URL запрошенного источника данных и формат ответа источника данных должны соответствовать требованиям (включая, по крайней мере, атрибуты времени и данных):{"data": [], "schema": ["time", "data"]}
. Вы можете обратиться к формату данных в примере:
{
"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
(простая строка) указывает имя атрибута и возвращает требуемые данные."$.spot_close_price"
, использовать$.
как префикс, а название атрибута соответствует атрибуту в поле данных в данных в ответе при запросе источника данных
Если будет показана ошибка, вам нужно проверить, требуется ли промежуток времениrequest.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(symbol, timeframe, expression, gaps, lookahead, ignore_invalid_symbol, currency)
Пример
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
Символ.timeframe
(простая строка) Временный период. Пустая строка интерпретируется как текущее разрешение графика.expression
(series int/float/bool/color) Выражение может быть рассчитано и возвращено с вызова request.security. Это может быть ряд или тупл, содержащий элементы, которые могут быть переданы в серии.gaps
(barmerge_gaps) Стратегия слияния запрошенных данных (запрошенные данные автоматически сливаются с данными основного ряда OHLC). Возможные значения: barmerge.gaps_on, barmerge.gaps_off. barmerge.gaps_on - запрашиваемые данные сливаются с возможными пробелами (нет значений). barmerge.gaps_off - запрашиваемые данные сливаются непрерывно без пробелов, все пробелы заполняются предыдущими ближайшими существующими значениями. Значение по умолчанию barmerge.gaps_off.lookahead
(barmerge_lookahead) Стратегия слияния для запрошенного положения данных. Возможные значения: barmerge.lookahead_on, barmerge.lookahead_off. Значение по умолчанию barmerge.lookahead_off начиная с версии 3. Обратите внимание, что поведение одинаково в режиме реального времени и отличается только в истории.ignore_invalid_symbol
(const bool) Опциональный аргумент. Определяет поведение функции, если указанный символ не найден: если false, скрипт остановится и вернет ошибку во время выполнения; если true, функция вернет na и исполнение продолжится. Значение по умолчанию false.currency
(простая строка) Валюта, в которую должны быть конвертированы валютные значения символа (например, OHLC).expression
затем рассчитывается на основе конвертированных значений. Используемые курсы конвертации основаны на суточных курсах пары FX_IDCПримечанияКод PineScript, использующий эту функцию, может рассчитывать по-разному на историю и данные реального времени.
Если вы хотите указать дополнительные аргументы для запрошенного символа, например, сеанс или тип настройки, вы можете использоватьticker.new() функция.
Невозможно передать распределение этой функции с помощью переменной
Допустимыми значениями аргумента разрешения являются: 1S, 5S, 15S, 30S - для интервалов в секунду (разрешение графика должно быть меньше или равным требуемому разрешению) от 1 до 1440 минут от 1D до 365D в течение дней от 1 до 52 Вт в течение нескольких недель от 1M до 12M в течение месяцев
См. также
syminfo.ticker
syminfo.tickerid
timeframe.period
ta.correlation
barmerge.lookahead_off
barmerge.lookahead_on
Возвращается истинным, еслиsource
строка содержитstr
подстрока, в противном случае ложная.
str.contains(source, str)
Пример
// 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)
ВозвращениеПравда, еслиstr
был найден вsource
Строка, ложная в противном случае.
Аргументы
source
(серийный ряд) Источник строки.str
(Серьезная строка) Подстрока для поиска.См. также
str.pos
str.match
Возвращается истинным, еслиsource
строка заканчивается подстрокой, указанной вstr
В противном случае, ложь.
str.endswith(source, str)
ВозвращениеПравда, еслиsource
строка заканчивается подстрокой, указанной вstr
В противном случае, ложь.
Аргументы
source
(серийный ряд) Источник строки.str
(Серьезная строка) Подстрока для поиска.См. также
str.startswith
Возвращается истинным, еслиsource
строка начинается с подстроки, указанной вstr
В противном случае, ложь.
str.startswith(source, str)
ВозвращениеПравда, еслиsource
строка начинается с подстроки, указанной вstr
В противном случае, ложь.
Аргументы
source
(серийный ряд) Источник строки.str
(Серьезная строка) Подстрока для поиска.См. также
str.endswith
Возвращает новую строку, которая является подстрокойsource
Подстрока начинается с символа в индексе, указанномbegin_pos
и распространяется до source
string.
str.substring(source, begin_pos)
str.substring(source, begin_pos, end_pos)
Пример
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
(серия строки) Источниковая строка, из которой извлечь подстроку.begin_pos
(series int) Начальное положение извлеченной подстроки.end_pos
(series int) Конечная позиция. Она исключительна (экстрагируемая строка НЕ включает в себя этот знак позицииsource
string.ПримечанияИндексация строк начинается с 0. Еслиbegin_pos
равнаend_pos
, функция возвращает пустую строку.
См. также
str.contains
str.pos
str.match
str.tonumber(string)
ВозвращениеПлавающая версия строки, если она содержит действительный номер, а если нет.
Аргументы
string
(серия строки) Струнное представление int или float.Преобразует строку форматирования и value (s) в форматированную строку. Строка форматирования может содержать буквальный текст и один запятой в запятой {} для каждого значения, которое должно быть отформатировано. Каждый запятой состоит из индекса требуемого аргумента (начиная с 0), который заменит его, и дополнительного спецификатора формата. Индекс представляет положение этого аргумента в списке аргументов str.format.
str.format(formatString, arg0, arg1, ...)
Пример
// 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
(Серьезная строка) Формат строки.arg0, arg1, ...
(серия int/float/bool/string/na/int[]/float[]/bool[]/string[]) Значения для форматирования.ПримечанияНапример,
Возвращает целое число, соответствующее количеству символов в этой строке.
str.length(string)
ВозвращениеКоличество символов в исходной строке.
Аргументы
string
(серийный ряд) Источник строки.Возвращает новую строку со всеми буквами, преобразованными в малые буквы.
str.lower(source)
ВозвращениеНовая строка со всеми буквами, преобразованными в малые буквы.
Аргументы
source
(Серьезная строка) Строка для преобразования.См. также
str.upper
Возвращает новую строку со всеми буквами, преобразованными в заглавные буквы.
str.upper(source)
ВозвращениеНовая строка со всеми буквами, преобразованными в большие буквы.
Аргументы
source
(Серьезная строка) Строка для преобразования.См. также
str.lower
Возвращает новую подстрокуsource
строка, если она совпадает сregex
регулярное выражение,
str.match(source, regex)
Пример
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
регулярное выражение,
Аргументы
source
(серийный ряд) Источник строки.regex
(Серьезная строка) Регулярное выражение, к которому эта строка должна соответствовать.ПримечанияФункция возвращает первый случай регулярного выражения вsource
Струна.
Символ regex
string необходимо избежать с дополнительной обратной строкой, например,
См. также
str.contains
str.substring
Возвращает положение первого появленияstr
Строка вsource
Стрелка,
str.pos(source, str)
ВозвращениеПоложениеstr
Строка вsource
string.
Аргументы
source
(серийный ряд) Источник строки.str
(Серьезная строка) Подстрока для поиска.ПримечанияИндексация струн начинается с 0.
См. также
str.contains
str.match
str.substring
Возвращает новую строку с N + 1 явлениемtarget
строка и предыдущее появлениеtarget
строка замененаreplacement
строка, где N указано вoccurrence
. N - это индекс соответствия целевой строки, которую следует заменить в исходной строке.
str.replace(source, target, replacement, occurrence)
Пример
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 "EXCHANGE1:SYMBOL1 / EXCHANGE1:SYMBOL2"
runtime.log(newSource)
ВозвращениеОбработанная нить.
Аргументы
source
(серийный ряд) Источник строки.target
(серийная строка) Строка должна быть заменена.replacement
(серия строки) строка, которая должна быть вставлена вместо целевой строки.occurrence
(series int) Индекс соответствия появления целевой строки, которая должна быть заменена в исходной строке Индексирование начинается с 0 для первого соответствия.См. также
str.replace_all
str.match
Заменяет каждое появление целевой строки в исходной строке с заменой строки.
str.replace_all(source, target, replacement)
ВозвращениеОбработанная нить.
Аргументы
source
(серийный ряд) Источник строки.target
(серийная строка) Строка должна быть заменена.replacement
(серия строки) Строка, подменяемая для каждого появления целевой строки.Разделяет строку на массив подструн и возвращает идентификатор массива.
str.split(string, separator)
ВозвращениеИдентификатор массива струн.
Аргументы
string
(серийный ряд) Источник строки.separator
(Серьезная строка) Строка, отделяющая каждую подстроку.str.tostring(value)
str.tostring(value, format)
str.tostring(value[])
str.tostring(value[], format)
ВозвращениеСтрунное представлениеvalue
Спор.
Еслиvalue
аргумент - это строка, он возвращается таким, какой он есть.
Когдаvalue
является na, функция возвращает строку
Аргументы
value
(series int/float/bool/string/int[]/float[]/bool[]/string[]) Значение или идентификатор массива, элементы которого конвертируются в строку.format
(серия строки) Формат строки. Принимает эти формат.* константы: format.mintick, format.percent, format.volume. Необязательно. Значение по умолчанию ПримечанияФорматирование значений плавающих также округляет эти значения при необходимости, например, str.tostring ((3.99,
Цвет функции применяет указанную прозрачность к заданному цвету.
color.new(color, transp)
Пример
plot(close, color=color.new(color.red, 50))
ВозвращениеЦвет с определенной прозрачностью.
Аргументы
color
(цвет серии)transp
(series int/float) Возможные значения от 0 (не прозрачные) до 100 (невидимые).ПримечанияИспользование аргументов, которые не являются константами (например,
Создает новый цвет с прозрачностью с использованием цветовой модели RGB.
color.rgb(red, green, blue, transp)
Пример
plot(close, color=color.rgb(255, 0, 0, 50))
ВозвращениеЦвет с определенной прозрачностью.
Аргументы
red
(series int/float) компонент красного цвета. Возможные значения от 0 до 255.green
(series int/float) Компонент зеленого цвета. Возможные значения от 0 до 255.blue
(серия int/float) Синий цвет компонента. Возможные значения от 0 до 255.transp
(series int/float) Необязательно. Прозрачность цвета. Возможные значения от 0 (непрозрачные) до 100 (невидимые).ПримечанияИспользование аргументов, которые не являются константами (например,
Напечатайте информацию о переменных на консоли.
языковые функции FMZ PINE,runtime.debug(value)
, только с аргументом.
Выходное содержание в журнале.
языковые функции FMZ PINE,runtime.log(1, 2, 3, close, high, ...)
, вы можете передать несколько аргументов.
При вызове, вызывает ошибку запуска с сообщением об ошибке, указанным вmessage
argument.
runtime.error(message)
Аргументысообщение (серийная строка) сообщение об ошибке.
Добавляет вкладку вкладки в настройках сценария, которая позволяет предоставлять пользователям сценария параметры конфигурации. Эта функция автоматически обнаруживает тип аргумента, используемого для
input(defval, title, tooltip, inline, group)
input(defval, title, inline, group, tooltip)
Пример
i_switch = input(true, "On/Off") // Set true, the default is checked.
plot(i_switch ? open : na)
i_len = input(7, "Length")
i_src = input(close, "Source") // Drop-down box, select close by default.
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-in) Определяет значение по умолчанию входной переменной, предложенной в вкладке 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
Добавляет вход в вкладку "Ввод" в настройках сценария, что позволяет предоставить пользователям сценария параметры конфигурации. Эта функция добавляет выпадающую панель, которая позволяет пользователю выбрать источник для расчета, например, close, hl2, и т. д. Если сценарий включает только один вызов input.source(), пользователь также может выбрать выход из другого индикатора на своем графике в качестве источника.
input.source(defval, title, tooltip, inline, group)
Пример
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(defval, title, options, tooltip, inline, group, confirm)
Пример
i_text = input.string("Hello!", "Message")
runtime.log(i_text)
ВозвращениеЗначение входной переменной.
Аргументы
defval
(const string) Определяет значение по умолчанию переменной ввода, предложенной в вкладке options
Аргумент, значение должно быть одним из них.title
(const string) Название ввода. Если не указано, название переменной используется в качестве названия ввода. Если название указано, но оно пустое, название будет пустой строкой.options
(Список констант: [<тип>...]) Список вариантов на выбор.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(defval, title, tooltip, inline, group, confirm)
Пример
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(defval, title, minval, maxval, step, tooltip, inline, group, confirm)
input.int(defval, title, options, tooltip, inline, group, confirm)
Пример
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) значение шага, используемое для увеличения/уменьшения ввода. необязательно. по умолчанию 1.options
(двойник значений const int: [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(defval, title, minval, maxval, step, tooltip, inline, group, confirm)
input.float(defval, title, options, tooltip, inline, group, confirm)
Пример
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) значение шага, используемое для увеличения/уменьшения входа. необязательно. по умолчанию 1.options
(двойник const int/float значений: [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(defval, title, tooltip, inline, group, confirm)
Пример
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
Добавляет вкладку цены в вкладку confirm = true
активирует интерактивный режим ввода, когда цена выбирается, нажав на график.
input.price(defval, title, tooltip, inline, group, confirm)
Пример
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
argument.
См. также
input.bool
input.int
input.float
input.string
input.resolution
input.source
input.color
input
Добавляет вкладку в вкладку "Ввод" в настройках сценария, которая позволяет предоставлять пользователям сценария параметры конфигурации. Эта функция добавляет выпадающую панель, которая позволяет пользователю выбирать определенный временной промежуток через выборщик временных рамок и возвращает его в виде строки. Выборщик включает в себя пользовательские временные рамки, которые пользователь мог добавить с помощью выпадающего диаграммы "Время".
input.timeframe(defval, title, options, tooltip, inline, group, confirm)
Пример
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
(взрыв)ПросящиеПочему стратегия Square Duplication не может быть реализована?
Изобретатели количественного измерения - мечтыХорошо, давайте проверим.
ПросящиеОптимизированный тренд-трекер
Изобретатели количественного измерения - мечтыЗдравствуйте, пожалуйста, какая именно стратегия?