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

Controle interativo

JavaScript, Python, C++, e estratégias MyLanguage podem ser projetadas com controles de interação. Os controles de interação de uma estratégia são usados para enviar comandos interativos para o programa de estratégia em execução quando a estratégia está sendo executada em negociação ao vivo. ParaJavaScript, Python, eC++A utilização de linguagensGetCommand()função no código de estratégia para obter a mensagem gerada pelo controle de interação.

Interactive Control

Com código concebido na estratégia para lidar com mensagens dos comandos interativos, a utilização de comandos interativos durante a negociação em tempo real pode habilitar (não limitado a) funções, tais como:

  • Feche a posição estratégica manualmente.
  • Modificar os parâmetros da estratégia de forma dinâmica para evitar reiniciar a estratégia em negociação ao vivo.
  • Troca a lógica da estratégia.
  • Ativar a impressão de certas informações de depuração, dados, e é usado para testar certas funções.

Tipos de controles de interação

Variavel (exemplo de nome) Descrição Tipo Valor padrão (descrição) Configuração do componente (descrição) Observações
cmdNum Descrição do comando interativo cmdNum Número O valor padrão é opcional e pode ser deixado em branco Utilizado para definir os controles de interface vinculados ao elemento interativo atual: tipo de componente, valor mínimo, valor máximo, agrupamento, etc. Observações sobre o comando interativo cmdNum
cmdBool Descrição do comando interativo cmdBool Boolean (verdadeiro/falso) Valor padrão exigido, ligado ou desligado O mesmo que acima. Observações sobre o comando interativo cmdBool
cmdStr Descrição do comando interativo cmdStr cordel O valor padrão é opcional e pode ser deixado em branco O mesmo que acima. Observações sobre o comando interativo cmdStr
cmdCombox Descrição do comando interativo cmdCombox selecionado O valor padrão é opcional e pode ser deixado em branco O mesmo que acima. Observações sobre o comando interativo cmdCombox
cmdBtn Descrição do comando interativo cmdBtn botão O comando do botão não está ligado ao item de entrada O mesmo que acima. Observações sobre o comando interativo cmdBtn

A mensagem enviada para a estratégia após o comando interativo ser acionado (string): Após inserir os dados interativos 123 na caixa de entrada do controle interativo cmdNum, clique no botão de controle interativo cmdNum. A função GetCommand() no programa de estratégia receberá a mensagem cmdNum:123. Configure o comando do interruptor do comando interativo cmdBool para ligado e clique no botão do comando interativo cmdBool.GetCommand()função no programa de estratégia receberá a mensagem:cmdBool:true- Não. Após a introdução dos dados interativos:abcna caixa de entrada cmdStr do comando interativo, clique no botão cmdStr do comando interativo.GetCommand()função no programa de estratégia receberá a mensagem:cmdStr:abc- Não. Após selecionar a segunda opção na caixa suspensa do comando interativo cmdCombox, clique no botão do comando interativo cmdCombox.GetCommand()função no programa de estratégia receberá a mensagem:cmdCombox:1, onde 1 representa o índice da opção selecionada, a primeira opção tem um índice de 0 e a segunda opção tem um índice de 1. Clique no botão do comando interativo cmdBtn.GetCommand()função no programa de estratégia receberá a mensagem:cmdBtn.

Configuração do componente

A opção Configuração de componentes do comando interativo estratégia é utilizada para definir os comandos correspondentes aos 5 tipos de comandos interativos na plataforma, melhorando a funcionalidade e simplificando o design.

5 tipos de componentes suportados por comandos interativos:

  • Controle interativo numérico Tipos de componentes suportados: controlo da caixa de entrada (padrão), controlo do selector de tempo e controlo da barra de entrada deslizante.
  • Controles interativos booleanos (verdadeiro/falso) Só são suportados comandos de comutação (default).
  • Controle interativo de cadeia Tipos de componentes suportados: controle de caixa de entrada (padrão), controle de caixa de texto, controle de selector de tempo, controle de selector de cor, moeda e código de negociação.
  • Controle interativo selecionado Tipos de componentes suportados: controlo de caixa suspensa (padrão), controlo do controlador de segmentos, moeda e código de negociação.
  • Controle interativo com botão Há apenas um controle de botão (padrão) e nenhum controle de entrada.

Os controles interativos também podem ser agrupados, assim como as configurações de parâmetros da interface.

  • Agrupação Na caixa de entrada Group da configuração do componente, você pode inserir um nome para um rótulo para agrupar vários controles de interação de estratégia em um rótulo de grupo (substituindo a antiga função Interaction Control Grouping da plataforma).

Controles interativos na barra de estado

Além de projetar controles interativos na coluna Strategy Interaction, também é possível projetar controles interativos na coluna Estado da Estratégia.LogStatussecção de funções do Guia de sintaxe- Não. Os controles do botão na barra de status podem ser categorizados como:

  • Controles de botões comuns Um exemplo de estrutura de dados é:

    {"type": "button", "name": "button1", "cmd": "button1", "description": "This is the first button."}
    
  • Controle de botões com entrada de dados Utilize oinputPropriedade para definir as opções de controlo de entrada, com um exemplo de estrutura de dados:

    {"type": "button", "name": "button2", "cmd": "button2", "description": "This is the second button.", "input": {"name": "number of open positions", "type": "number", "defValue": 1}}
    
    {
        "type": "button",
        "cmd": "test1",
        "name": "test1",
        "input": {
            "type": "selected",
            "name": "selected",
            "label": "drop-down box",
            "description": "description",
            "default": 100,
            "settings": {
                "multiple": true,
                "customizable": true,
                "options":[{"name": "A", "value": 100}, {"name": "B", "value": 200}]
            }
        },
    }
    
  • Controle de botões com um conjunto de dados de entrada Utilize ogroupPropriedade para definir as opções para um grupo de comandos de entrada, com um exemplo de estrutura de dados:

    {
        "type": "button",
        "cmd": "open",
        "name": "open positions",
        "group": [
            {"name": "orderType", "description": "下单方式|order type", "type": "selected", "defValue": "market order|pending order"},
            {"name": "tradePrice@orderType==1", "description": "交易价格|trade price", "type": "number", "defValue": 100},
            {"name": "orderAmount", "description": "委托数量|order amount", "type": "string", "defValue": 100},
            {"name": "boolean", "description": "yes/no|boolean", "type": "boolean", "defValue": True}
        ]
    }
    
    {
        "type": "button",
        "cmd": "test2",
        "name": "test2",
        "group": [{
            "type": "selected",
            "name": "selected",
            "label": "drop-down box",
            "description": "description",
            "default": 200,
            "group": "group1",
            "settings": {
                "multiple": true,
                "options":[{"name": "A", "value": 100}, {"name": "B", "value": 200}]
            }
        }, {
            "type": "string",
            "name": "string",
            "label": "input box",
            "description": "description",
            "default": "ABC",
            "group": "group1"
        }],
    }
    

Codificar estes dados de controle de botão JSON em uma cadeia de caracteres JSON, em seguida, embrulhá-lo com`Tome a linguagem JavaScript como exemplo:

function main() {
    var btn = {"type": "button", "name": "button1", "cmd": "button1", "description": "This is the first button."}
    LogStatus("`" + JSON.stringify(btn) + "`")
}

Estes controles de botão também podem ser escritos em formulários de barra de status, por favor consulteGuia de sintaxepara exemplos pormenorizados.

A estrutura doinputO campo é consistente com a estrutura de um único controlo nogroupA seguir, uma descrição pormenorizada:

{
    "type": "selected",     // Control type (required field), supports the following settings: number, string, selected, boolean
    "name": "test",         // Name (required when used in group)
    "label": "topic",       // Title (required field)
    "description": "desc",  // Component tips
    "default": 1,           // Default value; if the settings field is not set in the current JSON structure, defValue is compatible and can be used instead of default
    "filter": "a>1",        // Selector. If this field is not set, no filtering (controls are displayed). If this field is set, no filtering (controls are displayed) occurs when the expression is true. Filtering occurs when the expression is false (controls are not displayed)
                            // For the selector, take the expression a>1 in the current example as an example, a refers to the value of the control with name a under the group field in the structure of type=button. This value is used to determine whether to filter.
    "group": "group1",      // Grouping
    "settings": { ... },    // Component configuration
}

Configuração do componentesettingsCada campo é descrito em pormenor:

  • settings.requiredSe esta opção é necessária.
  • settings.disabledSe desativar.
  • settings.min: válido quando:type=number, indicando o valor mínimo ou o comprimento mínimo da corda.
  • settings.max: válido quando:type=number, indicando o valor máximo ou o comprimento máximo da corda.
  • settings.step: type=number, válido quandorender=slider, indica o comprimento do degrau.
  • settings.multiple: type=selectedé válida, indicando que são suportadas várias seleções.
  • settings.customizable: type=selectedse for válida, indicando que a personalização é suportada; os usuários podem editar e adicionar novas opções diretamente no controle da caixa suspensa. Se a opção recentemente editada for selecionada, o nome da opção é usado em vez do valor representado pela opção quando a interação é acionada.
  • settings.options: válido quando:type=selected, indicando o formato dos dados da opção de selecção:["option 1", "option 2"], [{'name':'xxx','value':0}, {'name':'xxx','value':1}].
  • settings.render: Tipo de componente de renderização. Quando?type=number, settings.rendernão está definido (caixa de entrada de número por defeito), opcional:slider(banda deslizante),date(O selector de horas retorna o carimbo de hora). Quando?type=string, settings.rendernão está definido (caixa de entrada de linha única por defeito).textarea(entrada de várias linhas),date(O selector de tempo retorna anu-MM-dd hh:mm:ss),color(O selector de cores retorna #FF00FF). Quando?type=selected, settings.rendernão está definido (caixa suspensa padrão), opcional:segment(selector de segmentos).type=booleanatualmente tem apenas uma caixa de seleção padrão.

Suporta configurações bilíngues, por exemplo:'选项 | options'O sistema de controlo único será adaptado em função do ambiente linguístico actual.groupcampo como exemplo, o exemplo completo é:

{
    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}]
    }
}
Parâmetros da estratégia Negociação de opções