Retorno de valorO número médio dos elementos da matriz.
Parâmetros
id
(int[]/float[]) Objeto de matriz.Até logo.
array.avg
array.variance
array.min
Esta função retorna o padrão dos elementos da matriz. Retorna o valor mínimo se houver vários valores com a mesma frequência.
array.mode(id)
Exemplos
// array.mode example
a = array.new_float(0)
for i = 0 to 9
array.push(a, close[i])
plot(array.mode(a))
Retorno de valorPadrão dos elementos da matriz.
Parâmetros
id
(int[]/float[]) Objeto de matriz.Até logo.
array.new_float
array.avg
array.variance
array.min
Retorna uma percentagem específica (percentagem) do valor da matriz menor ou igual a seu valor, usando inserções lineares.
array.percentile_linear_interpolation(id, percentage)
Parâmetros
id
(int[]/float[]) Objeto de matriz.percentage
(series int/float) deve ser igual ou menor que a percentagem do valor do valor devolvido.NotasEm estatística, a percentagem é a percentagem de itens de classificação que aparecem em uma determinada pontuação ou abaixo de uma determinada pontuação. Esta medida mostra a percentagem de frações na distribuição de frequência padrão abaixo da pontuação percentual que você está medindo.
Até logo.
array.new_float
array.insert
array.slice
array.reverse
order.ascending
order.descending
Retorna o valor de uma matriz de porcentagem especificada que é menor ou igual a ela usando o método de classificação mais recente.
array.percentile_nearest_rank(id, percentage)
Parâmetros
id
(int[]/float[]) Objeto de matriz.percentage
(series int/float) deve ser igual ou menor que a percentagem do valor do valor devolvido.NotasEm estatística, uma percentagem é a percentagem de itens de classificação que aparecem em um determinado escalão ou abaixo de um determinado escalão. Esta medida mostra o percentual de frações na distribuição de frequência padrão abaixo do escalão percentual que você está medindo.
Até logo.
array.new_float
array.insert
array.slice
array.reverse
order.ascending
order.descending
Retorna o ranking percentual do valor médio da matriz.
array.percentrank(id, index)
Parâmetros
id
(int[]/float[]) Objeto de matriz.index
(series int) calcula o valor de sua classificação porcentorial.NotasA classificação porcentagem é a porcentagem de quantos elementos da matriz são menores ou iguais ao valor de referência.
Até logo.
array.new_float
array.insert
array.slice
array.reverse
order.ascending
order.descending
A função retorna a diferença entre o valor mínimo e o valor máximo de um conjunto dado.
array.range(id)
Exemplos
// array.range example
a = array.new_float(0)
for i = 0 to 9
array.push(a, close[i])
plot(array.range(a))
Retorno de valorA diferença entre o valor mínimo e o valor máximo de um conjunto.
Parâmetros
id
(int[]/float[]) Objeto de matriz.Até logo.
array.new_float
array.min
array.max
array.sum
A função altera o conteúdo da matriz removendo elementos com índices especificados.
array.remove(id, index)
Exemplos
// array.remove example
a = array.new_float(5,high)
removedEl = array.remove(a, 0)
plot(array.size(a))
plot(removedEl)
Retorno de valorO valor do elemento que foi removido.
Parâmetros
id
(any array type) Objeto de matriz.index
(series int) Índice do elemento a ser removido.Até logo.
array.new_float
array.set
array.push
array.insert
array.pop
array.shift
Esta função inverte a matriz. O primeiro elemento da matriz se torna o último e o último elemento da matriz se torna o primeiro.
array.reverse(id)
Exemplos
// array.reverse example
a = array.new_float(0)
for i = 0 to 9
array.push(a, close[i])
plot(array.get(a, 0))
array.reverse(a)
plot(array.get(a, 0))
Parâmetros
id
(any array type) Objeto de matriz.Até logo.
array.new_float
array.sort
array.push
array.set
array.avg
A função usa um número variável de parâmetros de um dos seguintes tipos: int, float, boolean, string, line, color, linefill, e retorna uma matriz do tipo correspondente.
array.from(arg0, arg1, ...)
Exemplos
// array.from_example
arr = array.from("Hello", "World!") // arr (string[]) will contain 2 elements: {Hello}, {World!}.
plot(close)
Retorno de valorO valor dos elementos da matriz.
Parâmetros
arg0, arg1, ...
(series int/float/bool/color/string/line/linefill) Parâmetros de conjunto.A função cria um novo<type>
Objetos de matrizes de elementos.
array.new(size, initial_value)
Exemplos
// array.new<string> example
a = array.new<string>(1, "Hello, World!")
runtime.log(array.get(a, 0))
Exemplos
// array.new<color> example
a = array.new<color>()
array.push(a, color.red)
array.push(a, color.green)
plot(close, color = array.get(a, close > open ? 1 : 0))
Exemplos
// array.new<float> example
length = 5
var a = array.new<float>(length, close)
if array.size(a) == length
array.remove(a, 0)
array.push(a, close)
plot(array.sum(a) / length, "SMA")
Exemplos
// array.new<line> example
// draw last 15 lines
var a = array.new<line>()
array.push(a, line.new(bar_index - 1, close[1], bar_index, close))
if array.size(a) > 15
ln = array.shift(a)
line.delete(ln)
Retorno de valorA função ID de um objeto de matriz pode ser usada em conjunto com outras matrizes.
Parâmetros
size
O tamanho inicial da sequência (series int) é "0".initial_value
(series NotasO índice da matriz começa em 0. Se você quiser inicializar uma matriz e especificar todos os seus elementos ao mesmo tempo, use a função array.from.
Até logo.
array.from
array.push
array.get
array.size
array.remove
array.shift
array.sum
Esta função cria um novo objeto de matriz composto por elementos do tipo boolean.
array.new_bool(size, initial_value)
Exemplos
// array.new_bool example
length = 5
a = array.new_bool(length, close > open)
plot(array.get(a, 0) ? close : open)
Retorno de valorA função ID de um objeto de matriz pode ser usada em conjunto com outras matrizes.
Parâmetros
size
O tamanho inicial da sequência (series int) é "0".initial_value
(series bool) O valor inicial de todos os elementos da série↑ opcional↑ o valor padrão é NotasO índice da matriz começa em 0.
Até logo.
array.new_float
array.get
array.slice
array.sort
Esta função cria um novo objeto de matriz de elementos flutuantes.
array.new_float(size, initial_value)
Exemplos
// array.new_float example
length = 5
a = array.new_float(length, close)
plot(array.sum(a) / length)
Retorno de valorA função ID de um objeto de matriz pode ser usada em conjunto com outras matrizes.
Parâmetros
size
O tamanho inicial da sequência (series int) é "0".initial_value
(series int/float) O valor inicial de todos os elementos da série. Opcional.NotasO índice da matriz começa em 0.
Até logo.
array.new_bool
array.get
array.slice
array.sort
A função cria um novo objeto de matriz composto por elementos do tipo int.
array.new_int(size, initial_value)
Exemplos
// array.new_int example
length = 5
a = array.new_int(length, int(close))
plot(array.sum(a) / length)
Retorno de valorA função ID de um objeto de matriz pode ser usada em conjunto com outras matrizes.
Parâmetros
size
O tamanho inicial da sequência (series int) é "0".initial_value
(series int) O valor inicial de todos os elementos da série↑ opcional↑ o valor padrão é NotasO índice da matriz começa em 0.
Até logo.
array.new_float
array.get
array.slice
array.sort
A função cria um novo objeto de matriz com um elemento de tipo de string.
array.new_string(size, initial_value)
Exemplos
// array.new_string example
length = 5
a = array.new_string(length, "text")
runtime.log(array.get(a, 0))
Retorno de valorA função ID de um objeto de matriz pode ser usada em conjunto com outras matrizes.
Parâmetros
size
O tamanho inicial da sequência (series int) é "0".initial_value
(series string) O valor inicial de todos os elementos da série↑ opcional↑ o valor padrão é NotasO índice da matriz começa em 0.
Até logo.
array.new_float
array.get
array.slice
A função retorna o valor do elemento indicado no endereço do índice.
array.get(id, index)
Exemplos
// array.get example
a = array.new_float(0)
for i = 0 to 9
array.push(a, close[i] - open[i])
plot(array.get(a, 9))
Retorno de valorO valor dos elementos da matriz.
Parâmetros
id
(any array type) Objeto de matriz.index
(series int) é o índice de um elemento para retornar seu valor.Até logo.
array.new_float
array.set
array.slice
array.sort
A função adiciona um valor à matriz.
array.push(id, value)
Exemplos
// array.push example
a = array.new_float(5, 0)
array.push(a, open)
plot(array.get(a, 5))
Parâmetros
id
(any array type) Objeto de matriz.value
(series <type of the array's elements>
) é adicionado ao valor do elemento no final da matriz.Até logo.
array.new_float
array.set
array.insert
array.remove
array.pop
array.unshift
A função define o valor do elemento como o índice indicado.
array.set(id, index, value)
Exemplos
// array.set example
a = array.new_float(10)
for i = 0 to 9
array.set(a, i, close[i])
plot(array.sum(a) / 10)
Parâmetros
id
(any array type) Objeto de matriz.index
(series int) para alterar o índice do elemento.value
(series <type of the array's elements>
) O novo valor a ser definido.Até logo.
array.new_float
array.get
array.slice
A função retorna a soma dos elementos da matriz.
array.sum(id)
Exemplos
// array.sum example
a = array.new_float(0)
for i = 0 to 9
array.push(a, close[i])
plot(array.sum(a))
Retorno de valorA soma dos elementos da matriz.
Parâmetros
id
(int[]/float[]) Objeto de matriz.Até logo.
array.new_float
array.max
array.min
A função retorna o valor médio dos elementos da matriz.
array.avg(id)
Exemplos
// array.avg example
a = array.new_float(0)
for i = 0 to 9
array.push(a, close[i])
plot(array.avg(a))
Retorno de valorO valor médio dos elementos da matriz.
Parâmetros
id
(int[]/float[]) Objeto de matriz.Até logo.
array.new_float
array.max
array.min
array.stdev
Esta função retorna o índice em que o valor apareceu pela primeira vez. Se o valor não for encontrado, retorna -1.
array.indexof(id, value)
Exemplos
// array.indexof example
a = array.new_float(5,high)
index = array.indexof(a, high)
plot(index)
Retorno de valorO índice do elemento.
Parâmetros
id
(any array type) Objeto de matriz.value
(series <type of the array's elements>
) Valor a ser pesquisado em uma matriz.Até logo.
array.lastindexof
array.get
array.lastindexof
array.remove
array.insert
Emstrategy
Em funções embutidas relacionadas, o número de pontos de stop loss e stop loss é definido como o múltiplo de um salto de preço; por exemplo:strategy.exit
Funçõesprofit
、loss
Parâmetros pontuados para parar, parar, parâmetrosprofit
Configurar para 10, ou seja, um salto de preço multiplicado por 10 como diferença de preço de parada, um salto de preço é a variável embutidasyminfo.mintick
。
A função define várias propriedades de política.
Atenção, a transmissão é apenas de apoio.title
,shorttitle
,overlay
,pyramiding
,default_qty_type
,default_qty_value
Parâmetros, outros parâmetros podem ser definidos através dos parâmetros da interface da política da linguagem PINE.
strategy(title, shorttitle, overlay, format, precision, scale, pyramiding, calc_on_order_fills, calc_on_every_tick, max_bars_back, backtest_fill_limits_assumption, default_qty_type, default_qty_value, initial_capital, currency, slippage, commission_type, commission_value, process_orders_on_close, close_entries_rule, margin_long, margin_short, explicit_plot_zorder, max_lines_count, max_labels_count, max_boxes_count, risk_free_rate)
Exemplos
strategy("Strategy", overlay = true)
// Enter long by market if current open is greater than previous high.
strategy.entry("Long", strategy.long, 1, when = open > high[1])
// Generate a full exit bracket (profit 10 points, loss 5 points per contract) from the entry named "Long".
strategy.exit("Exit", "Long", profit = 10, loss = 5)
Parâmetros
title
(const string) Trata-se do título do indicador visto no plugin indicador/estratégia. Parâmetros são necessários.shorttitle
(const string) O indicador que você vê no exemplo do gráfico será o título curto. O parâmetro é opcional.overlay
(const bool) Se for true, o indicador será adicionado como uma camada de sobreposição da série principal. Se for false - ele será adicionado a uma janela de gráfico separada.format
precision
scale
pyramiding
(const int) A quantidade máxima permitida na mesma direção. Se esse valor for 0, apenas uma ordem de entrada pode ser aberta na mesma direção e qualquer outra ordem de entrada será rejeitada.calc_on_order_fills
calc_on_every_tick
max_bars_back
backtest_fill_limits_assumption
default_qty_type
(const string) é definido paraqty
O valor do parâmetro é o conteúdo expresso na função estrategy.entry ou estrategy.order. Os valores possíveis são: estrategy.fixed representa contrato/ações/número de mãos, estrategy.cash indica a quantidade de moeda, ou estrategy.percent_of_equity indica a percentagem de direitos disponíveis.default_qty_value
(const int/float) O número de transações padrão das funções strategy.entry ou strategy.order, cuja unidade é determinada por um parâmetro usado em conjunto com o parâmetro currency
slippage
commission_type
commission_value
process_orders_on_close
close_entries_rule
max_lines_count
max_labels_count
max_boxes_count
margin_long
margin_short
explicit_plot_zorder
initial_capital
risk_free_rate
NotasCada script de estratégia deve ter uma chamada de estratégia. O código do PineScript com o parâmetro calc_on_every_tick = true pode fazer cálculos diferentes para registros históricos e dados em tempo real. Quando se usa um gráfico de tipo não padrão como base para a estratégia, é necessário saber que os resultados serão diferentes. Os pedidos serão executados no preço do gráfico (e.g. para Heikin Ashi, o preço de Heikin Ashi será usado como uma média, não como um verdadeiro preço de mercado). Portanto, é altamente recomendável que use o tipo de gráfico padrão em sua estratégia.
Até logo.
indicator
Este é um comando de entrada no mercado. Se uma ordem com o mesmo ID já está pendurada, você pode modificar a ordem. Se não tiver um ID especificado, uma nova ordem será emitida. Para cancelar a instrução de entrada, use o comando estrategy.cancel ou estrategy.cancel_all. Em comparação com a função estrategy.order, a função estrategy.entry é influenciada pela pirâmide e pode reverter corretamente a posição do mercado.
strategy.entry(id, direction, qty, limit, stop, oca_name, oca_type, comment, when, alert_message)
Exemplos
strategy(title = "simple strategy entry example")
strategy.entry("enter long", strategy.long, 1, when = open > high[1]) // enter long by market if current open great then previous high
strategy.entry("enter short", strategy.short, 1, when = open < low[1]) // enter short by market if current open less then previous low
Parâmetros
id
(series string) Parâmetros necessários.direction
(strategy_direction) Um parâmetro necessário. Direção de posicionamento do mercado:'strategy.long' para multi-cabeça,'strategy.short' para vazio.qty
(series int/float) Parâmetros opcionais↑ contrato/número de ações/quantidade de mãos/quantidade de unidades negociadas↑ valor predefinido de NaN NaN↑limit
(series int/float) Opções de parâmetros. O valor limite da ordem. Se for especificado, o tipo de ordem é "limit" ou "stop-limit"; outros tipos de ordem são "NaN".stop
(series int/float) Opções de parâmetros. O preço de stop-loss da ordem. Se for especificado, o tipo de ordem é "stop" ou "stop-limit"; outros tipos de ordem são "NaN".oca_name
oca_type
comment
(series string) Parâmetros opcionais.when
(series bool) Opções de parâmetros. Status da ordem. Se for "true", a ordem é colocada. Se for "false", nada acontece.alert_message
(series string) Um parâmetro opcional quando o símbolo {{strategy.order.alert_message}} é usado na barra de mensagens da barra de alertas da caixa de diálogo da barra de alertas.Este é um comando para uma ordem de saída com um ID especificado. Se houver várias ordens de entrada com o mesmo ID, todas elas sairão ao mesmo tempo. Se a ordem não tiver o ID especificado no momento do início, a ordem não será executada.
strategy.close(id, when, comment, qty, qty_percent, alert_message)
Exemplos
strategy("closeEntry Demo", overlay=false)
strategy.entry("buy", strategy.long, when = open > close)
strategy.close("buy", when = open < close, qty_percent = 50, comment = "close buy entry for 50%")
plot(strategy.position_size)
Parâmetros
id
(series string) Parâmetros necessários.when
(series bool) Parâmetros opcionais. Condições do comando.qty
(series int/float) Parâmetros opcionais↑ número de contratos/quantidade de ações/quantidade de mãos/unidades para sair do negócio↑ valor padrão: qty_percent
(series int/float) define a percentagem de equilíbrio ((0-100)). A sua prioridade é inferior à prioridade do parâmetro comment
(series string) Parâmetros opcionais.alert_message
(series string) Um parâmetro opcional quando o símbolo {{strategy.order.alert_message}} é usado na barra de mensagens da barra de alertas da caixa de diálogo da barra de alertas.A partir de agora, o mercado está em uma posição de baixa e o mercado está em uma posição de baixa.
strategy.close_all(when, comment, alert_message)
Exemplos
strategy("closeAll Demo", overlay=false)
strategy.entry("buy", strategy.long, when = open > close)
strategy.close_all(when = open < close, comment = "close all entries")
plot(strategy.position_size)
Parâmetros
when
(series bool) Parâmetros opcionais. Condições do comando.comment
(series string) Parâmetros opcionais.alert_message
(series string) Um parâmetro opcional quando o símbolo {{strategy.order.alert_message}} é usado na barra de mensagens da barra de alertas da caixa de diálogo da barra de alertas.Esta é uma ordem de saída que especifica uma entrada ou uma posição de mercado inteira. Se uma ordem com o mesmo ID já estiver pendurada, a ordem pode ser modificada. Se uma ordem de entrada não for executada, mas uma ordem de saída for apresentada, a ordem de saída será suspensa até que a ordem de saída seja colocada após a transação da ordem de entrada. Para interromper uma ordem de saída, o comando estrategy.cancel ou estrategy.cancel_all deve ser usado.应该多次调用命令strategy.exitSe você usar o stop loss e o track stop loss, cujo tipo de ordem é o stop stop, apenas um deles será colocado (será o primeiro a ser transacionado). Se todos os seguintes parâmetros: stop profit, stop limit, stop loss, stop trail, stop trail_points, stop trail_offset forem NaN, a ordem falhará. Para usar a ordem de saída do mercado, use o comando strategy.close ou strategy.close_all.
strategy.exit(id, from_entry, qty, qty_percent, profit, limit, loss, stop, trail_price, trail_points, trail_offset, oca_name, comment, when, alert_message)
Exemplos
strategy(title = "simple strategy exit example")
strategy.entry("long", strategy.long, 1, when = open > high[1]) // enter long by market if current open great then previous high
strategy.exit("exit", "long", profit = 10, loss = 5) // generate full exit bracket (profit 10 points, loss 5 points per contract) from entry with name "long"
Parâmetros
id
(series string) Parâmetros necessários.from_entry
(series string) Parâmetros selecionáveis↑ para especificar o identificador de entrada e saída de instruções↑ para sair de todas as posições, deve-se usar uma string vazia↑ o valor padrão é uma string vazia↑qty
(series int/float) Parâmetros opcionais↑ número de contratos/quantidade de ações/quantidade de mãos/unidades para sair do negócio↑ valor padrão: qty_percent
(series int/float) define a percentagem de equilíbrio ((0-100)). A sua prioridade é inferior à prioridade do parâmetro profit
(series int/float) Parâmetros opcionais; Objetivo de lucro (indicado em pontos); Se for especificado, quando o lucro especificado (indicado em pontos) for atingido, a ordem de saída da posição de mercado é a ordem de limite; o valor padrão é NaN NaN.limit
(series int/float) Parâmetros opcionais. Objetivo de lucro (preço necessário) Se for especificado, saia do mercado no preço especificado (ou melhor). A prioridade do parâmetro é maior do que a prioridade do parâmetro de lucro (se não for o valor de lucro, o valor de lucro é substituído pelo valor de lucro).loss
(series int/float) Parâmetro opcional↑ Stop Loss (indicado com ponto)↑ Se for especificado, quando o valor de prejuízo especificado (indicado com ponto) for atingido, saia da posição de mercado com um stop loss. O valor padrão é stop
(series int/float) Parâmetro opcional. Parâmetro de stop loss (preço necessário) Se for especificado, sair da posição no preço especificado (ou pior). Parâmetro de prioridade do stop loss para o float superior ao parâmetro de prioridade do float para o float para o float. Parâmetro de prioridade do float para o float para o float.trail_price
(series int/float) Parâmetros opcionais. Nível de ativação de stop-loss de rastreamento (preço necessário) Se for especificado, a lista de stop-loss de rastreamento será colocada quando o nível de preço especificado for atingido. No parâmetro da barra de rastreamento int/float, especifique o desvio usado para determinar o preço inicial da barra de rastreamento de stop-loss (em ponto): X ponto abaixo do nível de ativação para sair de várias cabeças; X ponto acima do nível de ativação para sair de uma cavidade.trail_points
(series int/float) Parâmetros opcionais: ∞ nível de ativação de stop loss (indicado por pontos de lucro) ∞ se especificado, quando atingido o nível de preço calculado (indicado pelo montante de lucro), a ordem de stop loss será colocada ∞ no parâmetro de ordem de desvio da ordem de stop loss (indicado por pontos de desvio) no parâmetro de ordem de trail_offset (indicado por pontos): ∞ ponto abaixo do nível de ativação para sair de várias cabeças; ∞ ponto acima do nível de ativação para sair de um espaço vazio ∞ o valor padrão é ∞ NaN ∞).trail_offset
(series int/float) Parâmetros opcionais. Nível de ativação de stop loss de rastreamento (indicado em pontos). O desvio em pontos é usado para determinar o preço inicial da ordem de stop loss de rastreamento: X ponto abaixo do trail_price pad ou trail_points pad para sair de vários pontos; X ponto acima do trail_price pad ou trail_points pad para sair de um espaço vazio.oca_name
comment
(series string) Parâmetros opcionais.when
(series bool) Opções de parâmetros. Status da ordem. Se for "true", a ordem é colocada. Se for "false", nada acontece.alert_message
(series string) Um parâmetro opcional quando o símbolo {{strategy.order.alert_message}} é usado na barra de mensagens da barra de alertas da caixa de diálogo da barra de alertas.Este é um nome de referência para cancelar / desativar todos os comandos de prelocação, gerado pelas seguintes funções: estrategy.order, strategy.entry andstrategy.exit。
strategy.cancel(id, when)
Exemplos
strategy(title = "simple order cancellation example")
conditionForBuy = open > high[1]
strategy.entry("long", strategy.long, 1, limit = low, when = conditionForBuy) // enter long using limit order at low price of current bar if conditionForBuy is true
strategy.cancel("long", when = not conditionForBuy) // cancel the entry order with name "long" if conditionForBuy is false
Parâmetros
id
(series string) Parâmetros obrigatórios↑ símbolo de ordem↑ localização do símbolo para cancelar um pedido↑when
(series bool) Opções de parâmetros. Cancelar uma ordem com base no ID. Se for "true", a ordem será cancelada. O valor padrão é "true".这是取消/停用所有预挂单命令,由以下功能生成:strategy.order,strategy.entry和strategy.exit。
strategy.cancel_all(when)
Exemplos
strategy(title = "simple all orders cancellation example")
conditionForBuy1 = open > high[1]
strategy.entry("long entry 1", strategy.long, 1, limit = low, when = conditionForBuy1) // enter long by limit if conditionForBuy1 is true
conditionForBuy2 = conditionForBuy1 and open[1] > high[2]
strategy.entry("long entry 2", strategy.long, 1, limit = ta.lowest(low, 2), when = conditionForBuy2) // enter long by limit if conditionForBuy2 is true
conditionForStopTrading = open < ta.lowest(low, 2)
strategy.cancel_all(conditionForStopTrading) // cancel both limit orders if the conditon conditionForStopTrading is true
Parâmetros
when
(series bool) Opções de opção↑ Cancelar todas as condições de ordem↑ Cancelar todas as ordens de atividade se a condição for verdadeira↑ Default: Este é o comando da ordem seguinte. Se uma ordem com o mesmo ID já estiver pendurada, você pode modificar a ordem. Se uma ordem com o mesmo ID não for especificada, uma nova ordem será emitida. Para parar a ordem, você deve usar o comando estrategy.cancel ou estrategy.cancel_all. Comparado com a função estrategy.entry, a função estrategy.order não é afetada pelo formato de pirâmide.
strategy.order(id, direction, qty, limit, stop, oca_name, oca_type, comment, when, alert_message)
Exemplos
strategy(title = "simple strategy order example")
strategy.order("buy", strategy.long, 1, when = open > high[1]) // buy by market if current open great then previous high
strategy.order("sell", strategy.short, 1, when = open < low[1]) // sell by market if current open less then previous low
Parâmetros
id
(series string) Parâmetros necessários.direction
(strategy_direction) Um parâmetro necessário. Direção da ordem:'strategy.long para comprar','strategy.short para vender'.qty
(series int/float) Parâmetros opcionais↑ contrato/número de ações/quantidade de mãos/quantidade de unidades negociadas↑ valor predefinido de NaN NaN↑limit
(series int/float) Opções de parâmetros. O valor limite da ordem. Se for especificado, o tipo de ordem é "limit" ou "stop-limit"; outros tipos de ordem são "NaN".stop
(series int/float) Opções de parâmetros. O preço de stop-loss da ordem. Se for especificado, o tipo de ordem é "stop" ou "stop-limit"; outros tipos de ordem são "NaN".oca_name
oca_type
comment
(series string) Parâmetros opcionais.when
(series bool) Opções de parâmetros. Status da ordem. Se for "true", a ordem é colocada. Se for "false", nada acontece.alert_message
(series string) Um parâmetro opcional quando o símbolo {{strategy.order.alert_message}} é usado na barra de mensagens da barra de alertas da caixa de diálogo da barra de alertas.Retorna o bar_index para entrada de transações sem liquidação.
strategy.opentrades.entry_bar_index(trade_num)
Espere 10 linhas K e leve
Exemplos
strategy("`strategy.opentrades.entry_bar_index` Example")
barsSinceLastEntry() =>
strategy.opentrades > 0 ? bar_index - strategy.opentrades.entry_bar_index(strategy.opentrades - 1) : na
// Enter a long position if there are no open positions.
if strategy.opentrades == 0
strategy.entry("Long", strategy.long)
// Close the long position after 10 bars.
if barsSinceLastEntry() >= 10
strategy.close("Long")
Parâmetros
trade_num
(series int) Número de transações não liquidadas. O número da primeira transação é zero.Até logo.
strategy.closedtrades.entry_bar_index
strategy.closedtrades.exit_bar_index
Retorna o ID de entrada de transações não liquidadas.
strategy.opentrades.entry_id(trade_num)
Exemplos
strategy("`strategy.opentrades.entry_id` Example", overlay = true)
// We enter a long position when 14 period sma crosses over 28 period sma.
// We enter a short position when 14 period sma crosses under 28 period sma.
longCondition = ta.crossover(ta.sma(close, 14), ta.sma(close, 28))
shortCondition = ta.crossunder(ta.sma(close, 14), ta.sma(close, 28))
// Strategy calls to enter a long or short position when the corresponding condition is met.
if longCondition
strategy.entry("Long entry at bar #" + str.tostring(bar_index), strategy.long)
if shortCondition
strategy.entry("Short entry at bar #" + str.tostring(bar_index), strategy.short)
// Display ID of the latest open position.
if barstate.islastconfirmedhistory
runtime.log("Last opened position is " + strategy.opentrades.entry_id(strategy.opentrades - 1))
Retorno de valorRetorna o ID de entrada de transações não liquidadas.
Parâmetros
trade_num
(series int) Número de transações não liquidadas. O número da primeira transação é zero.NotasSe o trade_num não estiver no intervalo, a função retornará na:0 para strategy.opentrades−1.
Até logo.
strategy.opentrades.entry_bar_index
strategy.opentrades.entry_time
O preço de entrada é o preço de entrada de uma transação que não foi liquidada.
strategy.opentrades.entry_price(trade_num)
Exemplos
strategy("strategy.closedtrades.entry_price Example 1")
// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars.
if bar_index % 15 == 0
strategy.entry("Long", strategy.long)
if bar_index % 20 == 0
strategy.close("Long")
// Return the entry price for the latest closed trade.
entryPrice = strategy.closedtrades.entry_price(strategy.closedtrades - 1)
plot(entryPrice, "Long entry price")
Cálculo do preço médio não equilibrado
Exemplos
strategy("strategy.opentrades.entry_price Example 2", pyramiding = 2)
// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars.
if bar_index % 15 == 0
strategy.entry("Long", strategy.long)
if bar_index % 20 == 0
strategy.close("Long")
// Calculate average open position price.
avgOpenPositionPrice() =>
sumOpenPositionPrice = 0.0
for tradeNo = 0 to strategy.opentrades - 1
sumOpenPositionPrice += strategy.opentrades.entry_price(tradeNo) * strategy.opentrades.size(tradeNo) / strategy.position_size
result = nz(sumOpenPositionPrice / strategy.opentrades)
plot(avgOpenPositionPrice())
Parâmetros
trade_num
(series int) Número de transações não liquidadas. O número da primeira transação é zero.Até logo.
strategy.closedtrades.exit_price
Retorna o tempo de entrada do UNIX sem liquidação.
strategy.opentrades.entry_time(trade_num)
Exemplos
strategy("strategy.opentrades.entry_time Example")
// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars.
if bar_index % 15 == 0
strategy.entry("Long", strategy.long)
if bar_index % 20 == 0
strategy.close("Long")
// Calculates duration in milliseconds since the last position was opened.
timeSinceLastEntry()=>
strategy.opentrades > 0 ? (time - strategy.opentrades.entry_time(strategy.opentrades - 1)) : na
plot(timeSinceLastEntry() / 1000 * 60 * 60 * 24, "Days since last entry")
Parâmetros
trade_num
(series int) Número de transações não liquidadas. O número da primeira transação é zero.Até logo.
strategy.closedtrades.entry_time
strategy.closedtrades.exit_time
Retorna os ganhos e prejuízos dos negócios não liquidados. Os prejuízos são indicados como negativos.
strategy.opentrades.profit(trade_num)
Retorno do lucro da última negociação
Exemplos
strategy("`strategy.opentrades.profit` Example 1", commission_type = strategy.commission.percent, commission_value = 0.1)
// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars.
if bar_index % 15 == 0
strategy.entry("Long", strategy.long)
if bar_index % 20 == 0
strategy.close("Long")
plot(strategy.opentrades.profit(strategy.opentrades - 1), "Profit of the latest open trade")
Calcular os lucros de todas as transações não liquidadas
Exemplos
strategy("`strategy.opentrades.profit` Example 2", pyramiding = 5)
// Strategy calls to enter 5 long positions every 2 bars.
if bar_index % 2 == 0
strategy.entry("Long", strategy.long, qty = 5)
// Calculate open profit or loss for the open positions.
tradeOpenPL() =>
sumProfit = 0.0
for tradeNo = 0 to strategy.opentrades - 1
sumProfit += strategy.opentrades.profit(tradeNo)
result = sumProfit
plot(tradeOpenPL(), "Profit of all open trades")
Parâmetros
trade_num
(series int) Número de transações não liquidadas. O número da primeira transação é zero.Até logo.
strategy.closedtrades.profit
strategy.openprofit
strategy.netprofit
strategy.grossprofit
Retorna a direção de negociação e o número de contratos em negociações não liquidadas. Se esse valor for > 0, a posição de mercado é multi-headed. Se esse valor for < 0, a posição de mercado é em branco.
strategy.opentrades.size(trade_num)
Exemplos
strategy("`strategy.opentrades.size` Example 1")
// We calculate the max amt of shares we can buy.
amtShares = math.floor(strategy.equity / close)
// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars
if bar_index % 15 == 0
strategy.entry("Long", strategy.long, qty = amtShares)
if bar_index % 20 == 0
strategy.close("Long")
// Plot the number of contracts in the latest open trade.
plot(strategy.opentrades.size(strategy.opentrades - 1), "Amount of contracts in latest open trade")
Calcular a percentagem de lucro médio em transações não liquidadas
Exemplos
strategy("`strategy.opentrades.size` Example 2")
// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars.
if bar_index % 15 == 0
strategy.entry("Long", strategy.long)
if bar_index % 20 == 0
strategy.close("Long")
// Calculate profit for all open trades.
profitPct = 0.0
for tradeNo = 0 to strategy.opentrades - 1
entryP = strategy.opentrades.entry_price(tradeNo)
exitP = close
profitPct += (exitP - entryP) / entryP * strategy.opentrades.size(tradeNo) * 100
// Calculate average profit percent for all open trades.
avgProfitPct = nz(profitPct / strategy.opentrades)
Parâmetros
trade_num
(series int) Número de transações não liquidadas. O número da primeira transação é zero.Até logo.
strategy.closedtrades.size
strategy.position_size
strategy.opentrades
strategy.closedtrades
Retorna o bar_index que já foi inserido na transação de liquidação.
strategy.closedtrades.entry_bar_index(trade_num)
Exemplos
strategy("strategy.closedtrades.entry_bar_index Example")
// Enter long trades on three rising bars; exit on two falling bars.
if ta.rising(close, 3)
strategy.entry("Long", strategy.long)
if ta.falling(close, 2)
strategy.close("Long")
// Function that calculates the average amount of bars in a trade.
avgBarsPerTrade() =>
sumBarsPerTrade = 0
for tradeNo = 0 to strategy.closedtrades - 1
// Loop through all closed trades, starting with the oldest.
sumBarsPerTrade += strategy.closedtrades.exit_bar_index(tradeNo) - strategy.closedtrades.entry_bar_index(tradeNo) + 1
result = nz(sumBarsPerTrade / strategy.closedtrades)
plot(avgBarsPerTrade())
Parâmetros
trade_num
(series int) Número de transação que foi liquidado. O número da primeira transação é zero.Até logo.
strategy.closedtrades.exit_bar_index
strategy.opentrades.entry_bar_index
O preço de saída é o preço de saída de uma transação que já foi liquidada.
strategy.closedtrades.exit_price(trade_num)
Exemplos
strategy("strategy.closedtrades.exit_price Example 1")
// We are creating a long trade every 5 bars
if bar_index % 5 == 0
strategy.entry("Long", strategy.long)
strategy.close("Long")
// Return the exit price from the latest closed trade.
exitPrice = strategy.closedtrades.exit_price(strategy.closedtrades - 1)
plot(exitPrice, "Long exit price")
Calcule a percentagem do lucro médio de todas as transações liquidadas
Exemplos
strategy("strategy.closedtrades.exit_price Example 2")
// Strategy calls to create single short and long trades.
if bar_index == last_bar_index - 15
strategy.entry("Long Entry", strategy.long)
else if bar_index == last_bar_index - 10
strategy.close("Long Entry")
strategy.entry("Short", strategy.short)
else if bar_index == last_bar_index - 5
strategy.close("Short")
// Calculate profit for both closed trades.
profitPct = 0.0
for tradeNo = 0 to strategy.closedtrades - 1
entryP = strategy.closedtrades.entry_price(tradeNo)
exitP = strategy.closedtrades.exit_price(tradeNo)
profitPct += (exitP - entryP) / entryP * strategy.closedtrades.size(tradeNo) * 100
// Calculate average profit percent for both closed trades.
avgProfitPct = nz(profitPct / strategy.closedtrades)
plot(avgProfitPct)
Parâmetros
trade_num
(series int) Número de transação que foi liquidado. O número da primeira transação é zero.Até logo.
strategy.closedtrades.entry_price
Retorna o bar_index que saiu da negociação de liquidação.
strategy.closedtrades.exit_bar_index(trade_num)
Exemplos
strategy("strategy.closedtrades.exit_bar_index Example 1")
// Strategy calls to place a single short trade. We enter the trade at the first bar and exit the trade at 10 bars before the last chart bar.
if bar_index == 0
strategy.entry("Short", strategy.short)
if bar_index == last_bar_index - 10
strategy.close("Short")
// Calculate the amount of bars since the last closed trade.
barsSinceClosed = strategy.closedtrades > 0 ? bar_index - strategy.closedtrades.exit_bar_index(strategy.closedtrades - 1) : na
plot(barsSinceClosed, "Bars since last closed trade")
Calcule o número médio de linhas K por transação.
Exemplos
strategy("strategy.closedtrades.exit_bar_index Example 2")
// Enter long trades on three rising bars; exit on two falling bars.
if ta.rising(close, 3)
strategy.entry("Long", strategy.long)
if ta.falling(close, 2)
strategy.close("Long")
// Function that calculates the average amount of bars per trade.
avgBarsPerTrade() =>
sumBarsPerTrade = 0
for tradeNo = 0 to strategy.closedtrades - 1
// Loop through all closed trades, starting with the oldest.
sumBarsPerTrade += strategy.closedtrades.exit_bar_index(tradeNo) - strategy.closedtrades.entry_bar_index(tradeNo) + 1
result = nz(sumBarsPerTrade / strategy.closedtrades)
plot(avgBarsPerTrade())
Parâmetros
trade_num
(series int) Número de transação que foi liquidado. O número da primeira transação é zero.Até logo.
bar_index
Retorna o id de entrada de transações que já foram liquidadas.
strategy.closedtrades.entry_id(trade_num)
Exemplos
strategy("strategy.closedtrades.entry_id Example", overlay = true)
var isOpen = false
var openIndex = -1
// Enter a short position and close at the previous to last bar.
if not barstate.ishistory and not isOpen
strategy.entry("Short at bar #" + str.tostring(bar_index), strategy.short)
isOpen := true
openIndex := bar_index
if openIndex != -1 and bar_index > openIndex + 100
strategy.close_all()
// Display ID of the last entry position.
if barstate.islastconfirmedhistory
runtime.log("Last Entry ID is: " + strategy.closedtrades.entry_id(strategy.closedtrades - 1))
Retorno de valorRetorna o id de entrada de transações que já foram liquidadas.
Parâmetros
trade_num
(series int) Número de transação que foi liquidado. O número da primeira transação é zero.NotasSe o trade_num não estiver no intervalo, a função retornará na:0 para strategy.closedtrades−1.
Até logo.
strategy.closedtrades.entry_bar_index
strategy.closedtrades.entry_time
O preço de entrada é o preço de entrada de uma transação que já foi liquidada.
strategy.closedtrades.entry_price(trade_num)
Exemplos
strategy("strategy.closedtrades.entry_price Example 1")
// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars.
if bar_index % 15 == 0
strategy.entry("Long", strategy.long)
if bar_index % 20 == 0
strategy.close("Long")
// Return the entry price for the latest entry.
entryPrice = strategy.closedtrades.entry_price(strategy.closedtrades - 1)
plot(entryPrice, "Long entry price")
Calcule a percentagem do lucro médio de todas as transações liquidadas
Exemplos
strategy("strategy.closedtrades.entry_price Example 2")
// Strategy calls to create single short and long trades
if bar_index == last_bar_index - 15
strategy.entry("Long Entry", strategy.long)
else if bar_index == last_bar_index - 10
strategy.close("Long Entry")
strategy.entry("Short", strategy.short)
else if bar_index == last_bar_index - 5
strategy.close("Short")
// Calculate profit for both closed trades.
profitPct = 0.0
for tradeNo = 0 to strategy.closedtrades - 1
entryP = strategy.closedtrades.entry_price(tradeNo)
exitP = strategy.closedtrades.exit_price(tradeNo)
profitPct += (exitP - entryP) / entryP * strategy.closedtrades.size(tradeNo) * 100
// Calculate average profit percent for both closed trades.
avgProfitPct = nz(profitPct / strategy.closedtrades)
plot(avgProfitPct)
Parâmetros
trade_num
(series int) Número de transação que foi liquidado. O número da primeira transação é zero.Até logo.
strategy.closedtrades.exit_price
strategy.closedtrades.size
strategy.closedtrades
Retornar ao tempo do UNIX no qual a transação foi liquidada.
strategy.closedtrades.entry_time(trade_num)
Exemplos
strategy("strategy.closedtrades.entry_time Example", overlay = true)
// Enter long trades on three rising bars; exit on two falling bars.
if ta.rising(close, 3)
strategy.entry("Long", strategy.long)
if ta.falling(close, 2)
strategy.close("Long")
// Calculate the average trade duration
avgTradeDuration() =>
sumTradeDuration = 0
for i = 0 to strategy.closedtrades - 1
sumTradeDuration += strategy.closedtrades.exit_time(i) - strategy.closedtrades.entry_time(i)
result = nz(sumTradeDuration / strategy.closedtrades)
// Display average duration converted to seconds and formatted using 2 decimal points
if barstate.islastconfirmedhistory
runtime.log(str.tostring(avgTradeDuration() / 1000, "#.##") + " seconds")
Parâmetros
trade_num
(series int) Número de transação que foi liquidado. O número da primeira transação é zero.Até logo.
strategy.opentrades.entry_time
strategy.closedtrades.exit_time
time
Retornar os ganhos e perdas de negociações que já foram liquidadas. A perda é representada como negativa.
strategy.closedtrades.profit(trade_num)
Exemplos
strategy("`strategy.closedtrades.profit` Example")
// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars.
if bar_index % 15 == 0
strategy.entry("Long", strategy.long)
if bar_index % 20 == 0
strategy.close("Long")
// Calculate average gross profit by adding the difference between gross profit and commission.
avgGrossProfit() =>
sumGrossProfit = 0.0
for tradeNo = 0 to strategy.closedtrades - 1
sumGrossProfit += strategy.closedtrades.profit(tradeNo) - strategy.closedtrades.commission(tradeNo)
result = nz(sumGrossProfit / strategy.closedtrades)
plot(avgGrossProfit(), "Average gross profit")
Parâmetros
trade_num
(series int) Número de transação que foi liquidado. O número da primeira transação é zero.Até logo.
strategy.opentrades.profit
strategy.closedtrades.commission
Retorna a direção de negociação e o número de contratos em negociações que já estão em liquidação. Se esse valor for > 0, a posição de mercado é multi-head. Se esse valor for < 0, a posição de mercado é em branco.
strategy.closedtrades.size(trade_num)
Exemplos
strategy("`strategy.closedtrades.size` Example 1")
// We calculate the max amt of shares we can buy.
amtShares = math.floor(strategy.equity / close)
// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars
if bar_index % 15 == 0
strategy.entry("Long", strategy.long, qty = amtShares)
if bar_index % 20 == 0
strategy.close("Long")
// Plot the number of contracts traded in the last closed trade.
plot(strategy.closedtrades.size(strategy.closedtrades - 1), "Number of contracts traded")
Calcular a percentagem de lucro médio de negociações de liquidação
Exemplos
strategy("`strategy.closedtrades.size` Example 2")
// Strategy calls to enter long trades every 15 bars and exit long trades every 20 bars.
if bar_index % 15 == 0
strategy.entry("Long", strategy.long)
if bar_index % 20 == 0
strategy.close("Long")
// Calculate profit for both closed trades.
profitPct = 0.0
for tradeNo = 0 to strategy.closedtrades - 1
entryP = strategy.closedtrade
- O que?Como é que é possível que um contrato Bitcoin seja executado simultaneamente em várias transações?
Nuvens levesPor favor, diga-me, o pine pode fazer mais transações, certo?
Lisa20231Obrigado pela documentação detalhada
arteComo é que o script do pine pode usar o simulador do okex na plataforma?
arteIsso equivale a que a estratégia da plataforma tradingview seja copiada diretamente para a plataforma do inventor para ser usada!
Inventor quantificado - sonho pequenoA linguagem PINE só pode executar uma política de variedade única, a política de variedades múltiplas é melhor ou escrever projetos em Python, JavaScript, C++.
Inventor quantificado - sonho pequenoOh, sim, OKX é muito especial, eles têm o mesmo endereço do ambiente analógico e do ambiente real, mas fazem a diferença em outro lugar.
Nuvens levesNão é possível usar o simulador okx............
Inventor quantificado - sonho pequenoEste problema de arquitetura variada não é resolvido, pois cada interface é diferente e a restrição de freqüência de interface não é diferente, o que pode gerar muitos problemas.
Inventor quantificado - sonho pequenoMuito bem, obrigada pela sugestão do Cloudways, por favor, informe a necessidade aqui.
Nuvens levesO JS pode ser melhor adaptado a diferentes maneiras de transação.
Caçadores de tendênciasO preço de fechamento é para cada variedade.
Inventor quantificado - sonho pequenoNão é cortês.
Nuvens levesMuito bem, obrigada.
Inventor quantificado - sonho pequenoOlá, a estratégia de linguagem do PINE é temporária e só pode fazer uma variedade.
Inventor quantificado - sonho pequenoNão tem graça, obrigado pelo seu apoio. A documentação continuará sendo aperfeiçoada.
Inventor quantificado - sonho pequenoSim, eu sei.
Inventor quantificado - sonho pequenoA biblioteca de modelos de linguagem PINE, em que os parâmetros podem ser definidos para alterar o endereço de base do exchange.