FMZ PINE Script Documentário

Criado em: 2022-05-06 14:27:06, atualizado em: 2025-01-23 10:19:06
comments   18
hits   13760

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。

Methods

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.MethodsDepois, o código.array.avg(sourceArray)O que é que eu tenho a dizer?sourceArray.avg()。 Atenção: FMZ temporariamente não suportadoarray.avgA 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.

Funções embutidas

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)             // 正确写法

timeframe

timeframe.in_seconds

Será transmitido atimeframeConverte 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 timeframeO 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 (36512) dias de um mês.

Veja também input.timeframe timeframe.period

ticker

ticker.heikinashi

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

request

request.data

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âmetroattributeUma 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 consistentes

Se o aviso for errado, é necessário verificar.request.dataSe 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

request.security

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

str

str.contains

SesourceConter uma stringstrSe 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 emsourceEncontrado em uma stringstr, então é verdadeiro, ou então é falso.

parâmetro

  • source(series string) string de origem
  • str(series string) A sequência de caracteres a ser pesquisada.

Veja também str.pos str.match

str.endswith

SesourceA sequência éstrA 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 SesourceA sequência éstrA sequência de caracteres especificada no final é verdadeira ou falsa.

parâmetro

  • source(series string) string de origem
  • str(series string) A sequência de caracteres a ser pesquisada.

Veja também str.startswith

str.startswith

SesourceA sequência éstrA sequência de caracteres especificada no início da sequência retorna true, caso contrário retorna false.

str.startswith(source, str)

Devolver valores SesourceA sequência éstrA sequência de caracteres especificada começa com true ou false.

parâmetro

  • source(series string) string de origem
  • str(series string) A sequência de caracteres a ser pesquisada.

Veja também str.endswith

str.substring

Retorna uma nova string, que ésourceSubstringente de uma string. Substringente de uma string. Substringente de uma stringbegin_posOs 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 ésourceO comprimento da string.

Nota: O índice da string começa em 0.begin_posigualend_pos, a função retorna uma sequência de caracteres em branco.

Veja também str.contains str.pos str.match

str.tonumber

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.

str.format

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.

str.length

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 origem

str.lower

Retorna 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

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

str.match

Se corresponderregexRegular Expressions, retornasourceUma 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 sourceUma nova substring de uma string, se ela coincide com umaregexA expressão normal é ‘na’。

parâmetro

  • source(series string) string de origem
  • regex(series string) A expressão regular que corresponde a esta sequência de caracteres。

Nota: Função RetornasourceA expressão regular que aparece pela primeira vez na sequência de caracteres: regexOs 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

str.pos

Regresso.sourceAparece pela primeira vez na stringstrA posição da string, caso contrário, retorna ‘na’。

str.pos(source, str)

Devolver valores strA sequência de caracteressourcePosição na string.

parâmetro

  • source(series string) string de origem
  • str(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

str.replace

Devolve uma nova sequência de caracteres com a primeira ocorrência de N+1targetStrings e outras versões anteriorestargetA sequência de caracteres é substituída porreplacementString, onde N está emoccurrenceN é 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 origem
  • target(series string) substituído por string
  • replacement(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

str.replace_all

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 origem
  • target(series string) substituído por string
  • replacement(series string) A sequência de caracteres que será substituída por cada sequência de caracteres que aparecer

str.split

Divide 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 origem
  • separator(series string) Uma sequência de caracteres que separa cada substring.

str.tostring

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

Devolver valores valueAs strings dos parâmetros são representadas pela forma: SevalueSe o parâmetro for uma string, ele é retomado como tal. QuandovaluePara 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。

color

color.new

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.

color.rgb

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 255
  • green(series int/float) Tono verde. Os valores possíveis são de 0 a 255
  • blue(series int/float) Tono azul. Os valores possíveis são de 0 a 255
  • transp(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.

runtime

runtime.debug

Imprimir informações de variáveis no console.

A linguagem FMZ PINE tem funções específicas.runtime.debug(value), apenas um parâmetro.

runtime.log

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.

runtime.error

Quando é chamada, pode causar erros de operação e trazer problemas de segurança.messageMensagem de erro especificada no parâmetro.

runtime.error(message)

parâmetro Message (series string) mensagem de erro

input

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 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:closehlc3E 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

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

input.string

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 éoptionsQuando 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: [&lt;type&gt;…]) 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

input.bool

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

input.int

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 aoptionsQuando 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 é 1
  • options (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 é usadominvalmaxvalestepParâmetros
  • 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.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

input.float

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 aoptionsQuando 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 é 1
  • options (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 é usadominvalmaxvalestepParâmetros
  • 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.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

input.color

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

input.price

Adicione a entrada de preço à página de etiquetas de configuração de barra/entrada de barra do script.confirm = trueAtivar 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