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.
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:
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 GetCommand()
função no programa de estratégia receberá a mensagem:cmdBool:true
- Não.
Após a introdução dos dados interativos:abc
na 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
.
A opção
5 tipos de componentes suportados por comandos interativos:
Os controles interativos também podem ser agrupados, assim como as configurações de parâmetros da interface.
Além de projetar controles interativos na coluna LogStatus
secção de funções do
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 oinput
Propriedade 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 ogroup
Propriedade 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 doinput
O campo é consistente com a estrutura de um único controlo nogroup
A 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 componentesettings
Cada campo é descrito em pormenor:
settings.required
Se esta opção é necessária.settings.disabled
Se 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=selected
se 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.render
nã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.render
nã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.render
não está definido (caixa suspensa padrão), opcional:segment
(selector de segmentos).type=boolean
atualmente 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.group
campo 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