sa a palavra-chave varip e, portanto, não rola dentro da coluna não confirmada. O objeto counter é declarado com a palavra-chave var, então ele persistirá durante toda a execução do script. Em cada iterativa, os campos de barras e ticks são adicionados 1 ≠. Os campos de barras são revertidos dentro de cada coluna não confirmada, enquanto os campos de ticks não são. Finalmente, pode-se comparar as diferenças entre eles através do mapeamento dos campos counter.bars e counter.ticks. O valor de counter.bars será revertido dentro de cada coluna não confirmada, enquanto o valor de counter.ticks será aumentado continuamente até o fim da execução do script.
Alteração de valores de campo
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")
Disponível:=
O operador de reavaliação altera o valor do campo objeto.
Coleção de objetos
O exemplo declara um array em branco que guarda objetos do tipo order definido pelo usuário:
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")
ou
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")
Objeto de cópia
Em Pine, os objetos são atribuídos por referência. Quando um objeto existente é atribuído a uma nova variável, ambos apontam para o mesmo objeto.
//@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)
No exemplo a seguir, criamos um objeto pivot1 e definimos seu campo x como 1000。 Em seguida, declaramos que um pivot2 contém uma variável que faz referência a esse objeto pivot1 e, portanto, ambos apontam para a mesma instância。 Portanto, alterar o pivot2.x também altera o pivot1.x, pois ambos fazem referência a um campo x do mesmo objeto。
Para criar uma cópia independente do objeto original, neste caso podemos usar o método de copiar embutido (). Neste exemplo, declaramos que o pivot2 faz referência a uma variável da instância de replicação do objeto pivot1. Agora, alterar o pivot2.x não altera o pivot1.x, pois refere-se a um campo de x um objeto separado:
//@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)
Note-se que o método de cópia do TradingView é uma cópia superficial. Se um objeto tiver campos de tipos especiais (array, etc.), esses campos na cópia superficial do objeto apontarão para a mesma instância do objeto. A plataforma FMZ permite a cópia profunda diretamente, sem necessidade de processamento adicional. Veja os exemplos a seguir:
Cópia profunda
//@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")
O resultado do teste, labelInfo.copy ((labelInfo1) é executado como uma cópia profunda, modificando qualquer campo do labelInfo1 não afetará o labelInfo2。
Os métodos da linguagem Pine são funções especializadas associadas a tipos embutidos ou definidos pelo usuário em uma instância específica. Em muitos aspectos, eles são basicamente os mesmos que as funções regulares, mas oferecem uma gramática mais curta e mais conveniente. Os usuários podem acessar os métodos diretamente em variáveis usando símbolos de ponto, assim como acessam os campos de objetos Pine.
Métodos embutidos
Por exemplo, um trecho de um script que diz:
//@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)
O equivalente pode ser reescrito como
//@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)
O PINE está a apoiá-lo.Methods
Depois, o código.array.avg(sourceArray)
O que é que eu tenho a dizer?sourceArray.avg()
。
Atenção: FMZ temporariamente não suportadoarray.avg
A chamada é assim.
Métodos definidos pelo usuário
O Pine permite que o usuário defina métodos personalizados para uso com qualquer tipo de objeto embutido ou definido pelo usuário. Os métodos de definição são essencialmente os mesmos que as funções de definição, mas com duas diferenças importantes:
1, a palavra-chave method deve ser incluída antes do nome da função. 2. Parâmetros de um método, onde o tipo do primeiro parâmetro deve ser declarado explicitamente, pois ele indica o tipo de objeto ao qual o método será associado.
Por exemplo, o código a seguir para calcular o indicador de Bryn é encapsulado como um método personalizado para o usuário:
//@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)
Modificado para:
//@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)
Pode-se ver que os métodos personalizados do usuário que usam a declaração de método da palavra-chave:maintainQueue, o primeiro parâmetro da lista de parâmetros do calcBB éarray<float>
Tipo: Indica que o método éarray<float>
Métodos de variáveis de tipo, para que se possa ver a invocação do seguinte código para calcular o indicador de Bryn.
[sampleMean, highBand, lowBand] = sourceArray.maintainQueue(sourceInput, newSample).calcBB(multiplier, newSample)
Recarregar métodos
Métodos definidos pelo usuário podem ser sobrepostos e sobrecarregados por métodos existentes com o mesmo identificador e métodos definidos pelo usuário. Esta funcionalidade permite que o usuário defina vários procedimentos associados a diferentes assinaturas de parâmetros sob o mesmo nome de método. Como um exemplo simples, suponha que queremos definir um método para identificar o tipo de variável.
//@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")
Determinação do tipo básico de cada variávelgetType()
Que tipo de sobrecarga será usado? Na plataforma FMZ, os tipos de valores são julgados como dados de tipo ponto flutuante (float) devido à implementação de Javascript como linguagem de base do script PINE.
Quando uma função é chamada, pode-se transmitir um parâmetro, pode-se especificar o nome do parâmetro atribuído, pode-se transmitir uma variável diretamente na posição do parâmetro correspondente, também é possível usar o uso de mistura. Por exemplo:
plot(close, title="test plot") // 直接传参数 close ;指定参数 title ,赋值字符串"test plot"
Após a atribuição do nome do parâmetro, não é possível transmitir diretamente a variável como um parâmetro, e os parâmetros subsequentes devem ser escritos na forma de atribuição do nome do parâmetro.
// plot(close, title="test", color.red) // 虽然plot第三个参数是颜色值,但是这样写就会报错
plot(close, title="test", color=color.red) // 正确写法
plot(close, "test", color.red) // 正确写法
Será transmitido atimeframe
Converte o período de tempo do parâmetro para segundos.
timeframe.in_seconds(timeframe)
Exemplo
// 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)
Devolver valores
timeframe
O número de segundos em uma linha K de int representa a forma ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ ≠ .
parâmetro
timeframe
(simple string) Período de tempo。 opcional。 o valor padrão é timeframe.period。Nota:
Para otimeframe
>= A função ‘1M’ calcula o número de segundos baseado em 30.4167 (365⁄12) dias de um mês.
Veja também
input.timeframe
timeframe.period
Criação de um código de identificação de solicitação para suavizar o valor da linha média de K。
ticker.heikinashi(symbol)
Exemplo
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)
Devolver valores O código de ações pode ser fornecido para a função request.security.
parâmetro
symbol
(simple string) Identificador de código de mercadoria。Veja também
syminfo.tickerid
syminfo.ticker
request.security
Pedimos dados externos.
request.data(url, attribute)
Exemplo
/*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)
Devolver valores
parâmetroattribute
Uma série de dados definida.
parâmetro
url
(simple string) O url da fonte de dados solicitada e o formato de dados respondido pela fonte de dados precisam atender aos requisitos (incluindo pelo menos o atributo time, data):{"data": [], "schema": ["time", "data"]}
Os formatos de dados podem ser consultados no exemplo: {
"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) Especifica o nome da propriedade e retorna os dados necessários. Por exemplo:"$.spot_close_price"
,usar$.
Como um prefixo, o nome da propriedade e a propriedade no campo data do data que foi respondida quando a fonte de dados foi solicitada são consistentesSe o aviso for errado, é necessário verificar.request.data
Se o intervalo de tempo solicitado coincide com o intervalo de tempo de configuração de ressonância, a pesquisa de dados não encontrados na sequência de tempo de ressonância pode gerar um erro.
A instrução data-data para a consulta de dados do SQL neste exemplo é:
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;
A partir da plataforma FMZExploração de dadosPerguntas de página, criação de links de dados, como no exemplohttps://www.datadata.com/api/v1/query/ebe46218-c5c6-4366-8c72-413694417976/data
。
Requer outra variedade/resolução.
request.security(symbol, timeframe, expression, gaps, lookahead, ignore_invalid_symbol, currency)
Exemplo
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)
Devolver valores Série de Requisitos
parâmetro
symbol
(simple string) Código de mercadoria。timeframe
(simple string) Período de tempo ≠ a string em branco será interpretada como o período de tempo atual do gráfico ≠expression
(series int/float/bool/color) pode ser calculado a partir da invocação request.security e retornar uma expressão. Pode ser uma série ou um módulo que contém elementos que podem ser convertidos em uma série.gaps
(barmerge_gaps) dá a estratégia de fusão de dados solicitados (exige que os dados sejam automaticamente combinados com os dados da série principal do OHLC). Valores possíveis: barmerge.gaps_on, barmerge.gaps_off. barmerge.gaps_on - os dados solicitados são combinados com possíveis lacunas (valores na). barmerge.gaps_off - os dados solicitados são combinados de forma contínua, todos os lacunas são preenchidos com os últimos valores existentes anteriormente.lookahead
(barmerge_lookahead) A estratégia de fusão de dados solicitada. Valores possíveis: barmerge.lookahead_on, barmerge.lookahead_off. A partir da versão 3, o valor padrão é barmerge.lookahead_off. Observe que o comportamento é o mesmo que no tempo real, apenas diferente no histórico.ignore_invalid_symbol
(const bool) Um parâmetro opcional. Determina o comportamento da função se o produto especificado não for encontrado: se for false, o script será parado e retornará um erro; se for true, a função retornará na e continuará a executar. O valor padrão é false.currency
(simple string) Converte o valor de referência monetária do produto (… por exemplo, OHLC) para a moeda . Depois, calcule o valor após a conversão expression . A taxa de conversão usada é baseada na taxa de câmbio diária do dia anterior do par FX_IDC (em relação à linha K calculada) opcional . O valor padrão é syminfo.currency . Valores possíveis: uma string de três letras com o código monetário no formato ISO 4217 (por exemplo, USD ) ou currency.* Uma das constantes no namespace, por exemplo, currency.USD Nota:
O código de PineScript com esta função pode fazer diferentes cálculos para o histórico e os dados em tempo real.
Se você quiser especificar parâmetros adicionais para o produto solicitado, como o tempo de transação ou o tipo de ajuste, você pode usar a função ticker.new ().
Não é possível usar a variável ‘ticker’ para passar a diferença de pontos para esta função. Você pode usar a variável ‘ticker.new’ ou a representação de cadeia de caracteres do código de ações, como AAPL+MSFT*TSLA”。
Atualmente, um script pode ter no máximo 40 requests.security.
Por favor, note que o uso desta variável/função pode resultar em um redesenho do indicador.
Os parâmetros de resolução permitidos são:
1S, 5S, 15S, 30S - intervalo de segundos (o período de gráfico deve ser menor ou igual ao período solicitado)
De 1 a 1440 minutos
De 1D a 365D dias
De 1W a 52W em semanas.
De 1M a 12M em alguns meses
Veja também
syminfo.ticker
syminfo.tickerid
timeframe.period
ta.correlation
barmerge.lookahead_off
barmerge.lookahead_on
Sesource
Conter uma stringstr
Se for uma sequência de caracteres, retorna true, caso contrário retorna false.
str.contains(source, str)
Exemplo
// 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)
Devolver valores
Se emsource
Encontrado em uma stringstr
, então é verdadeiro, ou então é falso.
parâmetro
source
(series string) string de origemstr
(series string) A sequência de caracteres a ser pesquisada.Veja também
str.pos
str.match
Sesource
A sequência éstr
A sequência de caracteres especificada no final da sequência de caracteres é devolvida para true, caso contrário para false.
str.endswith(source, str)
Devolver valores
Sesource
A sequência éstr
A sequência de caracteres especificada no final é verdadeira ou falsa.
parâmetro
source
(series string) string de origemstr
(series string) A sequência de caracteres a ser pesquisada.Veja também
str.startswith
Sesource
A sequência éstr
A sequência de caracteres especificada no início da sequência retorna true, caso contrário retorna false.
str.startswith(source, str)
Devolver valores
Sesource
A sequência éstr
A sequência de caracteres especificada começa com true ou false.
parâmetro
source
(series string) string de origemstr
(series string) A sequência de caracteres a ser pesquisada.Veja também
str.endswith
Retorna uma nova string, que ésource
Substringente de uma string. Substringente de uma string. Substringente de uma stringbegin_pos
Os caracteres começam no índice especificado e se estendem atésource
‘end_pos - 1’ da sequência de caracteres.
str.substring(source, begin_pos)
str.substring(source, begin_pos, end_pos)
Exemplo
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)
Devolver valores Substring extraído da string de origem.
parâmetro
source
(series string) A string de origem da qual se extrai a substring.begin_pos
(series int) a posição inicial da substring extraída。 é exclusiva ((a substring extraída inclui os caracteres da posição)。end_pos
(series int) End position。 é exclusivo ((a sequência extraída não inclui caracteres da posição)。 é opcional。 o valor padrão ésource
O comprimento da string.Nota:
O índice da string começa em 0.begin_pos
igualend_pos
, a função retorna uma sequência de caracteres em branco.
Veja também
str.contains
str.pos
str.match
str.tonumber(string)
Devolver valores Se contém números válidos, é o tipo de floating-point da string, senão é na。
parâmetro
string
(series string) representação de uma string int ou float.Converte uma string de formato e um valor para uma string de formatação. A string de formato pode conter texto e um ponto entre parênteses largos {} para cada valor a ser formatado. Cada ponto inclui um índice para o parâmetro necessário que irá substituí-lo (a partir de 0), e um indicador de formato opcional. O índice indica a posição do parâmetro na lista de parâmetros str.format.
str.format(formatString, arg0, arg1, ...)
Exemplo
// 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)
Devolver valores Formatação de strings.
parâmetro
formatString
(series string) String de formato。arg0, arg1, ...
(series int/float/bool/string/na/int[]/float[]/bool[]/string[]) Valor a ser formatado.Nota: Todos os parênteses em estilos não citados devem ser equilibrados. Por exemplo, “ab {0} de” e “ab ‘}’ de” são estilos válidos, mas “ab {0’}’ de”, “ab } de” e “‘{”” não são estilos válidos.
Retorna um número inteiro correspondente ao número de caracteres na string.
str.length(string)
Devolver valores Número de caracteres na sequência de origem.
parâmetro
string
(series string) string de origemRetorna uma nova string em que todas as letras são convertidas em minúsculas.
str.lower(source)
Devolver valores Todos os caracteres são convertidos em uma nova sequência de caracteres em minúsculas.
parâmetro
source
(series string) A sequência de caracteres a converter.Veja também
str.upper
Retorna uma nova string em que todas as letras são maiúsculas.
str.upper(source)
Devolver valores Todos os caracteres são convertidos em uma nova sequência de caracteres em maiúsculas.
parâmetro
source
(series string) A sequência de caracteres a converter.Veja também
str.lower
Se corresponderregex
Regular Expressions, retornasource
Uma nova substring de uma string, ou retorna ‘na’。
str.match(source, regex)
Exemplo
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"
Devolver valores
source
Uma nova substring de uma string, se ela coincide com umaregex
A expressão normal é ‘na’。
parâmetro
source
(series string) string de origemregex
(series string) A expressão regular que corresponde a esta sequência de caracteres。Nota:
Função Retornasource
A expressão regular que aparece pela primeira vez na sequência de caracteres:
regex
Os símbolos de contra-acréscimo <unk> na string necessitam de ser traduzidos usando contra-acréscimos adicionais, como \d representa a expressão regular \d。
Veja também
str.contains
str.substring
Regresso.source
Aparece pela primeira vez na stringstr
A posição da string, caso contrário, retorna ‘na’。
str.pos(source, str)
Devolver valores
str
A sequência de caracteressource
Posição na string.
parâmetro
source
(series string) string de origemstr
(series string) A sequência de caracteres a ser pesquisada.Nota: O índice da string começa em 0。
Veja também
str.contains
str.match
str.substring
Devolve uma nova sequência de caracteres com a primeira ocorrência de N+1target
Strings e outras versões anteriorestarget
A sequência de caracteres é substituída porreplacement
String, onde N está emoccurrence
N é o índice de correspondência que ocorre na cadeia de origem da cadeia de destino a ser substituída.
str.replace(source, target, replacement, occurrence)
Exemplo
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)
Devolver valores Estrelas tratadas
parâmetro
source
(series string) string de origemtarget
(series string) substituído por stringreplacement
(series string) A string a ser inserida em vez da string alvo.occurrence
(series int) O índice de correspondência da cadeia de destino a ser substituída aparece na cadeia de origem. O primeiro índice de correspondência começa em 0. É opcional. O valor por defeito é 0.Veja também
str.replace_all
str.match
Substitua as cadeias de caracteres por cadeias de caracteres de destino que aparecem em cada uma das cadeias de caracteres de origem.
str.replace_all(source, target, replacement)
Devolver valores Estrelas tratadas
parâmetro
source
(series string) string de origemtarget
(series string) substituído por stringreplacement
(series string) A sequência de caracteres que será substituída por cada sequência de caracteres que aparecerDivide uma string em uma sub-array e retorna a sua ID de array.
str.split(string, separator)
Devolver valores ID da sequência de caracteres.
parâmetro
string
(series string) string de origemseparator
(series string) Uma sequência de caracteres que separa cada substring.str.tostring(value)
str.tostring(value, format)
str.tostring(value[])
str.tostring(value[], format)
Devolver valores
value
As strings dos parâmetros são representadas pela forma:
Sevalue
Se o parâmetro for uma string, ele é retomado como tal.
Quandovalue
Para na, a função retorna a sequência de caracteres NaN.
parâmetro
value
(series int/float/bool/string/int[]/float[]/bool[]/string[]) O elemento é convertido em um valor de uma string ou um ID de array.format
(series string) Format string. Accepts these format.* constants: format.mintick, format.percent, format.volume. Optional. The default value is ‘#.##########’.Nota: Os formatos com valores de ponto flutuante também são inseridos quando necessário, por exemplo, str.tostring ((3.99, ‘#’) retornará 4。 Para mostrar o zero, use ‘0’ em vez de ‘#’. Por exemplo, ‘#.000’. Usando format.mintick, o valor é colocado em círculos até o número mais próximo que pode ser dividido sem um número a mais com siminfo.mintick. A sequência de caracteres retornada é seguida de zero. Se o argumento x for uma string, o mesmo string será retornado. O tipo Bool retorna true ou false Quando x é na, a função retorna NaN。
A cor da função especifica a transparência aplicada a uma determinada cor.
color.new(color, transp)
Exemplo
plot(close, color=color.new(color.red, 50))
Devolver valores As cores têm uma certa transparência.
parâmetro
color
(series color)transp
(series int/float) Os valores disponíveis são de 0 (transparente) a 100 (invisível)Nota: O uso de um número exorbitante de parâmetros (por exemplo, simple, input ou series) afetará a cor exibida na página de etiquetas de configuração/estilo da barra do script. Consulte o manual do usuário para obter mais informações.
Criar novas cores com transparência usando o modelo RGB.
color.rgb(red, green, blue, transp)
Exemplo
plot(close, color=color.rgb(255, 0, 0, 50))
Devolver valores As cores têm uma certa transparência.
parâmetro
red
(series int/float) Tons vermelhos. Os valores possíveis são de 0 a 255green
(series int/float) Tono verde. Os valores possíveis são de 0 a 255blue
(series int/float) Tono azul. Os valores possíveis são de 0 a 255transp
(series int/float) opcional. A cor é transparente. Os valores possíveis são de 0 (não transparente) a 100 (transparente). O valor padrão é 0 (transparente).Nota: O uso de um número exorbitante de parâmetros (por exemplo, simple, input ou series) afetará a cor exibida na página de etiquetas de configuração/estilo da barra do script. Consulte o manual do usuário para obter mais informações.
Imprimir informações de variáveis no console.
A linguagem FMZ PINE tem funções específicas.runtime.debug(value)
, apenas um parâmetro.
Exportação do conteúdo do diário.
A linguagem FMZ PINE tem funções específicas.runtime.log(1, 2, 3, close, high, ...)
, pode passar vários parâmetros.
Quando é chamada, pode causar erros de operação e trazer problemas de segurança.message
Mensagem de erro especificada no parâmetro.
runtime.error(message)
parâmetro Message (series string) mensagem de erro
Adicione o input à página de etiquetas de entrada das configurações do script, que permite que você forneça opções de configuração aos usuários do script. Esta função detecta automaticamente o tipo de parâmetro usado para a barra de defval e usa o plug-in de entrada correspondente.
input(defval, title, tooltip, inline, group)
input(defval, title, inline, group, tooltip)
Exemplo
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)
Devolver valores Valor de variável de entrada
parâmetro
defval
(const int/float/bool/string/color or source-type built-ins) Determina o valor padrão de uma variável de entrada sugerida na página de configuração de caixa do script/tabela de caixa de entrada, a partir da qual o usuário do script pode alterá-la. A função de inserção do tipo de fonte é a variável de ponto de inserção da série de flote de uma fonte de cálculo especificada:close
、hlc3
E assim por diante.title
(const string) O título da entrada. Se não for especificado, use o nome da variável como título da entrada. Se o título for especificado, mas o título for vazio, o nome será uma string de caracteres em branco.tooltip
(const string) Esta sequência de caracteres será exibida ao usuário quando o mouse estiver suspenso no ícone de sugestão da ferramenta.inline
(const string) Combina todas as chamadas de entrada que usam o mesmo parâmetro em uma linha. Não mostra as strings usadas como parâmetros. É usado apenas para identificar as entradas que pertencem à mesma linha.group
(const string) Cria um cabeçalho acima de todas as entradas usando a mesma string de parâmetros numéricos. Esta string também é usada como texto do cabeçalho.Nota: O valor de retorno de uma função de entrada deve ser sempre atribuído a uma variável. Veja o exemplo acima
Veja também
input.bool
input.color
input.int
input.float
input.string
input.timeframe
input.source
Adicione o input à página de etiquetas de entrada das configurações do script, que permite que você forneça opções de configuração ao usuário do script. Esta funcionalidade adicionou um menu de descolagem que permite ao usuário escolher o fonte de cálculo, por exemplo, close, hl2 etc. Se o script contém apenas uma chamada de input.source (), o usuário também pode escolher outro indicador no gráfico como fonte de saída.
input.source(defval, title, tooltip, inline, group)
Exemplo
i_src = input.source(close, "Source")
plot(i_src)
Devolver valores Valor de variável de entrada
parâmetro
defval
(series int/float) Determina o valor padrão de uma variável de entrada recomendada na página de etiquetas de configuração de barra / barra de entrada do script, a partir da qual o usuário pode alterá-la.title
(const string) O título da entrada. Se não for especificado, use o nome da variável como título da entrada. Se o título for especificado, mas o título for vazio, o nome será uma string de caracteres em branco.tooltip
(const string) Esta sequência de caracteres será exibida ao usuário quando o mouse estiver suspenso no ícone de sugestão da ferramenta.inline
(const string) Combina todas as chamadas de entrada que usam o mesmo parâmetro em uma linha. Não mostra as strings usadas como parâmetros. É usado apenas para identificar as entradas que pertencem à mesma linha.group
(const string) Cria um cabeçalho acima de todas as entradas usando a mesma string de parâmetros numéricos. Esta string também é usada como texto do cabeçalho.Nota: O resultado da função input.source sempre deve ser atribuído a uma variável, como no exemplo acima.
Veja também
input.bool
input.int
input.float
input.string
input.timeframe
input.color
input
Adicione o input à barra de opções de entrada do script, que permite que você forneça opções de configuração ao usuário do script. Esta função adiciona o campo de entrada de string à entrada do script.
input.string(defval, title, options, tooltip, inline, group, confirm)
Exemplo
i_text = input.string("Hello!", "Message")
runtime.log(i_text)
Devolver valores Valor de variável de entrada
parâmetro
defval
(const string) Determina o valor padrão de uma variável de entrada sugerida na página de configuração de barra de script / barra de entrada, a partir da qual o usuário pode alterá-la. Quando a lista de valores éoptions
Quando os parâmetros são usados juntos, o valor deve ser um deles.title
(const string) O título da entrada. Se não for especificado, use o nome da variável como título da entrada. Se o título for especificado, mas o título for vazio, o nome será uma string de caracteres em branco.options
(List of constants: [<type>…]) uma lista de opções disponíveis.tooltip
(const string) Esta sequência de caracteres será exibida ao usuário quando o mouse estiver suspenso no ícone de sugestão da ferramenta.inline
(const string) Combina todas as chamadas de entrada que usam o mesmo parâmetro em uma linha. Não mostra as strings usadas como parâmetros. É usado apenas para identificar as entradas que pertencem à mesma linha.group
(const string) Cria um cabeçalho acima de todas as entradas usando a mesma string de parâmetros numéricos. Esta string também é usada como texto do cabeçalho.confirm
(const bool) Se for true, o usuário será solicitado a confirmar o valor de entrada antes de adicionar o indicador ao gráfico. O valor padrão é false.Nota: O resultado da função input.string deve sempre ser atribuído a uma variável, como no exemplo acima.
Veja também
input.bool
input.int
input.float
input.timeframe
input.source
input.color
input
Adicione o input à página de etiquetas de entrada do script, que permite que você forneça opções de configuração ao usuário do script. Esta função adiciona um marcador de seleção para a entrada do script.
input.bool(defval, title, tooltip, inline, group, confirm)
Exemplo
i_switch = input.bool(true, "On/Off")
plot(i_switch ? open : na)
Devolver valores Valor de variável de entrada
parâmetro
defval
(const bool) Determina o valor padrão da variável de entrada sugerida na página de etiquetas de configuração de barra / barra de entrada do script, a partir da qual o usuário pode alterá-la.title
(const string) O título da entrada. Se não for especificado, use o nome da variável como título da entrada. Se o título for especificado, mas o título for vazio, o nome será uma string de caracteres em branco.tooltip
(const string) Esta sequência de caracteres será exibida ao usuário quando o mouse estiver suspenso no ícone de sugestão da ferramenta.inline
(const string) Combina todas as chamadas de entrada que usam o mesmo parâmetro em uma linha. Não mostra as strings usadas como parâmetros. É usado apenas para identificar as entradas que pertencem à mesma linha.group
(const string) Cria um cabeçalho acima de todas as entradas usando a mesma string de parâmetros numéricos. Esta string também é usada como texto do cabeçalho.confirm
(const bool) Se for true, o usuário será solicitado a confirmar o valor de entrada antes de adicionar o indicador ao gráfico. O valor padrão é false.Nota: O resultado da função input.bool deve sempre ser atribuído a uma variável, como no exemplo acima.
Veja também
input.int
input.float
input.string
input.timeframe
input.source
input.color
input
Adicione o input à página de etiquetas de entrada das configurações do script, que permite que você forneça opções de configuração ao usuário do script. Esta função adiciona o campo de entrada de números inteiros à entrada do script.
input.int(defval, title, minval, maxval, step, tooltip, inline, group, confirm)
input.int(defval, title, options, tooltip, inline, group, confirm)
Exemplo
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))
Devolver valores Valor de variável de entrada
parâmetro
defval
(const int) Determina o valor padrão da variável de entrada recomendada na página de etiquetas de configuração de barra / barra de entrada do script, a partir da qual o usuário do script pode alterá-la. Quando a lista de valores é igual aoptions
Quando os parâmetros são usados juntos, o valor deve ser um deles.title
(const string) O título da entrada. Se não for especificado, use o nome da variável como título da entrada. Se o título for especificado, mas o título for vazio, o nome será uma string de caracteres em branco.minval
(const int) O valor mínimo possível para a variável de entrada。 opcional。maxval
(const int) O valor máximo possível da variável de entrada。 opcional。step
(const int) O valor de comprimento de passo usado para aumentar/reduzir a entrada. Opcional. O valor padrão é 1options
(tuple of const int values: [val1, val2, …]) A lista de opções selecionadas no menu de download, separadas por vírgula e fechadas em parênteses quadrados:[val1, val2, …] não pode ser usado quando este parâmetro é usadominval
、maxval
estep
Parâmetrostooltip
(const string) Esta sequência de caracteres será exibida ao usuário quando o mouse estiver suspenso no ícone de sugestão da ferramenta.inline
(const string) Combina todas as chamadas de entrada que usam o mesmo parâmetro em uma linha. Não mostra as strings usadas como parâmetros. É usado apenas para identificar as entradas que pertencem à mesma linha.group
(const string) Cria um cabeçalho acima de todas as entradas usando a mesma string de parâmetros numéricos. Esta string também é usada como texto do cabeçalho.confirm
(const bool) Se for true, o usuário será solicitado a confirmar o valor de entrada antes de adicionar o indicador ao gráfico. O valor padrão é false.Nota: O resultado da função input.int deve sempre ser atribuído a uma variável, como no exemplo acima.
Veja também
input.bool
input.float
input.string
input.timeframe
input.source
input.color
input
Adicione o input à página de etiquetas de entrada das configurações do script, que permite que você forneça opções de configuração aos usuários do script. Esta função adiciona o campo de entrada de ponto flutuante à entrada do script.
input.float(defval, title, minval, maxval, step, tooltip, inline, group, confirm)
input.float(defval, title, options, tooltip, inline, group, confirm)
Exemplo
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)
Devolver valores Valor de variável de entrada
parâmetro
defval
(const int/float) Determina o valor padrão da variável de entrada recomendada na página de etiquetas de configuração de barra / barra de entrada do script, a partir da qual o usuário do script pode alterá-la. Quando a lista de valores é igual aoptions
Quando os parâmetros são usados juntos, o valor deve ser um deles.title
(const string) O título da entrada. Se não for especificado, use o nome da variável como título da entrada. Se o título for especificado, mas o título for vazio, o nome será uma string de caracteres em branco.minval
(const int/float) O valor mínimo possível da variável de entrada。 opcional。maxval
(const int/float) O valor máximo possível da variável de entrada。 opcional。step
(const int/float) O valor de extensão de passo usado para aumentar/reduzir a entrada. Opcional. O valor padrão é 1options
(tuple of const int/float values: [val1, val2, …]) A lista de opções selecionadas no menu de download, separadas por vírgula e fechadas em parênteses quadrados:[val1, val2, …] não pode ser usado quando este parâmetro é usadominval
、maxval
estep
Parâmetrostooltip
(const string) Esta sequência de caracteres será exibida ao usuário quando o mouse estiver suspenso no ícone de sugestão da ferramenta.inline
(const string) Combina todas as chamadas de entrada que usam o mesmo parâmetro em uma linha. Não mostra as strings usadas como parâmetros. É usado apenas para identificar as entradas que pertencem à mesma linha.group
(const string) Cria um cabeçalho acima de todas as entradas usando a mesma string de parâmetros numéricos. Esta string também é usada como texto do cabeçalho.confirm
(const bool) Se for true, o usuário será solicitado a confirmar o valor de entrada antes de adicionar o indicador ao gráfico. O valor padrão é false.Nota: O resultado da função input.float sempre deve ser atribuído a uma variável, como no exemplo acima.
Veja também
input.bool
input.int
input.string
input.timeframe
input.source
input.color
input
Adicione o input à página de etiquetas de entrada do script, que permite que você forneça opções de configuração para o usuário do script. Esta função adiciona um selector de cores, permitindo que o usuário escolha a cor e a transparência a partir de um painel de cores ou de dezesseis dígitos.
input.color(defval, title, tooltip, inline, group, confirm)
Exemplo
i_col = input.color(color.red, "Plot Color")
plot(close, color=i_col)
Devolver valores Valor de variável de entrada
parâmetro
defval
(const color) Determina o valor padrão da variável de entrada sugerida na página de etiquetas de configuração de barra / barra de entrada do script, a partir da qual o usuário pode alterá-la.title
(const string) O título da entrada. Se não for especificado, use o nome da variável como título da entrada. Se o título for especificado, mas o título for vazio, o nome será uma string de caracteres em branco.tooltip
(const string) Esta sequência de caracteres será exibida ao usuário quando o mouse estiver suspenso no ícone de sugestão da ferramenta.inline
(const string) Combina todas as chamadas de entrada que usam o mesmo parâmetro em uma linha. Não mostra as strings usadas como parâmetros. É usado apenas para identificar as entradas que pertencem à mesma linha.group
(const string) Cria um cabeçalho acima de todas as entradas usando a mesma string de parâmetros numéricos. Esta string também é usada como texto do cabeçalho.confirm
(const bool) Se for true, o usuário será solicitado a confirmar o valor de entrada antes de adicionar o indicador ao gráfico. O valor padrão é false.Nota: O resultado da função input.color deve sempre ser atribuído a uma variável, como no exemplo acima.
Veja também
input.bool
input.int
input.float
input.string
input.timeframe
input.source
input
Adicione a entrada de preço à página de etiquetas de configuração de barra/entrada de barra do script.confirm = true
Ativar o modo de entrada interativa e selecionar o preço clicando no gráfico.
input.price(defval, title, tooltip, inline, group, confirm)
Exemplo
price1 = input.price(title="Date", defval=42)
plot(price1)
price2 = input.price(54, title="Date")
plot(price2)
Devolver valores Valor de variável de entrada
parâmetro
defval
(const int/float) Determina o valor padrão da variável de entrada recomendada na página de etiquetas de configuração de barra / barra de ent