Estrutura dos registos das transacções de mercado.
O ID do registo das transacções de mercado, ou, se a interface de troca não fornecer um ID, utilizar um carimbo de hora para preenchê-lo. Identificação cordel Marca de tempo de milissegundos. Tempo Número Preço da transacção. Preço Número Montante da transacção. Montante Número Tipo de encomenda, consultar {@var/ORDER_TYPE/ORDER_TYPE_BUY ORDER_TYPE_BUY}, {@var/ORDER_TYPE/ORDER_TYPE_SELL ORDER_TYPE_SELL}. Tipo Número
A função exchange.GetTrades() retorna uma matriz de Trade ou uma matriz vazia.
Não, não, não, não.
A estrutura do mercado.
Os dados originais retornados pela interface de troca, nenhum atributo está disponível para backtesting.
Informações
Objeto
OSymbol
campo é o código da variedade de negociação definido pela plataforma FMZ.
Symbol
Valor do campo (por exemplo):BTC_USDT
, indicando o par de negociação à vista BTC_USDT.Symbol
Valor do campo (como exemplo) éBTC_USDT.swap
, que representa o contrato perpétuo de propriedade USDT para BTC.Symbol
O valor do campo é (por exemplo):BTC_USDT.BTC-240108-40000-C
, que representa um contrato de opção de compra de BTC em USDT com data de exercício de 8 de janeiro de 2024 e um preço de exercício de 40 000.Símbolo cordel O preço mais alto, ou se a interface de troca não fornecer um preço mais alto de 24 horas, use o preço de venda para preencher. Alto Número O preço mais baixo, ou se a interface de troca não fornecer um preço mais baixo de 24 horas, use o preço de compra para preencher. Baixo Número O momento atual vende um preço. Vender Número O momento atual compra um preço. Comprar Número O último preço da transacção. Último Número Preço aberto de período, se a interface de câmbio não fornecer um preço aberto de período rotativo de 24 horas, então o preço atual é usado para preencher. Aberto Número Se a interface de câmbio não fornecer tais dados, ele será preenchido com os dados disponíveis na interface de câmbio, por exemplo, o valor da transação pode estar em cotaçãoCurrency. Volume Número Tempo de milissegundos. Tempo Número Posições, a maioria das interfaces de troca não fornece esses dados e o valor é 0 quando esses dados não são suportados. OpenInterest Número
A função exchange.GetTicker() retorna uma estrutura de Ticker.
Para os contratos de opção, oexchange.GetTicker()
A chamada da função é propensa a erros. Como a liquidez do mercado de contratos de opções é geralmente pobre, muitas vezes não há ordens pendentes para a primeira compra ou primeira venda.Ticker
campo de estruturaBuy
ouSell
é 0, um aviso de erro será acionado.
Não, não, não, não, não, não.
A estrutura de K-Line Bar, a estrutura OHLC padrão, é usada para desenhar K-lines e indicadores para cálculo e análise.
Marca de tempo de nível de milissegundos, para uma estrutura de registo cujo valor do atributo Time seja o marque de tempo de início do período desta barra de linha K. Tempo Número Preço de abertura. Aberto Número O preço mais alto. Alto Número O preço mais baixo. Baixo Número Preço de encerramento. Fecha. Número Valor da posição, a maioria das interfaces de troca não fornece esses dados, o valor é 0 quando esses dados não são suportados. OpenInterest Número Em princípio, o valor da transação spot é expresso em baseCurrency e o valor da transação do contrato é expresso em número de contratos. Volume Número
A função exchange.GetRecords() retorna uma matriz de registros ou uma matriz vazia. Cada estrutura de registro representa uma barra de linha K, ou seja, uma barra de linha K.
Não, não, não, não.
A estrutura da ordem.
Os dados originais da resposta da interface de intercâmbio, nenhum atributo deste tipo está disponível para backtesting.
Informações
Objeto
OSymbol
Este campo é o código do produto de negociação definido pela plataforma FMZ e o seu formato é consistente com o código do produto de negociação definido pela plataforma FMZ.Symbol
campo da estrutura {@struct/Ticker Ticker}.
Symbol
O valor do campo é (por exemplo):BTC_USDT
, indicando o par de negociação à vista BTC_USDT.Symbol
O valor do campo é (por exemplo):BTC_USDT.swap
, que representa o contrato perpétuo do BTC baseado no padrão USDT.Símbolo
cordel
Order Id, este atributo consiste no código do produto de troca e no ID de pedido original da troca, separados por vírgulas em inglês.Id
formato do par de negociação à vistaETH_USDT
A ordem de troca do OKX é:ETH-USDT,1547130415509278720
- Não.
Identificação
cordel
O preço da ordem, observe que este atributo pode ser 0 ou -1 para ordens de mercado.
Preço
Número
O número de ordens efetuadas, note que este atributo de uma ordem de mercado pode ser um montante e não uma moeda.
Montante
Número
Número de transacções, eventualmente marcado com 0 se a interface de troca não fornecer esses dados.
Transação
Número
Preço médio da transacção, note que algumas bolsas não fornecem estes dados.
Preço médio
Número
O estado da encomenda deve ser indicado em {@var/ORDER_STATE/ORDER_STATE_PENDING ORDER_STATE_PENDING}, {@var/ORDER_STATE/ORDER_STATE_CLOSED ORDER_STATE_CLOSED}, {@var/ORDER_STATE/ORDER_STATE_CANCELED ORDER_STATE_CANCELED}, {@var/ORDER_STATE/ORDER_STATE_UNKNOWN OR_ORDER_STATE_UNKNOWN}.
Situação
Número
Tipo de encomenda, consultar {@var/ORDER_TYPE/ORDER_TYPE_BUY ORDER_TYPE_BUY}, {@var/ORDER_TYPE/ORDER_TYPE_SELL ORDER_TYPE_SELL}.
Tipo
Número
Para a direção de abertura e de encerramento das ordens de contrato, consulte {@var/ORDER_OFFSET/ORDER_OFFSET_OPEN ORDER_OFFSET_OPEN}, {@var/ORDER_OFFSET/ORDER_OFFSET_CLOSE ORDER_OFFSET_CLOSE}.
Compensação
Número
Este atributo em ordens spot é""
Em uma ordem de contrato, este atributo é o código específico do contrato.
Tipo de contrato
cordel
OOrder
estrutura de ordem pode ser devolvido peloexchange.GetOrder()
eexchange.GetOrders()
As funçõesexchange.GetOrders()
função retorna uma matriz doOrder
Se não houver ordem incompleta, ele retorna[]
, que é uma matriz vazia.Status
Propriedade doOrder
A estrutura de ordem pode ser comparada diretamente com constantes comoORDER_STATE_PENDING
para determinar se são iguais e, assim, determinar o estado do pedido.
Para o modo de posição unidirecional, quando for impossível determinar se a ordem é uma ordem de encerramento (redução), oOffset
campo é definido para a direção de abertura por padrão, ou seja,ORDER_OFFSET_OPEN
.
{@fun/Trade/exchange.GetOrder exchange.GetOrder}, {@fun/Trade/exchange.GetOrders exchange.GetOrders}, {@fun/Trade/exchange.GetHistoryOrders exchange.GetHistoryOrders}
Estrutura das ordens em profundidade de mercado.
Preço. Preço Número Quantidade. Montante Número
A função GetDepth (()) retorna uma estrutura de dados na qual os valores de atributos de Bids, Asks são matrizes OrderBook.
Não, não, não, não.
Estrutura da profundidade do mercado.
A matriz de ordens de venda, ou seja, a matriz OrderBook, é ordenada por preço do mais baixo ao mais alto, e a primeira estrutura OrderBook na matriz tem o preço mais baixo. Pergunta. matriz A matriz de ordens de compra, ou seja, a matriz OrderBook, é ordenada por preço do mais alto para o mais baixo, e a primeira estrutura OrderBook na matriz tem o preço mais alto. Oferta matriz Tempo de milissegundos. Tempo Número
A função exchange.GetDepth() retorna uma estrutura Depth.
- Não, não, não, não.
A estrutura das informações da conta.
Os dados originais retornados pela interface de troca, nenhum atributo está disponível para backtesting.
Informações
Objeto
O número de moedas denominadas disponíveis, no local, se o par de negociação for BTC_USDT, o saldo refere-se ao número de USDT atualmente disponíveis. No contrato U-standard, o saldo refere-se ao montante da margem disponível (USDT, quoteCurrency).
Balanço
Número
Valor dos activos congelados quando a ordem não é executada.
Frigorífico Balanço
Número
O número de moedas de negociação disponíveis, no local, se o par de negociação for BTC_USDT, Stocks refere-se ao número de BTC atualmente disponíveis. Stocks refere-se ao número de margem disponível (moeda, baseCurrency) em um contrato baseado em moeda.
Resíduos
Número
Valor dos activos congelados quando a ordem não é executada.
Frigoríficos
Número
Apenas os objectos de troca de futuros suportam este campo.Equity
Se a interface de câmbio não fornecer dados relevantes, este campo é 0.
Capital próprio
Número
Este campo só é suportado por objetos de troca de futuros.UPnL
campo é a soma doLucro e perdas não realizadosde todas as posições abertas pela margem da conta de futuros nas configurações do contrato em curso.
UPnL Número
A função exchange.GetAccount (() retorna uma estrutura de conta. Os dados na estrutura retornada dependem do par de negociação atualmente definido, código de contrato.
Não, não, não, não.
A estrutura das informações sobre activos em moeda específica.
Nomes definidos pela bolsa para ativos de criptomoedas, que podem variar de uma bolsa para outra para a mesma criptomoeda, por exemplo:BTC
pode ser chamadoXBT
em algumas trocas.
Moeda
cordel
Saldo disponível de activos em moeda.
Montante
Número
Número de activos congelados na moeda.
Número congelado
Número
OFrozenAmount
Os activos de divisas podem incluir os activos bloqueados para ordens não executadas e a parte de margem bloqueada para posições de futuros.
Não, não, não, não.
Estrutura das informações sobre as posições do contrato.
Os dados originais retornados pela interface de troca, nenhum atributo está disponível para backtesting.
Informações
Objeto
OSymbol
Este campo é o código do produto de negociação definido pela plataforma FMZ e o seu formato é consistente com o código do produto de negociação definido pela plataforma FMZ.Symbol
campo da estrutura {@struct/Ticker Ticker}.
Symbol
O valor do campo é (por exemplo):BTC_USDT
, indicando o par de negociação à vista BTC_USDT.Symbol
O valor do campo é (por exemplo):BTC_USDT.swap
, que representa o contrato perpétuo do BTC baseado no padrão USDT.Símbolo cordel Tamanho da barra de posição, preenchido por cálculo se a interface de troca não fornecer esses dados, pode ser impreciso. Nível de margem Número O volume da posição, que é geralmente um número inteiro positivo (número de números de contrato), deve ser observado que as especificações do contrato, como multiplicadores, valores, etc., podem diferir de uma bolsa para outra. Montante Número Número de posições temporariamente congeladas quando a ordem encerrada não é preenchida. Número congelado Número Preço médio da posição, que é, em princípio, o preço médio da posição como um todo (não participa na liquidação). Preço Número O lucro/perda flutuante da posição é, em princípio, o lucro/perda não realizado da posição, se os dados não forem fornecidos pela interface de câmbio, serão preenchidos com outros dados de lucro/perda da interface de câmbio. Lucro Número Tipo de posição, ver {@var/POSITION_DIRECTION/PD_LONG PD_LONG}, {@var/POSITION_DIRECTION/PD_SHORT PD_SHORT}. Tipo Número Código do contrato, ver a descrição da função {@fun/Futures/exchange.SetContractType exchange.SetContractType} para mais detalhes. Tipo de contrato cordel Margem ocupada pela posição, preenchida com 0, se a interface de troca não fornecer esses dados. Margem Número
A função exchange.GetPositions() retorna uma matriz de Posições ou uma matriz vazia. Para futuros de criptomoeda, é importante notar que a matriz de estrutura de posição devolvida pela função exchange.GetPositions(). Para os atributos FrozenAmount, Profit e Margin na estrutura de dados de posição, como os dados fornecidos pela exchange não são uniformes, a interface GetPositions(), a definição dos dados devolvidos pelo objeto de troca pode ser diferente. Por exemplo, algumas bolsas não têm dados de congelamento de posição nos dados de posição, então o FrozenAmount é 0.
- O que é que estás a fazer?
Estrutura das informações de mercado sobre as variedades comercializadas.
Tomando valores tais como"btcusdt"
, oSymbol
O formato e a definição deste atributo são diferentes do nome original da variedade negociada na bolsa.Symbol
campo da estrutura {@struct/Ticker Ticker}.
Símbolo
cordel
Tomando valores tais como"BTC"
, oBaseAsset
O campo registra o nome da moeda negociada (ou seja: baseCurrency), que é uniformemente maiúscula.
Ativos de base
cordel
Tomando valores tais como"USDT"
, oQuoteAsset
O campo regista o nome da moeda denominada (ou seja: quoteCurrency), que é uniformemente em maiúscula.
Ativos de cotação
cordel
Tomando valores tais como0.01
, oTickSize
campo registra o valor da menor alteração no preço do item negociado na bolsa.
TickSize
Número
Tomando valores tais como0.01
, oAmountSize
O campo registra o valor da alteração mínima do volume de ordens colocadas na bolsa para essa negociação.
Quantidade Tamanho
Número
Tomando valores tais como2
, oPricePrecision
O campo registra a precisão do preço do item negociado na bolsa, indicando que o preço é preciso a 2 decimais.
PreçoPrecisione
Número
Tomando valores tais como3
, oAmountPrecision
Este campo regista a precisão das ordens colocadas na bolsa para a variedade negociada, indicando que as ordens são precisas até três casas decimais.
NúmeroPrecisione
Número
Tomando valores tais como0.001
, oMinQty
o campo regista o tamanho mínimo da ordem na bolsa para essa transação.
MinQty
Número
Tomando valores tais como1000
, oMaxQty
O campo regista o número máximo de ordens que podem ser colocadas na bolsa para essa variedade de transações.
Quantidade máxima
Número
Tomando valores tais como5
, oMinNotional
Registre o montante mínimo da ordem colocada na bolsa para essa variedade de transações.
Min Nocional
Número
Tomando valores tais como9999999
, oMaxNotional
O campo regista o montante máximo de ordens colocadas na bolsa para essa variedade de transações.
Max Nocional
Número
O campoCtVal
registar o valor de um contrato do produto negociado na bolsa, na moeda registada noCtValCcy
- por exemplo:CtVal
é 0,01CtValCcy
é"BTC"
, o que significa que um contrato vale 0,01 BTC.
CtVal
Número
O campoCtValCcy
Regista a unidade de valor de um contrato.BTC
, USD
, ETH
, etc.
CtValCy
Número
O campoInfo
Regista os dados brutos das espécies devolvidos pela interface de informação de mercado da bolsa.
Informações
Objeto
A função exchange.GetMarkets() retorna um dicionário que contém esteMarket
estrutura.
Devido ao nível diferente de suporte aos dados de informação de mercado por cada exchange, os campos que não são suportados pela exchange serão ignorados.Info
field.
Não, não, não, não.
A estrutura da informação da taxa de financiamento do produto de negociação.
Os dados brutos são devolvidos quando a interface de taxa de financiamento de câmbio de futuros de criptomoedas é chamada.
Informações
Objeto
OSymbol
campo é o código do produto de negociação definido pela plataforma FMZ.
Símbolo
cordel
Intervalo de taxa de financiamento, em milissegundos.28800000
significa intervalo de 8 horas.
Intervalo
Número
A data de início do próximo período de taxa de financiamento (tempo de liquidação deste período), em milissegundos.
Tempo
Número
A taxa de financiamento que será utilizada para esta liquidação.
Taxa
Número
As taxas de financiamento de contratos perpétuos de diferentes bolsas de futuros têm diferentes métodos e mecanismos de cálculo e os ciclos de liquidação são de 1 hora, 4 horas, 8 horas e um dia.
A taxa de financiamento corrente dos contratos perpétuos nas bolsas de futuros tem um valor fixo e um valor flutuante calculado em tempo real.
ORate
campo é o valor da taxa de financiamento sem%
. Se você quiser convertê-lo para um valor com%
, você pode multiplicá-lo por 100 e adicionar o%
no final.
- O que é? - O quê?
Esta estrutura JSON é usada para configurar os parâmetros da função HttpQuery e da função HttpQuery_Go para enviar a solicitação Http.
Método de pedido, por exemplo:GET
, POST
, etc.
Método
cordel
Por exemplo, em uma solicitação POST, o corpo pode conter dados de formulário, JSON, texto, etc.
corpo
cordel
Codificação do conjunto de caracteres. Por exemplo, especifique a codificação dos dados de texto no corpo como:"UTF-8"
- Não.
Charset
cordel
Um cookie é um pequeno pedaço de dados usado para armazenar e trocar informações de estado entre um cliente (geralmente um navegador) e um servidor.
biscoito
cordel
Usado para simular a impressão digital do navegador.
Perfil
cordel
Quando definido como verdadeiro, a chamada da função HttpQuery retorna a mensagem de resposta completa.
debug
Bool
As informações de cabeçalho de solicitação existem na forma de pares chave-valor (estrutura JSON) e são usadas para transmitir várias informações, como tipo de conteúdo, informações de autenticação, controle de cache, etc.
cabeçalhos
JSON
Configuração de tempo de espera.
tempo de espera
Número
Exemplo de utilização:
function main() {
var options = {
method: "POST",
body: "a=10&b=20&c=30",
charset: "UTF-8",
cookie: "session_id=12345; lang=en",
profile: "chrome_103",
debug: false,
headers: {"TEST-HTTP-QUERY": "123"},
timeout: 1000
}
var ret = HttpQuery("http://127.0.0.1:8080", options)
Log(ret)
}
A mensagem http enviada quando o código acima é executado:
POST / HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Cookie: session_id=12345; lang=en
Host: 127.0.0.1:8080
Test-Http-Query: 123
Transfer-Encoding: chunked
User-Agent: Mozilla/5.0 (Macintosh; ...
Accept-Encoding: gzip, deflate, br
e
a=10&b=20&c=30
0
{@fun/Global/HttpQuery HttpQuery}, {@fun/Global/HttpQuery_Go HttpQuery_Go}
Esta estrutura JSON é a estrutura de dados devolvida pela função HttpQuery no modo de depuração quando o campo de depuração nooptions
Parâmetro de estrutura é verdadeiro.
Código de estado http Código de estado Número Solicitar informações de cabeçalho. Título JSON Informações sobre cookies. Cookies matriz Informações completas sobre o caminho da solicitação. Traça JSON Comprimento da mensagem Duração Número Conteúdo da mensagem. Corpo cordel
Um exemplo da estrutura de dados JSON retornada é:
{
"StatusCode": 302,
"Header": {
"Content-Type": ["text/html"],
// ...
},
"Cookies": [{
// ...
}],
"Trace": {},
"Length": 154,
"Body": "..."
}
{@fun/Global/HttpQuery HttpQuery}, {@fun/Global/HttpQuery_Go HttpQuery_Go}
Esta estrutura JSON é utilizada para configurar o conteúdo da tabela exibido na barra de estado da estratégia.
Usado para definir o tipo de interface do usuário e os controles a serem analisados e exibidos.table
- Não.
Tipo
cordel
Usado para definir o título da tabela da barra de estado.
Título
cordel
Usado para definir os títulos das colunas da tabela da barra de status.
Cebolinha
matriz
Usado para definir os dados de linha da tabela de barras de estado. O primeiro elemento da matriz de linhas (matriz bidimensional) também é uma estrutura de matriz. O comprimento desta estrutura de matriz deve ser consistente com o número de colunas da tabela (os elementos na estrutura da matriz correspondem aos nomes das colunas da tabela um por um), ou seja, a primeira linha de dados na tabela.
linhas
matriz
function main() {
var tbl = {
type: "table",
title: "title",
cols: ["Column 1", "Column 2", "Column 3"],
rows: [
["Row 1 Column 1", "Row 1 Column 2", "Row 1 Column 3"],
["Row 2 Column 1", "Row 2 Column 2", "Row 2 Column 3"],
["Row 3 Column 1", "Row 3 Column 2", "Row 3 Column 3"],
]
}
LogStatus("`" + JSON.stringify(tbl) + "`")
}
Não, não, não, não.
Esta estrutura JSON é usada para configurar o controle do botão na barra de status. A estrutura JSON do controle do botão pode ser incorporada na estrutura JSON da tabela de barra de status. Esta estrutura é uma estrutura de versão antiga, e a plataforma ainda é compatível. Recomenda-se usar a versão mais recente da estrutura JSON do botão. Exemplo de construção de um comando do botão da barra de estado (depois de o botão ser acionado e clicado, a caixa pop-up contém um único comando de entrada, que é construído através do campo de entrada):
{
"type": "button",
"cmd": "open",
"name": "opening a position",
"input": {
"name": "number of opening positions",
"type": "number",
"defValue": 1
}
}
Os controles na caixa pop-up desencadeada clicando no botão da barra de estado são definidos através doinput
ougroup
.
Para os comandos de botão, a configuração fixa é:button
- Não.
Tipo
cordel
Configurações do tipo de botão
Classe
cordel
O texto no comando do botão, ou seja, o nome do botão.
nome
cordel
O conteúdo do comando interativo enviado para a estratégia quando o controle do botão desencadeia uma operação de clique.
cmd
cordel
A descrição do comando do botão. A descrição é exibida quando o mouse é colocado no botão na barra de status.
Descrição
cordel
Configura o botão para desativado (verdadeiro) / habilitado (falso).
deficientes
Bool
Quando se constrói um botão da barra de estado para interação, a entrada de dados também é suportada.GetCommand()
adicionar oinput
item para a estrutura de dados JSON do comando do botão na barra de status para configurar o comando de entrada na caixa pop-up exibida quando o botão é acionado.
Por exemplo, para definir o valor doinput
Campo:
{
"name": "Number of opening positions",
"type": "number",
"defValue": 1,
"description": "test",
}
Descrição de cada campo na estrutura JSON acima:
"number"
- Controle de entrada numérica."string"
- Controle de entrada de string."selected"
- Controle de caixa suspensa."boolean"
Mudança de comando."input": {"name": "Opening quantity", "type": "selected", "defValue": "A|B|C"}
, a descrição textual das opções da caixa suspensa é definida em A, B, C.Para os campos alargados pelo controlo do tipo da caixa suspensa:
{text: "description", value: "value"}
Use o campo defValue para definir a opção padrão, que pode ser múltiplas seleções.entrada
JSON
Oinput
campo configura um controle na caixa pop-up que aparece depois que o botão da barra de status é acionado clicando.group
einput
A função principal do sistema é a configuração de um grupo de comandos.group
ter a mesma estrutura de dados que ainput
Valor do campo.input
field.
grupo matriz
Um exemplo declass
valor da estrutura JSON de um botão na barra de estado:
function main() {
var table = {
type: "table",
title: "Status bar button style",
cols: ["Default", "Original", "Success", "Information", "Warning", "Danger"],
rows: [
[
{"type":"button", "class": "btn btn-xs btn-default", "name": "Default"},
{"type":"button", "class": "btn btn-xs btn-primary", "name": "Original"},
{"type":"button", "class": "btn btn-xs btn-success", "name": "Success"},
{"type":"button", "class": "btn btn-xs btn-info", "name": "Information"},
{"type":"button", "class": "btn btn-xs btn-warning", "name": "Warning"},
{"type":"button", "class": "btn btn-xs btn-danger", "name": "Danger"}
]
]
}
LogStatus("`" + JSON.stringify(table) + "`")
}
Exemplo de utilização dogroup
campo com oinput
Campo:
function main() {
// The drop-down box control in the page triggered by the testBtn1 button uses the options field to set options and the defValue field to set the default options. This is different from other examples in this chapter that directly use defValue to set options.
var testBtn1 = {
type: "button",
name: "testBtn1",
cmd: "cmdTestBtn1",
input: {name: "testBtn1ComboBox", type: "selected", options: ["A", "B"], defValue: 1}
}
/*
Status bar button control (set input field implementation) testBtn2 button triggered by the page in the drop-down box control using the options field to set the options, options field in the options field not only supports the string,
it also supports the use of ```{text: "description", value: "value"}``` structure. Use the defValue field to set the default option. The default option can be multiple selection (multiple selection is achieved through an array structure). Multiple selection requires setting the additional field multiple to true.
*/
var testBtn2 = {
type: "button",
name: "testBtn2",
cmd: "cmdTestBtn2",
input: {
name: "testBtn2MultiComboBox",
type: "selected",
description: "Implementing multiple selection in drop-down box",
options: [{text: "Option A", value: "A"}, {text: "Option B", value: "B"}, {text: "Option C", value: "C"}],
defValue: ["A", "C"],
multiple: true
}
}
// Status bar grouping button control (set group field implementation) testBtn3 button triggered by the page in the drop-down box control using the options field to set options, also supports the direct use of defValue set options.
var testBtn3 = {
type: "button",
name: "testBtn3",
cmd: "cmdTestBtn3",
group: [
{name: "comboBox1", label: "labelComboBox1", description: "Drop-down box 1", type: "selected", defValue: 1, options: ["A", "B"]},
{name: "comboBox2", label: "labelComboBox2", description: "Drop-down box 2", type: "selected", defValue: "A|B"},
{name: "comboBox3", label: "labelComboBox3", description: "Drop-down box 3", type: "selected", defValue: [0, 2], multiple: true, options: ["A", "B", "C"]},
{
name: "comboBox4",
label: "labelComboBox4",
description: "Drop-down box 4",
type: "selected",
defValue: ["A", "C"],
multiple: true,
options: [{text: "Option A", value: "A"}, {text: "Option B", value: "B"}, {text: "Option C", value: "C"}, {text: "Option D", value: "D"}]
}
]
}
while (true) {
LogStatus("`" + JSON.stringify(testBtn1) + "`\n", "`" + JSON.stringify(testBtn2) + "`\n", "`" + JSON.stringify(testBtn3) + "`\n")
var cmd = GetCommand()
if (cmd) {
Log(cmd)
}
Sleep(5000)
}
}
Não, não, não, não.
Esta estrutura JSON é usada para configurar o controle do botão na barra de status. A estrutura JSON do controle do botão pode ser incorporada na estrutura JSON da tabela de barra de status. Exemplo de construção de um comando do botão da barra de estado (depois de o botão ser acionado e clicado, a caixa pop-up contém vários controles de entrada, que são construídos através do campo de grupo):
{
"type": "button",
"cmd": "open",
"name": "Open a position and place an order",
"group": [{
"type": "selected",
"name": "tradeType",
"label": "order type",
"description": "market order, limit order",
"default": 0,
"group": "trading setup",
"settings": {
"options": ["market order", "limit order"],
"required": true,
}
}, {
"type": "selected",
"name": "direction",
"label": "trading direction",
"description": "buy, sell",
"default": "buy",
"group": "trading setup",
"settings": {
"render": "segment",
"required": true,
"options": [{"name": "buy", "value": "buy"}, {"name": "sell", "value": "sell"}],
}
}, {
"type": "number",
"name": "price",
"label": "price",
"description": "order price",
"group": "trading setup",
"filter": "tradeType==1",
"settings": {
"required": true,
}
}, {
"type": "number",
"name": "amount",
"label": "order quantity",
"description": "order quantity",
"group": "trading setup",
"settings": {
"required": true,
}
}],
}
Os controles na caixa pop-up desencadeada clicando no botão da barra de estado são definidos através doinput
ougroup
.
Para os comandos de botão, a configuração fixa é:button
- Não.
Tipo
cordel
O texto no comando do botão, ou seja, o nome do botão.
nome
cordel
O conteúdo do comando interativo enviado para a estratégia quando o controle do botão desencadeia uma operação de clique.
cmd
cordel
Quando se constrói um botão da barra de estado para interação, a entrada de dados também é suportada.GetCommand()
adicionar oinput
item para a estrutura de dados JSON do comando do botão na barra de status para configurar o comando de entrada na caixa pop-up exibida quando o botão é acionado.
Em comparação com a versão antiga da estrutura de entrada, a nova versão tem alguns novos campos e alterações:
{
"type": "selected",
"name": "test",
"label": "topic",
"description": "desc",
"default": 1,
"filter": "a>1",
"group": "group1",
"settings": { ... }, // Component configuration
}
Descrição e explicação de cada campo na estrutura JSON acima:
Tipo
Tipo de comando (campo obrigatório), suporta as seguintes definições:"number"
caixa de entrada numérica,"string"
caixa de entrada de string,"selected"
caixa suspensa,"boolean"
Troque de comando.
nome Se a estrutura JSON atual for o valor do campo do campo de entrada, quando o campo de rótulo não estiver definido, o nome é o título do controle na caixa pop-up que aparece após clicar no botão da barra de status. Se a estrutura JSON atual for um elemento no valor do campo (estrutura de matriz) do campo de grupo, o nome não é usado como título do controle. O campo de nome é usado para indicar o nome do campo do conteúdo da entrada do controle. Por exemplo, um trecho do campo de grupo é usado como ilustração:
var testBtn3 = {
type: "button",
name: "testBtn3",
cmd: "cmdTestBtn3",
group: [
{name: "comboBox1", label: "labelComboBox1", description: "Drop-down box 1", type: "selected", defValue: 1, options: ["A", "B"]},
{name: "comboBox2", label: "labelComboBox2", description: "Drop-down box 2", type: "selected", defValue: "A|B"},
{name: "comboBox3", label: "labelComboBox3", description: "Drop-down box 3", type: "selected", defValue: [0, 2], multiple: true, options: ["A", "B", "C"]},
{
name: "comboBox4",
label: "labelComboBox4",
description: "Drop-down box 4",
type: "selected",
defValue: ["A", "C"],
multiple: true,
options: [{text: "Option A", value: "A"}, {text: "Option B", value: "B"}, {text: "Option C", value: "C"}, {text: "Option D", value: "D"}]
}
]
}
De acordo com este trecho, se o botão da barra de status desencadear uma interação, uma caixa pop-up aparecerá com 4 controles, todos eles controles de caixa suspensa.cmdTestBtn3:{"comboBox1":1,"comboBox2":0,"comboBox3":[0,2],"comboBox4":["A","C"]}
- Não.
O valor de nome na estrutura JSON é usado como o nome do campo da informação interativa devolvida, por exemplo: comboBox1, comboBox2, etc.
etiqueta Usado para definir o título do controlo.
Descrição Descrição do controle. Se a estrutura JSON atual for um elemento no valor do campo (estrutura de matriz) do campo de grupo, e o campo de rótulo não for definido, a descrição é o título do controle na caixa pop-up que aparece após o botão da barra de status ser clicado.
padrão Valor por defeito do comando.
filtro Selector, usado para ocultar controles. Não definir este campo significa que não há filtragem (exibir controles); quando este campo é definido, não ocorre filtragem (exibir controles) quando a expressão é verdadeira. Quando a expressão é falsa, ocorre filtragem (não exibir controles)
grupo Utilizado para controlar o agrupamento de controles, que podem ser dobrados.
configurações Configuração de componentes, o controle tem uma variedade de opções de interface do usuário, use esta opção para fazer configurações específicas.
settings:{
multiple:true,
customizable:true,
options:[{name:'xxx|yyy',value:0}]
}
Configurações:
Configurações.requeridas: Se é necessário.
configurações.disabled: Desativar ou não.
settings.min: válido quando type=number, indicando o valor mínimo ou o comprimento mínimo de uma cadeia.
settings.max: válido quando type=number, indicando o valor máximo ou o comprimento máximo de uma cadeia.
configurações.step: válido quando type=number e render=slider, indicando o comprimento do passo.
settings.multiple: válido quando tipo= selecionado, indicando que são suportadas seleções múltiplas.
settings.customizable: É válido quando o tipo = selecionado, indicando que a personalização é suportada; os usuários podem editar e adicionar novas opções diretamente no controle da caixa suspensa.
settings.options: válido quando o tipo= for selecionado, indicando o formato de dados da opção do selector: [
entrada
JSON
Oinput
campo configura um controle na caixa pop-up que aparece depois que o botão da barra de status é acionado clicando.group
einput
A função principal do sistema é a configuração de um grupo de comandos.group
ter a mesma estrutura de dados que ainput
Valor do campo.input
field.
grupo matriz
Suporte para configurações bilíngues:
{
type:'selected',
name:'test',
label:'选项|options',
description:'描述|description',
default:0, // Here, the default value is set to 0, which means the value in the option {name:'xxx|yyy',value:0}
filter:'a>1&&a<10',
group:'分组|group',
settings:{
multiple:true,
customizable:true,
options:[{name:'xxx|yyy',value:0}]
}
}
Não, não, não, não.
Este JSON é usado para definir as informações de configuração do gráfico da função de desenho personalizadoChart()
A biblioteca de gráficos usada é Highcharts. Somente alguns campos de configuração básicos são listados aqui.
Campo de extensão da plataforma. definido como verdadeiro para usar gráficos Highstocks; definido como falso para usar gráficos Highcharts.
__isPropriedade cordel
{
layout: 'single', // Not participating in grouping, displayed separately, default is group 'group'
height: 300, // Specify height
}
Extensão JSON Título do gráfico Título cordel Configuração do eixo X. xEixo JSON Configuração do eixo Y. eixo y JSON Série de dados gráficos. Série JSON
Um exemplo de desenho simples:
// This chart is an object in JavaScript language. Before using the Chart function, we need to declare an object variable chart to configure the chart.
var chart = {
// This field marks whether the chart is a general chart. If you are interested, you can change it to false and run it.
__isStock: true,
// Zoom tool
tooltip: {xDateFormat: '%Y-%m-%d %H:%M:%S, %A'},
// title
title : { text : 'Price difference analysis chart'},
// Select range
rangeSelector: {
buttons: [{type: 'hour',count: 1, text: '1h'}, {type: 'hour',count: 3, text: '3h'}, {type: 'hour', count: 8, text: '8h'}, {type: 'all',text: 'All'}],
selected: 0,
inputEnabled: false
},
// The horizontal axis of the coordinate axis is: x-axis, and the current setting type is: time
xAxis: { type: 'datetime'},
// The vertical axis of the coordinate axis is: the y-axis, the default value is adjusted according to the data size
yAxis : {
// title
title: {text: 'Price difference'},
// Whether to enable the right vertical axis
opposite: false
},
// Data series, this property saves each data series (line, K-line chart, label, etc.)
series : [
// The index is 0, and the data array stores the data of the index series.
{name : "line1", id : "line 1,buy1Price", data : []},
// The index is 1, dashStyle:'shortdash' is set, that is, a dashed line is set
{name : "line2", id : "line 2,lastPrice", dashStyle : 'shortdash', data : []}
]
}
function main(){
// Call the Chart function to initialize the chart
var ObjChart = Chart(chart)
// Clear
ObjChart.reset()
while(true){
// Get the timestamp of this poll, which is a millisecond timestamp. Used to determine the position of the X-axis written to the chart
var nowTime = new Date().getTime()
// Get market data
var ticker = _C(exchange.GetTicker)
// Get the buy price from the return value of the market data
var buy1Price = ticker.Buy
// Get the last transaction price. In order to prevent the two lines from overlapping, we add 1.
var lastPrice = ticker.Last + 1
// Use the timestamp as the X value and the buy price as the Y value to pass into the data sequence of index 0
ObjChart.add(0, [nowTime, buy1Price])
// Same as above
ObjChart.add(1, [nowTime, lastPrice])
Sleep(2000)
}
}
Não, não, não, não.
Este JSON é usado para definir as informações de configuração do gráfico da função de desenho personalizadoKLineChart
. Somente alguns campos de configuração básicos são listados aqui.
Se desenhar no gráfico principal. sobreposição Bool Configuração do eixo X. xEixo JSON Configuração do eixo Y. eixo y JSON Configuração do gráfico de velas. candeia JSON
Por favor, consulteArtigo especial sobre o desenho de gráficos usando a função KLineChart.
Não, não, não, não.
O JSON é utilizado para definir os dados a serem carregados peloexchange.SetData()
Os dados JSON são uma estrutura de matriz, em que cada elemento é também uma matriz, ou seja,[time, data]
.
O carimbo de data dos dados, marcando a data desses dados.
tempo
Número
dados é um pedaço de dados correspondente a um determinado tempo nos dados carregados peloexchange.SetData()
A estratégia é executada, aexchange.GetData()
Função obtém os dados com o carimbo de hora correspondente de acordo com a hora atual.
dados string, número, bool, objeto, matriz, etc.
Um exemplo de carregamento de dados no sistema de backtesting e recuperação de dados quando o backtest de estratégia está sendo executado:
/*backtest
start: 2020-01-21 00:00:00
end: 2020-02-12 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Bitfinex","currency":"BTC_USD"}]
*/
function main() {
exchange.SetData("test", [[1579536000000, _D(1579536000000)], [1579622400000, _D(1579622400000)], [1579708800000, _D(1579708800000)]])
while(true) {
Log(exchange.GetData("test"))
Sleep(1000 * 60 * 60 * 24)
}
}
Não, não, não, não.
Este JSON é a estrutura de dados devolvida peloEventLoop()
AEventLoop()
Monitores de funções: 1. Qualquer evento de dados legível pelo WebSocket; 2. Eventos de conclusão de tarefas simultâneos com as funções exchange.Go() e HttpQuery_Go(); 3. Eventos de mensagem enviados em threads criados pelothreading.Thread()
função na estratégia da linguagem JavaScript.
Número de sequência do evento. Seq Número Nome do evento. Evento cordel Identificador de thread do evento. - Não. Número Índice de eventos. Índice Número Nano-horário. Nano Número
Utilize oexchange.Go()
função para fazer solicitações simultâneas e a estrutura de dados do evento devolvido peloEventLoop()
function.
{
"Seq":1,
"Event":"Exchange_GetTrades",
"ThreadId":0,
"Index":3,
"Nano":1682068771309583400
}
Na linha executada simultaneamente da estratégia da linguagem JavaScript (criada pelothreading.Thread()
Função), quando opostMessage()
função do objeto do thread é usado para enviar uma mensagem, oEventLoop()
A função no tópico que recebe a mensagem monitorará a seguinte estrutura de dados de eventos:
{
"Seq":4,
"Event":"thread",
"ThreadId":1,
"Index":0,
"Nano":1727592066508674000
}
Não, não, não, não.
Este JSON é a estrutura de dados devolvida peloDBExec()
função; também é devolvido quando executar uma instrução SQL usando oexec()
método do objeto criado peloDial()
function.
Os nomes das colunas dos dados a serem consultados, uma matriz de strings. colunas matriz O valor do campo de valores é uma matriz bidimensional, onde cada elemento é uma matriz e um registro de dados. valores matriz
Exemplo de consulta de dados na base de dados:
{
"columns":["TS","HIGH","OPEN","LOW","CLOSE","VOLUME"],
"values":[
[1518970320000,100,99.1,90,100,12345.6],
[1518960320000,100,99.1,90,100,12345.6]
]
}
Não, não, não, não.
Este JSON é a estrutura de dados devolvida pela função membrojoin()
doThread
Objeto, que salva algumas informações sobre tópicos concorrentes noJavaScript
Estratégia linguísticaThread
Objeto refere-se ao objeto do fio, que é criado porthreading.Thread()
.
Identificação do fio. Identificação Número Se o fio é forçado a terminar. encerrado Bool O tempo de execução do fio em nanossegundos. decorrido Número O valor de retorno da função thread. ret Número
O código a seguir testa o mecanismo de timeout dojoin()
Função doThread
Objeto e imprime o valor de retorno dojoin()
function.
function testFunc() {
for (var i = 0; i < 5; i++) {
Log(i)
Sleep(300)
}
}
function main() {
var t1 = threading.Thread(testFunc)
Log(t1.join(1000)) // undefined
Log(t1.join()) // {"id":1,"terminated":false,"elapsed":1506864000}
} ```
{@fun/Threads/Thread/join join}
Funções integradas
Variaveis integradas