Modificar 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")
O valor de um campo de objeto pode ser alterado usando o:=
Operador de reatribuição.
Coleção de objetos
O exemplo declara uma matriz vazia que contém objetos do tipo de ordem 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")
Copie objeto
Quando um objeto existente é atribuído a uma nova variável, ambos se referem ao 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 para 1000. Então declaramos uma variável pivot2 que contém uma referência ao objeto pivot1, então ambos apontam para a mesma instância. Portanto, mudar pivot2.x também muda pivot1.x, porque ambos se referem ao campo x do mesmo objeto.
Para criar uma cópia que é independente do objeto original, neste caso, podemos usar o método de cópia incorporada ((). Neste exemplo, declaramos a variável pivot2 para se referir à instância copiada do objeto pivot1. Agora, alterar pivot2.x não mudará pivot1.x, porque se refere ao campo x de 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)
Deve-se notar que o método de cópia do TradingView
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" // 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")
Os resultados dos testes mostram que o labelInfo.copy ((labelInfo1) é uma cópia profunda quando executado e a modificação de qualquer campo do labelInfo1 não afetará o labelInfo2.
Os métodos na linguagem Pine são funções especializadas associadas a uma instância específica de um tipo embutido ou definido pelo usuário. Na maioria dos aspectos, eles são essencialmente os mesmos que as funções regulares, mas fornecem uma sintaxe mais curta e conveniente. Os usuários podem acessar métodos diretamente em variáveis usando notação de pontos, assim como acessar campos de objetos Pine. Pine inclui métodos embutidos para todos os tipos especiais, incluindo matrizes, matrizes, mapas, linhas, linhas de preenchimento e muito mais. Estes métodos fornecem aos usuários uma maneira mais concisa de chamar programas especializados desses tipos em scripts.
Métodos integrados
Por exemplo, um código de script como este:
//@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)
Pode ser reescrito equivalentemente 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)
Você pode ver que depois de PINE apoiaMethods
, o códigoarray.avg(sourceArray)
podem ser escritas sob a forma de métodos:sourceArray.avg()
- Não.
Observe que o FMZ não suporta chamadas comoarray.avg
currently.
Métodos definidos pelo utilizador
Pine permite que os usuários definam métodos personalizados que funcionam com objetos de qualquer tipo embutido ou definido pelo usuário.
O valor da posição em risco deve ser calculado em conformidade com o método de classificação de risco definido no anexo I do Regulamento (UE) n.o 575/2013.
//@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)
Você pode ver que o primeiro parâmetro na lista de parâmetros dos métodos definidos pelo usuário declarados com o método da palavra-chave: maintainQueue e calcBB é do tipoarray<float>
, o que significa que o método é um método de uma variável de tipoarray<float>
, então você pode ver que o seguinte código é chamado para calcular o indicador de Bollinger.
[sampleMean, highBand, lowBand] = sourceArray.maintainQueue(sourceInput, newSample).calcBB(multiplier, newSample)
Métodos de sobrecarga
Métodos definidos pelo usuário podem substituir e sobrecarregar métodos existentes e métodos definidos pelo usuário com o mesmo identificador. Este recurso permite que os usuários definam várias rotinas associadas a diferentes assinaturas de argumento sob o mesmo nome do método. Como um exemplo simples, suponha que queremos definir um método para identificar o tipo de uma variável. Uma vez que devemos especificar explicitamente o tipo de objeto associado a um método definido pelo usuário, precisamos definir sobrecargas para cada tipo que queremos que ele reconheça. Em seguida, definimos um método getType() que retorna uma representação de cadeia de um 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")
O tipo de base de cada variável determina qual sobrecarga degetType()
Na plataforma FMZ, uma vez que a implementação subjacente dos scripts PINE é o Javascript, o tipo numérico será julgado como dados de ponto flutuante (float).
Ao chamar uma função, você pode passar argumentos. Você pode atribuir nomes de argumentos para atribuir valores. Você pode passar diretamente variáveis nas posições de argumentos correspondentes. O uso misto também é suportado. Por exemplo:
plot(close, title="test plot") // Pass the argument close directly; specify the argument title and assign the string "test plot"
Após especificar a atribuição do nome do argumento, você não pode mais passar diretamente a variável como um argumento, e os argumentos subsequentes devem ser escritos na forma de atribuição do nome do argumento.
// 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
Converter o período de tempo passado para otimeframe
Argumento em 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)
RetornoUma representação int do número de segundos em uma barra de umtimeframe
.
Argumentos
timeframe
(string simples) Timeframe. Opcional. O padrão é timeframe.periodObservaçõesPara otimeframe
A função >=
Veja também:
input.timeframe
timeframe.period
Cria um identificador de ticker para solicitar um valor de representação de int médio suavizado.
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)
RetornoValor de cadeia do código de ações que pode ser fornecido à função request.security.
Argumentos
symbol
Identificador do código do produto (sincronização simples).Veja também:
syminfo.tickerid
syminfo.ticker
request.security
Solicitar 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, "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)
Valor de retornoO argumento atributo especifica a série de dados.
Argumentos
url
(string simples) O URL da fonte de dados solicitado e o formato dos dados da resposta da fonte de dados devem satisfazer os requisitos (incluindo, pelo menos, os atributos de tempo e dados):{"data": [], "schema": ["time", "data"]}
Pode consultar o formato de dados 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 do atributo e retorna os dados necessários."$.spot_close_price"
, utilizar$.
como o prefixo, e o nome do atributo é consistente com o atributo no campo de dados nos dados na resposta ao solicitar a fonte de dados
Se um erro for solicitado, você precisa verificar se o intervalo de tempo solicitado porrequest.data
é consistente com o intervalo de tempo definido para o backtest. Se não for possível consultar dados na série de tempo do backtest, será notificado um erro.
A instrução SQL de consulta de dados de dados 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;
Pode consultar e criar ligações de dados noExploração de dadosA página da plataforma FMZ, que é ahttps://www.datadata.com/api/v1/query/ebe46218-c5c6-4366-8c72-413694417976/data
utilizado no exemplo.
Peça 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)
RetornoSérie solicitada
Argumentos
symbol
Símbolo.timeframe
(string simples) Período de tempo. Uma cadeia vazia é interpretada como a resolução atual do gráfico.expression
(série int/float/bool/color) Uma expressão pode ser calculada e devolvida a partir da chamada request.security. Pode ser uma série ou uma tupla contendo elementos que podem ser lançados para série.gaps
(barmerge_gaps) Estratégia de fusão para os dados solicitados (os dados solicitados se fundem automaticamente com os dados OHLC da série principal). Valores possíveis: barmerge.gaps_on, barmerge.gaps_off. barmerge.gaps_on - os dados solicitados são fundidos com possíveis lacunas (sem valores). barmerge.gaps_off - os dados solicitados são fundidos continuamente sem lacunas, todos os lacunas são preenchidos com os valores anteriores mais próximos existentes. Valor padrão é barmerge.gaps_off.lookahead
(barmerge_lookahead) Estratégia de fusão para a posição de dados solicitada. Valores possíveis: barmerge.lookahead_on, barmerge.lookahead_off. Valor padrão é barmerge.lookahead_off a partir da versão 3. Observe que o comportamento é o mesmo em tempo real e difere apenas no histórico.ignore_invalid_symbol
(const bool) Um argumento opcional. Determina o comportamento da função se o símbolo especificado não for encontrado: se falso, o script será interrompido e retornará um erro de execução; se verdadeiro, a função retornará na e a execução continuará. O valor padrão é falso.currency
(corrente simples) Moeda em que os valores do símbolo relacionados com a moeda (por exemplo OHLC) devem ser convertidos.expression
A taxa de conversão é calculada com base nos valores convertidos. As taxas de conversão utilizadas são baseadas nas taxas diárias dos pares FX_IDCObservaçõesO código PineScript que usa esta função pode calcular de forma diferente em dados históricos e em tempo real.
Se pretender especificar argumentos adicionais para o símbolo solicitado, por exemplo sessão ou tipo de ajuste, pode utilizar oticker.new() função.
Não é possível passar um spread para esta função usando a variável
Os valores admissíveis do argumento de resolução são: 1S, 5S, 15S, 30S - para intervalos de segundos (a resolução do gráfico deve ser igual ou inferior à resolução solicitada) de 1 a 1440 em minutos de 1D a 365D por dias de 1W para 52W durante semanas de 1M a 12M por meses
Veja também:
syminfo.ticker
syminfo.tickerid
timeframe.period
ta.correlation
barmerge.lookahead_off
barmerge.lookahead_on
Retorna verdadeiro se osource
string contém ostr
Substring, Falso caso contrário.
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)
RetornoVerdade se ostr
foi encontrado nosource
string, falso de outra forma.
Argumentos
source
(Corrente de série) Corda de origem.str
A substring para procurar.Veja também:
str.pos
str.match
Retorna verdadeiro se osource
terminações de cadeia com a subcadeia especificada emstr
Falso, caso contrário.
str.endswith(source, str)
RetornoVerdade se osource
terminações de cadeia com a subcadeia especificada emstr
Falso, caso contrário.
Argumentos
source
(Corrente de série) Corda de origem.str
A substring para procurar.Veja também:
str.startswith
Retorna verdadeiro se osource
string começa com a substring especificada emstr
Falso, caso contrário.
str.startswith(source, str)
RetornoVerdade se osource
string começa com a substring especificada emstr
Falso, caso contrário.
Argumentos
source
(Corrente de série) Corda de origem.str
A substring para procurar.Veja também:
str.endswith
Retorna uma nova string que é uma substring dosource
A substring começa com o caractere no índice especificado porbegin_pos
e estende-se a source
string.
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)
RetornoA substring extraída da string de origem.
Argumentos
source
(serie string) fonte string a partir do qual extrair a substring.begin_pos
(série int) A posição inicial da substring extraída.end_pos
(series int) A posição final. É exclusivo (a cadeia extraída NÃO inclui esse caráter de posiçãosource
string.ObservaçõesA indexação de strings começa a partir de 0, sebegin_pos
é igual aend_pos
, a função retorna uma cadeia vazia.
Veja também:
str.contains
str.pos
str.match
str.tonumber(string)
RetornoUma versão flutuante da cadeia se ela contém um número válido, na outra.
Argumentos
string
(string de série) Representação de string de um int ou float.Converte a string de formatação e o value (s) em uma string formatada. A string de formatação pode conter texto literal e um espaço reservado em feixes curvos {} para cada valor a ser formatado. Cada espaço reservado consiste no índice do argumento necessário (começando em 0) que o substituirá, e um especificador de formato opcional. O índice representa a posição desse argumento na lista de argumentos 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)
RetornoA cadeia formatada.
Argumentos
formatString
Formatar string.arg0, arg1, ...
(série int/float/bool/string/na/int[]/float[]/bool[]/string[]) Valores a formatar.ObservaçõesQualquer aparelho encaracolado dentro de um padrão não citado deve ser equilibrado. Por exemplo,
Retorna um inteiro correspondente à quantidade de caracteres nessa cadeia.
str.length(string)
RetornoO número de caracteres na cadeia de fontes.
Argumentos
string
(Corrente de série) Corda de origem.Retorna uma nova cadeia com todas as letras convertidas em minúsculas.
str.lower(source)
RetornoUma nova cadeia com todas as letras convertidas em minúsculas.
Argumentos
source
(serie string) String a ser convertido.Veja também:
str.upper
Retorna uma nova cadeia com todas as letras convertidas em maiúsculas.
str.upper(source)
RetornoUma nova cadeia com todas as letras convertidas em maiúsculas.
Argumentos
source
(serie string) String a ser convertido.Veja também:
str.lower
Retorna a nova substring dosource
string se ele corresponder aregex
expressão regular,
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"
RetornoA nova subcorrente dosource
string se ele corresponder aregex
expressão regular,
Argumentos
source
(Corrente de série) Corda de origem.regex
(string de série) A expressão regular com a qual esta cadeia deve ser correspondida.ObservaçõesFunção retorna primeira ocorrência da expressão regular nosource
A corda.
O símbolo da barra regex
string precisa ser escapado com backslash adicional, por exemplo
Veja também:
str.contains
str.substring
Retorna a posição da primeira ocorrência dostr
cordas nosource
cordas,
str.pos(source, str)
RetornoPosição da Comissãostr
cordas nosource
string.
Argumentos
source
(Corrente de série) Corda de origem.str
A substring para procurar.ObservaçõesA indexação de strings começa em 0.
Veja também:
str.contains
str.match
str.substring
Retorna uma nova cadeia com a ocorrência N + 1 datarget
string e a ocorrência anterior detarget
cadeia substituída peloreplacement
string, onde N é especificado emoccurrence
. N é o índice de correspondência da cadeia de destino a ser substituída na cadeia de origem.
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 "EXCHANGE1:SYMBOL1 / EXCHANGE1:SYMBOL2"
runtime.log(newSource)
RetornoCordas processadas.
Argumentos
source
(Corrente de série) Corda de origem.target
(Corrente de série) Corda a ser substituída.replacement
(string de série) String a inserir em vez da string de destino.occurrence
(series int) O índice de correspondência da ocorrência da cadeia de destino a ser substituída na cadeia de origem.Veja também:
str.replace_all
str.match
Substitui cada ocorrência da cadeia de caracteres de destino na cadeia de caracteres de origem pela cadeia de caracteres de substituição.
str.replace_all(source, target, replacement)
RetornoCordas processadas.
Argumentos
source
(Corrente de série) Corda de origem.target
(Corrente de série) Corda a ser substituída.replacement
(string de série) String a substituir para cada ocorrência de string de destino.Divide uma string em uma matriz de substrings e retorna o ID da matriz.
str.split(string, separator)
RetornoA identificação de uma matriz de cordas.
Argumentos
string
(Corrente de série) Corda de origem.separator
A cadeia que separa cada subcadeia.str.tostring(value)
str.tostring(value, format)
str.tostring(value[])
str.tostring(value[], format)
RetornoA representação de cadeia dovalue
Argumento.
Se ovalue
argumento é uma cadeia, é devolvido como é.
Quando ovalue
é na, a função retorna a cadeia
Argumentos
value
(série int/float/bool/string/int[]/float[]/bool[]/string[]) Valor ou ID de matriz cujos elementos são convertidos para uma cadeia.format
(serie string) Formatar string. Aceita estes formatos.* constantes: format.mintick, format.percentual, format.volume. Opcional. O valor padrão é ObservaçõesA formatação de valores de flutuação também arredondará esses valores quando necessário, por exemplo, str.tostring ((3.99,
A cor da função aplica a transparência especificada à cor dada.
color.new(color, transp)
Exemplo
plot(close, color=color.new(color.red, 50))
RetornoCor com transparência especificada.
Argumentos
color
(cor da série)transp
(série int/float) Os valores possíveis vão de 0 (não transparente) a 100 (invisível).ObservaçõesUsar argumentos que não são constantes (por exemplo,
Cria uma nova cor com transparência usando o modelo de cores RGB.
color.rgb(red, green, blue, transp)
Exemplo
plot(close, color=color.rgb(255, 0, 0, 50))
RetornoCor com transparência especificada.
Argumentos
red
(série int/float) Componente de cor vermelha.green
(série int/float) Componente de cor verde.blue
(série int/float) Componente de cor azul.transp
(série int/float) Opcional. Transparência de cor. Os valores possíveis são de 0 (opacos) a 100 (invisíveis). O valor padrão é 0.ObservaçõesUsar argumentos que não são constantes (por exemplo,
Imprimir informações de variáveis para o console.
Funções específicas da língua FMZ PINE,runtime.debug(value)
, com apenas uma discussão.
Conteúdo de saída no registo.
Funções específicas da língua FMZ PINE,runtime.log(1, 2, 3, close, high, ...)
, você pode passar vários argumentos.
Quando chamado, causa um erro de execução com a mensagem de erro especificada nomessage
argument.
runtime.error(message)
Argumentosmensagem (cadeia de séries) mensagem de erro.
Adiciona uma entrada para a aba Inputes das Configurações do script, que permite fornecer opções de configuração aos usuários do script. Esta função detecta automaticamente o tipo de argumento usado para
input(defval, title, tooltip, inline, group)
input(defval, title, inline, group, tooltip)
Exemplo
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)
RetornoValor da variável de entrada.
Argumentos
defval
(const int/float/bool/string/color ou tipo de fonte embutida) Determina o valor padrão da variável de entrada proposta na guia close
, hlc3
, etc.title
(const string) Título da entrada. Se não for especificado, o nome da variável é usado como título da entrada. Se o título for especificado, mas estiver vazio, o nome será uma cadeia vazia.tooltip
(const string) A cadeia que será exibida ao usuário ao passar o cursor sobre o ícone de dicas de ferramentas.inline
(const string) Combina todas as chamadas de entrada usando o mesmo argumento em uma linha. A cadeia usada como argumento não é exibida. É usada apenas para identificar entradas pertencentes à mesma linha.group
(const string) Cria um cabeçalho acima de todas as entradas usando a mesma string de argumento de grupo.ObservaçõesO resultado da função de entrada deve sempre ser atribuído a uma variável, ver exemplos acima.
Veja também:
input.bool
input.color
input.int
input.float
input.string
input.timeframe
input.source
Adiciona uma entrada na aba de Entradas das Configurações do script, que permite fornecer opções de configuração aos usuários do script. Esta função adiciona uma lista suspensa que permite ao usuário selecionar uma fonte para o cálculo, por exemplo, fechar, hl2, etc. Se o script incluir apenas uma chamada input.source(), o usuário também pode selecionar uma saída de outro indicador em seu gráfico como fonte.
input.source(defval, title, tooltip, inline, group)
Exemplo
i_src = input.source(close, "Source")
plot(i_src)
RetornoValor da variável de entrada.
Argumentos
defval
(série int/float) Determina o valor padrão da variável de entrada proposta na guia title
(const string) Título da entrada. Se não for especificado, o nome da variável é usado como título da entrada. Se o título for especificado, mas estiver vazio, o nome será uma cadeia vazia.tooltip
(const string) A cadeia que será exibida ao usuário ao passar o cursor sobre o ícone de dicas de ferramentas.inline
(const string) Combina todas as chamadas de entrada usando o mesmo argumento em uma linha. A cadeia usada como argumento não é exibida. É usada apenas para identificar entradas pertencentes à mesma linha.group
(const string) Cria um cabeçalho acima de todas as entradas usando a mesma string de argumento de grupo.ObservaçõesResultado da função input.source deve sempre ser atribuído a uma variável, ver exemplos acima.
Veja também:
input.bool
input.int
input.float
input.string
input.timeframe
input.color
input
Adiciona uma entrada na guia Inputes das Configurações do script, que permite fornecer opções de configuração aos usuários do script.
input.string(defval, title, options, tooltip, inline, group, confirm)
Exemplo
i_text = input.string("Hello!", "Message")
runtime.log(i_text)
RetornoValor da variável de entrada.
Argumentos
defval
(const string) Determina o valor padrão da variável de entrada proposta no guião options
Argumento, o valor deve ser um deles.title
(const string) Título da entrada. Se não for especificado, o nome da variável é usado como título da entrada. Se o título for especificado, mas estiver vazio, o nome será uma cadeia vazia.options
(Lista de constantes: [tooltip
(const string) A cadeia que será exibida ao usuário ao passar o cursor sobre o ícone de dicas de ferramentas.inline
(const string) Combina todas as chamadas de entrada usando o mesmo argumento em uma linha. A cadeia usada como argumento não é exibida. É usada apenas para identificar entradas pertencentes à mesma linha.group
(const string) Cria um cabeçalho acima de todas as entradas usando a mesma string de argumento de grupo.confirm
(const bool) Se for verdade, então o usuário será solicitado a confirmar o valor de entrada antes de o indicador ser adicionado ao gráfico.ObservaçõesResultado da função input.string sempre deve ser atribuído a uma variável, veja os exemplos acima.
Veja também:
input.bool
input.int
input.float
input.timeframe
input.source
input.color
input
Adiciona uma entrada na guia Inputes das Configurações do script, que permite fornecer opções de configuração aos usuários do script. Esta função adiciona uma marca de seleção às entradas do script.
input.bool(defval, title, tooltip, inline, group, confirm)
Exemplo
i_switch = input.bool(true, "On/Off")
plot(i_switch ? open : na)
RetornoValor da variável de entrada.
Argumentos
defval
(const bool) Determina o valor padrão da variável de entrada proposta na guia title
(const string) Título da entrada. Se não for especificado, o nome da variável é usado como título da entrada. Se o título for especificado, mas estiver vazio, o nome será uma cadeia vazia.tooltip
(const string) A cadeia que será exibida ao usuário ao passar o cursor sobre o ícone de dicas de ferramentas.inline
(const string) Combina todas as chamadas de entrada usando o mesmo argumento em uma linha. A cadeia usada como argumento não é exibida. É usada apenas para identificar entradas pertencentes à mesma linha.group
(const string) Cria um cabeçalho acima de todas as entradas usando a mesma string de argumento de grupo.confirm
(const bool) Se for verdade, então o usuário será solicitado a confirmar o valor de entrada antes de o indicador ser adicionado ao gráfico.ObservaçõesResultado da função input.bool deve sempre ser atribuído a uma variável, ver exemplos acima.
Veja também:
input.int
input.float
input.string
input.timeframe
input.source
input.color
input
Adiciona uma entrada na guia Inputes das Configurações do script, que permite fornecer opções de configuração aos usuários 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))
RetornoValor da variável de entrada.
Argumentos
defval
(const int) Determina o valor padrão da variável de entrada proposta no guião options
Argumento, o valor deve ser um deles.title
(const string) Título da entrada. Se não for especificado, o nome da variável é usado como título da entrada. Se o título for especificado, mas estiver vazio, o nome será uma cadeia vazia.minval
(const int) Valor mínimo possível da variável de entrada.maxval
(const int) Valor máximo possível da variável de entrada.step
(const int) Valor do passo utilizado para incrementar/decrementar a entrada. Opcional. O padrão é 1.options
(tupla de valores int const: [val1, val2,...]) Uma lista de opções para escolher a partir de um menu suspenso, separadas por vírgulas e incluídas em parênteses quadrados: [val1, val2,...].minval
, maxval
estep
argumentos não podem ser usados.tooltip
(const string) A cadeia que será exibida ao usuário ao passar o cursor sobre o ícone de dicas de ferramentas.inline
(const string) Combina todas as chamadas de entrada usando o mesmo argumento em uma linha. A cadeia usada como argumento não é exibida. É usada apenas para identificar entradas pertencentes à mesma linha.group
(const string) Cria um cabeçalho acima de todas as entradas usando a mesma string de argumento de grupo.confirm
(const bool) Se for verdade, então o usuário será solicitado a confirmar o valor de entrada antes de o indicador ser adicionado ao gráfico.ObservaçõesResultado deinput.intfunção deve sempre ser atribuída a uma variável, ver exemplos acima.
Veja também:
input.bool
input.float
input.string
input.timeframe
input.source
input.color
input
Adiciona uma entrada na aba de Entradas das Configurações do script, que permite fornecer opções de configuração aos usuários do script. Esta função adiciona um campo para uma entrada de flutuação às entradas 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)
RetornoValor da variável de entrada.
Argumentos
defval
(const int/float) Determina o valor padrão da variável de entrada proposta na guia options
Argumento, o valor deve ser um deles.title
(const string) Título da entrada. Se não for especificado, o nome da variável é usado como título da entrada. Se o título for especificado, mas estiver vazio, o nome será uma cadeia vazia.minval
(const int/float) Valor mínimo possível da variável de entrada.maxval
(const int/float) Valor máximo possível da variável de entrada.step
(const int/float) Valor do passo usado para incrementar/decrementar a entrada. Opcional. O padrão é 1.options
(tupla de valores const int/float: [val1, val2,...]) Uma lista de opções para escolher a partir de um menu suspenso, separadas por vírgulas e incluídas em parênteses quadrados: [val1, val2,...].minval
, maxval
estep
argumentos não podem ser usados.tooltip
(const string) A cadeia que será exibida ao usuário ao passar o cursor sobre o ícone de dicas de ferramentas.inline
(const string) Combina todas as chamadas de entrada usando o mesmo argumento em uma linha. A cadeia usada como argumento não é exibida. É usada apenas para identificar entradas pertencentes à mesma linha.group
(const string) Cria um cabeçalho acima de todas as entradas usando a mesma string de argumento de grupo.confirm
(const bool) Se for verdade, então o usuário será solicitado a confirmar o valor de entrada antes de o indicador ser adicionado ao gráfico.ObservaçõesResultado da função input.float deve sempre ser atribuído a uma variável, ver exemplos acima.
Veja também:
input.bool
input.int
input.string
input.timeframe
input.source
input.color
input
Adiciona uma entrada para a guia Inputes das Configurações do script, que permite fornecer opções de configuração aos usuários do script. Esta função adiciona um seletor de cores que permite ao usuário selecionar uma cor e transparência, seja de uma paleta ou de um valor hexadecimal.
input.color(defval, title, tooltip, inline, group, confirm)
Exemplo
i_col = input.color(color.red, "Plot Color")
plot(close, color=i_col)
RetornoValor da variável de entrada.
Argumentos
defval
(const color) Determina o valor padrão da variável de entrada proposta na guia title
(const string) Título da entrada. Se não for especificado, o nome da variável é usado como título da entrada. Se o título for especificado, mas estiver vazio, o nome será uma cadeia vazia.tooltip
(const string) A cadeia que será exibida ao usuário ao passar o cursor sobre o ícone de dicas de ferramentas.inline
(const string) Combina todas as chamadas de entrada usando o mesmo argumento em uma linha. A cadeia usada como argumento não é exibida. É usada apenas para identificar entradas pertencentes à mesma linha.group
(const string) Cria um cabeçalho acima de todas as entradas usando a mesma string de argumento de grupo.confirm
(const bool) Se for verdade, então o usuário será solicitado a confirmar o valor de entrada antes de o indicador ser adicionado ao gráfico.ObservaçõesResultado da função input.color deve sempre ser atribuído a uma variável, ver exemplos acima.
Veja também:
input.bool
input.int
input.float
input.string
input.timeframe
input.source
input
Adiciona uma entrada de preço para o scriptconfirm = true
Ativar o modo de entrada interativo, em que um preço é selecionado 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)
RetornoValor da variável de entrada.
Argumentos
defval
(const int/float) Determina o valor padrão da variável de entrada proposta na guia title
(const string) Título da entrada. Se não for especificado, o nome da variável é usado como título da entrada. Se o título for especificado, mas estiver vazio, o nome será uma cadeia vazia.tooltip
(const string) A cadeia que será exibida ao usuário ao passar o cursor sobre o ícone de dicas de ferramentas.inline
(const string) Combina todas as chamadas de entrada usando o mesmo argumento em uma linha. A cadeia usada como argumento não é exibida. É usada apenas para identificar entradas pertencentes à mesma linha.group
(const string) Cria um cabeçalho acima de todas as entradas usando a mesma string de argumento de grupo.confirm
(const bool) Se for verdade, o modo de entrada interativo é ativado e a seleção é feita clicando no gráfico quando o indicador é adicionado ao gráfico, ou selecionando o indicador e movendo a seleção depois disso.ObservaçõesQuando se utiliza o modo interativo, uma entrada de tempo pode ser combinada com uma entrada de preço se ambas as chamadas de função usarem o mesmo argumento para o seuinline
argument.
Veja também:
input.bool
input.int
input.float
input.string
input.resolution
input.source
input.color
input
Adiciona uma entrada na guia Inputes das Configurações do script, que permite fornecer opções de configuração aos usuários do script. Esta função adiciona um menu suspenso que permite ao usuário selecionar um período específico através do seletor de tempo e devolve-o como uma cadeia. O seletor inclui os intervalos de tempo personalizados que um usuário pode ter adicionado usando o menu suspenso Timeframe.
input.timeframe(defval, title, options, tooltip, inline, group, confirm)
Exemplo
i_res = input.timeframe('D', "Resolution", options=['D', 'W', 'M'])
s = request.security("syminfo.tickerid", i_res, close)
plot(s)
RetornoValor da variável de entrada.
Argumentos
defval
(const string) Determina o valor padrão da variável de entrada proposta no guião options
Argumento, o valor deve ser um deles.title
(const string) Título da entrada. Se não for especificado, o nome da variável é usado como título da entrada. Se o título for especificado, mas estiver vazio, o nome será uma cadeia vazia.options
(TupPedidos de ajudaPor que a estratégia de replicação da praça dos pinheiros não funciona?
Inventor quantificado - sonho pequenoMuito bem, vamos ver.
Pedidos de ajudaO Tracker de Tendências Otimizado de Zhang
Inventor quantificado - sonho pequenoOlá, por favor, qual é a estratégia?