O recurso está a ser carregado... Carregamento...

FMZ PINE Script Doc

Autora:Inventor quantificado - sonho pequeno, Criado: 2022-04-28 16:05:05, Atualizado: 2024-10-12 17:25:27

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 é uma cópia superficial. Se um objeto tiver tipos especiais de campos (array, etc.), esses campos na cópia superficial do objeto apontarão para a mesma instância do objeto. A plataforma FMZ implementa diretamente a cópia profunda, e não é necessário processamento adicional.

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.

Métodos

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.

  1. A palavra-chave método deve ser incluída antes do nome da função.
  2. O tipo do primeiro parâmetro do método deve ser declarado explicitamente porque representa o tipo de objeto com o qual o método será associado.

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ávels e tem sobrecargas para cinco tipos básicos:

//@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).

Função incorporada

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

período de tempo

período de tempo.em_segundos

Converter o período de tempo passado para otimeframeArgumento 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.period

ObservaçõesPara otimeframeA função >= 1M calcula o número de segundos com base em 30,4167 (365/12) dias de um mês.

Veja também: input.timeframe timeframe.period

Tico-tico

ticker.heikinashi

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

  • symbolIdentificador do código do produto (sincronização simples).

Veja também: syminfo.tickerid syminfo.ticker request.security

pedido

request.data

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/datautilizado no exemplo.

request.security

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

  • symbolSí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.expressionA 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_IDC do dia anterior (em relação à barra onde o cálculo é feito). Opcional. O padrão é syminfo.currency. Valores possíveis: uma cadeia de três letras com o código da moeda no formato ISO 4217 (por exemplo, USD) ou uma das constantes no espaço de nomes da moeda.*, por exemplo, currency.USD.

Observaçõ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 ticker.ticker.new variável ou uma representação de cadeia do ticker, por exemplo AAPL+MSFT*TSLA. No momento, até 40 solicitações de segurança podem estar presentes em um script. Observe que a utilização desta variável/função pode provocar uma repintura do indicador.

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

str

str.contains

Retorna verdadeiro se osourcestring contém ostrSubstring, 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 ostrfoi encontrado nosourcestring, falso de outra forma.

Argumentos

  • source(Corrente de série) Corda de origem.
  • strA substring para procurar.

Veja também: str.pos str.match

str.endswith

Retorna verdadeiro se osourceterminações de cadeia com a subcadeia especificada emstrFalso, caso contrário.

str.endswith(source, str)

RetornoVerdade se osourceterminações de cadeia com a subcadeia especificada emstrFalso, caso contrário.

Argumentos

  • source(Corrente de série) Corda de origem.
  • strA substring para procurar.

Veja também: str.startswith

str.startswith

Retorna verdadeiro se osourcestring começa com a substring especificada emstrFalso, caso contrário.

str.startswith(source, str)

RetornoVerdade se osourcestring começa com a substring especificada emstrFalso, caso contrário.

Argumentos

  • source(Corrente de série) Corda de origem.
  • strA substring para procurar.

Veja também: str.endswith

str.substring

Retorna uma nova string que é uma substring dosourceA substring começa com o caractere no índice especificado porbegin_pose estende-se a end_pos - 1 dosource 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çãos). Opcional.source 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

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.

str.format

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

  • formatStringFormatar 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, ab {0} de e ab } de são padrões válidos, mas ab {0} de, ab } de e { não são.

str.length

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.

str.lower

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

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

str.match

Retorna a nova substring dosourcestring se ele corresponder aregexexpressão regular, na de outra forma.

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 dosourcestring se ele corresponder aregexexpressão regular, na de outra forma.

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 nosourceA corda. O símbolo da barra noregexstring precisa ser escapado com backslash adicional, por exemplo \d significa expressão regular \d.

Veja também: str.contains str.substring

str.pos

Retorna a posição da primeira ocorrência dostrcordas nosourcecordas, na de outra forma.

str.pos(source, str)

RetornoPosição da Comissãostrcordas nosource string.

Argumentos

  • source(Corrente de série) Corda de origem.
  • strA substring para procurar.

ObservaçõesA indexação de strings começa em 0.

Veja também: str.contains str.match str.substring

str.replace

Retorna uma nova cadeia com a ocorrência N + 1 datargetstring e a ocorrência anterior detargetcadeia substituída peloreplacementstring, 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

Str.replace_all

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.

str.split

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.
  • separatorA cadeia que separa cada subcadeia.

str.tostring

str.tostring(value)
str.tostring(value, format)
str.tostring(value[])
str.tostring(value[], format)

RetornoA representação de cadeia dovalueArgumento. Se ovalueargumento é uma cadeia, é devolvido como é. Quando ovalueé na, a função retorna a cadeia NaN.

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, #) retornará 4. Para exibir zeros finais, use 0 em vez de #. Por exemplo, #.000. Ao usar format.mintick, o valor será arredondado para o número mais próximo que pode ser dividido por syminfo.mintick sem o resto. Se o argumento x for uma string, o mesmo valor de string será devolvido. Os argumentos do tipo Bool retornam true ou false. Quando x é na, a função retorna NaN.

cor

color.new

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, simple, input ou series) terá um impacto nas cores exibidas na guia Settings/Style do script.

color.rgb

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, simple, input ou series) terá um impacto nas cores exibidas na guia Settings/Style do script.

tempo de execução

runtime.debug

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.

runtime.log

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.

runtime.error

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.

entrada

entrada

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 defval e usa o widget de entrada correspondente.

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 Settings/Inputs do script, de onde os usuários do script podem alterá-la.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

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 Settings/Inputs do script, a partir da qual o utilizador pode alterá-la.
  • 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

input.string

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 Settings/Inputs, de onde o usuário pode alterá-lo.optionsArgumento, 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: [...]) Uma lista de opções para escolher.
  • 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

input.bool

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 Settings/Inputs do script, de onde o usuário pode alterá-la.
  • 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

input.int

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 Settings/Inputs, de onde os usuários do script podem alterá-lo.optionsArgumento, 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, maxvalestepargumentos 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

input.float

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 Settings/Inputs do script, a partir da qual os utilizadores do script podem alterá-lo.optionsArgumento, 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, maxvalestepargumentos 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

input.color

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 Settings/Inputs do script, de onde o usuário pode alterá-la.
  • 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

input.price

Adiciona uma entrada de preço para o scripts Settings/Inputs guia.confirm = trueAtivar 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 Settings/Inputs do script, a partir da qual o usuário pode alterá-la.
  • 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

input.timeframe

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 Settings/Inputs, de onde o usuário pode alterá-lo.optionsArgumento, 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(Tup

Mais.

Pedidos 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?