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

Estruturas

Comércio

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.

Carrapatos

A estrutura do mercado.

Os dados originais retornados pela interface de troca, nenhum atributo está disponível para backtesting. Informações Objeto OSymbolcampo é o código da variedade de negociação definido pela plataforma FMZ.

  • Para o objecto de troca à vista, o formato doSymbolValor do campo (por exemplo):BTC_USDT, indicando o par de negociação à vista BTC_USDT.
  • Para o objecto de troca de futuros, o formato doSymbolValor do campo (como exemplo) éBTC_USDT.swap, que representa o contrato perpétuo de propriedade USDT para BTC.
  • Para os objectos de câmbio de futuros, o formato doSymbolO 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.Tickercampo de estruturaBuyouSellé 0, um aviso de erro será acionado.

Não, não, não, não, não, não.

Registo

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.

Ordem

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 OSymbolEste 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.Symbolcampo da estrutura {@struct/Ticker Ticker}.

  • Para os objectos de troca à vista, o formato doSymbolO valor do campo é (por exemplo):BTC_USDT, indicando o par de negociação à vista BTC_USDT.
  • Para os objectos de câmbio de futuros, o formato doSymbolO 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.Idformato do par de negociação à vistaETH_USDTA 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

OOrderestrutura de ordem pode ser devolvido peloexchange.GetOrder()eexchange.GetOrders()As funçõesexchange.GetOrders()função retorna uma matriz doOrderSe não houver ordem incompleta, ele retorna[], que é uma matriz vazia.StatusPropriedade doOrderA estrutura de ordem pode ser comparada diretamente com constantes comoORDER_STATE_PENDINGpara 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), oOffsetcampo é 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}

Livro de Encomendas

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.

Profundidade

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.

Conta

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.EquitySe 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.UPnLcampo é 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.

Ativos

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:BTCpode ser chamadoXBTem 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

OFrozenAmountOs 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.

Posiçã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 OSymbolEste 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.Symbolcampo da estrutura {@struct/Ticker Ticker}.

  • Para os objectos de troca à vista, o formato doSymbolO valor do campo é (por exemplo):BTC_USDT, indicando o par de negociação à vista BTC_USDT.
  • Para os objectos de câmbio de futuros, o formato doSymbolO 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?

Mercado

Estrutura das informações de mercado sobre as variedades comercializadas.

Tomando valores tais como"btcusdt", oSymbolO formato e a definição deste atributo são diferentes do nome original da variedade negociada na bolsa.Symbolcampo da estrutura {@struct/Ticker Ticker}. Símbolo cordel Tomando valores tais como"BTC", oBaseAssetO campo registra o nome da moeda negociada (ou seja: baseCurrency), que é uniformemente maiúscula. Ativos de base cordel Tomando valores tais como"USDT", oQuoteAssetO 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, oTickSizecampo registra o valor da menor alteração no preço do item negociado na bolsa. TickSize Número Tomando valores tais como0.01, oAmountSizeO 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, oPricePrecisionO 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, oAmountPrecisionEste 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, oMinQtyo campo regista o tamanho mínimo da ordem na bolsa para essa transação. MinQty Número Tomando valores tais como1000, oMaxQtyO 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, oMinNotionalRegistre o montante mínimo da ordem colocada na bolsa para essa variedade de transações. Min Nocional Número Tomando valores tais como9999999, oMaxNotionalO campo regista o montante máximo de ordens colocadas na bolsa para essa variedade de transações. Max Nocional Número O campoCtValregistar 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 campoCtValCcyRegista a unidade de valor de um contrato.BTC, USD, ETH, etc. CtValCy Número O campoInfoRegista 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 esteMarketestrutura. 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.

Financiamento

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 OSymbolcampo é o código do produto de negociação definido pela plataforma FMZ. Símbolo cordel Intervalo de taxa de financiamento, em milissegundos.28800000significa 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. ORatecampo é 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ê?

Outras estruturas

HttpQuery-opções

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}

HttpQuery-return

Esta estrutura JSON é a estrutura de dados devolvida pela função HttpQuery no modo de depuração quando o campo de depuração nooptionsParâ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}

Tabela LogStatus

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.

LogStatus-btnTypeOne

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 doinputougroup.

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 oinputitem 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 doinputCampo:

{
    "name": "Number of opening positions", 
    "type": "number", 
    "defValue": 1,
    "description": "test",                  
}

Descrição de cada campo na estrutura JSON acima:

  • nome O título do controle na caixa pop-up que aparece após o botão da barra de status desencadeia uma operação de clique.
  • Descrição Descrição do controlo na caixa pop-up que aparece após o botão da barra de estado desencadear uma operação de clique.
  • Tipo O tipo de controle na caixa pop-up que aparece após o botão da barra de status desencadear uma operação de clique. Os valores possíveis do campo tipo são os seguintes:
    1. "number"- Controle de entrada numérica.
    2. "string"- Controle de entrada de string.
    3. "selected"- Controle de caixa suspensa.
    4. "boolean"Mudança de comando.
  • defValue O valor padrão do controle na caixa pop-up que aparece após o botão da barra de status desencadear uma operação de clique. Se for um controle de tipo de caixa suspensa (selecionado), o campo defValue é usado para definir as opções da caixa suspensa."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:

  • opções O controle de caixa suspensa na página desencadeada pelo controle do botão da barra de status pode usar o campo de opções para definir opções.{text: "description", value: "value"}Use o campo defValue para definir a opção padrão, que pode ser múltiplas seleções.
  • múltipla Quando este campo é definido como verdadeiro, são suportadas múltiplas seleções na caixa suspensa.

entrada JSON Oinputcampo configura um controle na caixa pop-up que aparece depois que o botão da barra de status é acionado clicando.groupeinputA função principal do sistema é a configuração de um grupo de comandos.groupter a mesma estrutura de dados que ainputValor do campo.input field.

grupo matriz

Um exemplo declassvalor 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 dogroupcampo com oinputCampo:

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.

LogStatus-btnTypeTwo

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 doinputougroup.

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 oinputitem 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: [opção 1, opção 2], [{name:xxx,value:0}, {name:xxx,value:1}]. configurações.renderização: Tipo de componente de renderização. Quando o tipo=número, settings.render não estiver definido (caixa de entrada de número padrão), opcional: deslizador (barra deslizante), data (o selector de hora retorna o carimbo de hora). Quando type=string, settings.render não está definido (caixa de entrada de linha única padrão), opcional: textarea (entrada de várias linhas), data (selector de tempo retorna yyyy-MM-dd hh:mm:ss), cor (selector de cores retorna #FF00FF). Quando tipo= selecionado, settings.render não está definido (caixa suspensa padrão), opcional: segmento (selector de segmentos). Quando type=boolean, há atualmente apenas uma caixa de seleção padrão.

entrada JSON Oinputcampo configura um controle na caixa pop-up que aparece depois que o botão da barra de status é acionado clicando.groupeinputA função principal do sistema é a configuração de um grupo de comandos.groupter a mesma estrutura de dados que ainputValor 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.

Opções de gráfico

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.

Opções KLineChart

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.

SetData-data

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.

EventLoop-retorno

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.

DBExec-return

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.

Thread.join-return

Este JSON é a estrutura de dados devolvida pela função membrojoin()doThreadObjeto, que salva algumas informações sobre tópicos concorrentes noJavaScriptEstratégia linguísticaThreadObjeto 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 doThreadObjeto 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