O desenvolvimento de estratégias na plataforma de negociação quantitativa Inventor é inseparável do design de parâmetros estratégicos e interações estratégicas. A plataforma de negociação quantitativa Inventor está comprometida em fornecer ferramentas de negociação quantitativa simples, fáceis de usar e poderosas, além de iterar continuamente o design e as funções do produto. Ao atualizar os "parâmetros de estratégia" e os "controles de interação", a flexibilidade de design de parâmetros e interações no design de estratégia foi aumentada ainda mais. As funções dos parâmetros de estratégia e controles interativos foram aprimoradas para tornar alguns requisitos de design mais fáceis de serem alcançados. Neste artigo, vamos dar uma olhada em dois aspectos essenciais do design de estratégia: “design de parâmetros de estratégia” e “design de interação de estratégia”.
Parâmetros da interface de estratégia
Os tipos de parâmetros de estratégia no Inventor Quant não aumentaram e ainda são os cinco tipos de parâmetros com os quais estamos familiarizados:
- Parâmetros de tipo numérico
- Parâmetro do tipo string
- Parâmetros do tipo booleano
- Parâmetros do tipo caixa suspensa
- Parâmetro do tipo string criptografada
Então você certamente me perguntará: qual conteúdo foi adicionado e otimizado nesta atualização da plataforma?
Esta atualização adiciona "configuração de componente" para controles de vinculação de parâmetros, simplifica as funções de "agrupamento" e "dependência de parâmetro" e integra essas duas funções na "configuração de componente". Para o valor padrão do parâmetro, uma opção "opcional"/"obrigatório" é adicionada para determinar se a estratégia está qualificada para operação. Se o parâmetro for definido como "obrigatório", mas nenhum valor específico for escrito no controle de parâmetro quando o a estratégia é executada, Parâmetros, a estratégia não pode ser executada neste momento.
Agora que temos uma compreensão geral das mudanças de atualização, vamos testá-las em detalhes.
1. Parâmetros do tipo numérico
Já falamos brevemente sobre as funções "opcionais"/"obrigatórias", então não entrarei em detalhes aqui. O seguinte explica principalmente "configuração de componente". A configuração de componente pode ser entendida simplesmente como:
Defina as várias propriedades, tipos e regras dos controles aos quais os parâmetros correspondem (estão vinculados). O controle de limite padrão para parâmetros de tipo numérico (tipo de número) é uma caixa de entrada. Você pode definir regras para os dados recebidos pela caixa de entrada, ou seja, use os controles "valor mínimo" e "valor máximo" na figura para definir eles.
Além do controle de caixa de entrada padrão, a plataforma adicionou:
- Selecionador de tempo
Em "Tipo de componente", selecione a configuração como: Seletor de tempo, e o controle da caixa de entrada na interface de estratégia correspondente ao parâmetro atual se tornará um controle de seleção de tempo. Ao definir este parâmetro, selecione um horário específico. O valor da variável deste parâmetro é o timestamp correspondente ao horário definido.
Tais controles são geralmente usados para configurações de intervalo de tempo, configurações de data de início e término. Esse uso muito conveniente e intuitivo de controles de data permite que a estratégia saiba o timestamp correspondente, sem a necessidade de escrever um código complexo de conversão de tempo.
O valor variável do parâmetro de interface é: valor (representando o registro de data e hora) - Barra de entrada de slides
Se for definido como um controle de barra de entrada deslizante, você deve especificar o "valor mínimo" e o "valor máximo" para determinar o intervalo do controle deslizante. O tamanho do passo se refere ao valor do intervalo no controle deslizante quando ele se move uma vez.
A barra de entrada deslizante pode implementar muito convenientemente um parâmetro para controlar os níveis de stop loss e take profit. Claro, pode haver muitos outros designs, que não serão elaborados aqui.
O valor variável do parâmetro interface é: valor (representando as informações de posição do controle deslizante na barra deslizante)
2. Parâmetros do tipo booleano
Parâmetros do tipo booleano são especiais porque têm apenas um controle correspondente. É o controle de switch padrão. E o valor padrão do parâmetro também é necessário.
Como os valores booleanos são verdadeiros ou falsos, eles são opções binárias. Portanto, é muito apropriado usar um controle de chave para corresponder a esse tipo de parâmetro.
Geralmente, parâmetros do tipo booleano são usados para controlar se certas funções de estratégia estão habilitadas na plataforma.
3. Parâmetros do tipo string
Além do controle de caixa de entrada padrão, a plataforma adicionou:
-
texto
Em "Tipo de componente", selecione a configuração: Texto. O controle da caixa de entrada na interface de estratégia correspondente ao parâmetro atual mudará para uma caixa de texto maior.
As diferenças entre um controle de texto e um controle de caixa de entrada comum são: o texto inserido na caixa de texto pode ser quebrado, e a caixa de texto pode ajustar o tamanho do controle.
O valor variável do parâmetro interface é: string. -
Selecionador de tempo
Em "Tipo de componente", selecione a configuração como: Seletor de tempo. O controle da caixa de entrada na interface de estratégia correspondente aos parâmetros atuais se tornará um controle para definir hora e data.
O "Time Selector for Component Type with String Type Parameter" é diferente do "Time Selector for Component Type with Numeric Type Parameter". A seleção de tempo para o parâmetro do tipo string tem uma opção adicional "Time Format", que pode definir o Select do controle Formatar:- Data: Quando o "Formato de hora" é definido como "Data", o controle é um controle de seleção de hora completo para selecionar ano, mês, dia, hora, minuto e segundo, e suporta seleção com um clique da hora atual .
- Hora: Quando o "Formato de hora" é definido como "Hora", o controle é um controle de seleção de hora para selecionar minutos, horas e segundos.
- Ano e mês: quando o "Formato de hora" é definido como "Ano e mês", o controle é um controle de seleção de hora para selecionar ano e mês.
- Ano: Quando o "Formato de hora" é definido como "Ano", o controle é um controle de seleção de hora para selecionar um ano.
O valor variável do parâmetro interface é: string (formatado como o tempo correspondente).
-
Seletor de cores
Em "Tipo de componente", selecione a configuração como: Seletor de cores. O controle da caixa de entrada na interface de estratégia correspondente ao parâmetro atual se tornará um controle de seleção de cores.
Geralmente usado para projetar parâmetros para definir cores.
O valor variável do parâmetro interface é: string (o valor da cor correspondente à cor selecionada, por exemplo: #7e1717).
4. Parâmetros do tipo caixa suspensa
O controle padrão correspondente ao parâmetro do tipo caixa suspensa é uma caixa suspensa, mas desta vez muitas atualizações foram feitas na caixa suspensa simples de seleção única anterior:
- Suporte para seleção múltipla
Você pode selecionar várias opções ao mesmo tempo no controle da caixa suspensa correspondente ao parâmetro da caixa suspensa. Neste caso, o valor da variável do parâmetro da caixa suspensa não é mais o índice da opção selecionada, mas uma matriz. A matriz contém os índices ou dados de ligação de todas as opções selecionadas. - Suporte a valores padrão personalizados
Quando esta opção está ativada, você pode personalizar o valor padrão em vez de ter que selecionar uma opção na caixa suspensa como valor padrão. - Adicionada a função de vincular valores numéricos e strings às opções da caixa suspensa.
Vincular uma string ou valor a uma opção. Ao definir esse parâmetro, o valor da variável da caixa suspensa não é mais o índice da opção selecionada, mas a string ou valor vinculado à opção selecionada.
Além do controle de caixa suspensa padrão, desta vez a plataforma adiciona:
- Controlador de Segmento
Em "Tipo de componente", selecione a configuração: Controlador de segmento. Dessa forma, o controle vinculado ao parâmetro atual se torna um controle deslizante segmentado selecionável, e você pode selecionar um bloco segmentado específico.
Geralmente, ele pode ser projetado como: geralmente usado para alternar entre várias opções mutuamente exclusivas, frequentemente usado para filtrar conteúdo por categoria ou tag, escolher entre diferentes modos de operação, etc.
O valor variável do parâmetro de interface é: o índice da parte selecionada do controlador de segmento ou os dados vinculados à parte selecionada (os dados vinculados suportam valores numéricos e strings).
5. Parâmetros do tipo string criptografados
O parâmetro do tipo string criptografada também é especial e tem apenas um controle correspondente. É o controle de caixa de entrada criptografada padrão.
Na plataforma, controles do tipo string criptografada geralmente são usados para definir algumas informações confidenciais, como chaves secretas, senhas, etc. Esses valores de parâmetros de entrada serão transmitidos após serem criptografados localmente.
O valor variável do parâmetro interface é: string.
Para todos os tipos de parâmetros de interface de estratégia acima, esta atualização integra as funções anteriores de "agrupamento de parâmetros" e "dependência de parâmetros" na "configuração de componentes". Há configurações de "Agrupamento" e "Filtro" na configuração do componente de todos os parâmetros da interface.
-
Agrupamento
Você pode inserir diretamente os rótulos que deseja agrupar no controle da caixa suspensa do grupo e usar a tecla Enter para confirmar a entrada do grupo. O sistema registrará o rótulo inserido atualmente nas opções de agrupamento. Então você pode atribuir grupos aos parâmetros de interface atuais.
Após o agrupamento, na interface de backtesting de estratégia/negociação real, os parâmetros marcados como um grupo serão exibidos em uma área de agrupamento. -
Filtros
Insira algumas expressões no controle de filtro para determinar se o parâmetro atual precisa ser ativado e exibido. Esta função permite que o parâmetro atual seja exibido ou ocultado dependendo de uma determinada configuração de parâmetro.
Exemplos de expressão de filtro:过滤器格式: a>b , a==1 , a , !a , a>=1&&a<=10 , a>bAqui, a e b representam variáveis de parâmetros de interface de estratégia.
Estratégia de teste de parâmetros de interface
Se as explicações acima não forem muito intuitivas, a melhor maneira de entendê-las é usar e testar estas funções de parâmetros:
Tomemos como exemplo a política de linguagem JavaScript:
javascript
function main() {
Log("---------------------------开始测试数字类型参数---------------------------")
Log("变量pNum1:", pNum1, ", 变量值类型:", typeof(pNum1))
Log("变量pNum2:", pNum2, ", 变量值类型:", typeof(pNum2))
Log("变量pNum3:", pNum3, ", 变量值类型:", typeof(pNum3))
Log("变量pNum4:", pNum4, ", 变量值类型:", typeof(pNum4))
Log("---------------------------开始测试布尔类型参数---------------------------")
Log("变量pBool1:", pBool1, ", 变量值类型:", typeof(pBool1))
Log("变量pBool2:", pBool2, ", 变量值类型:", typeof(pBool2))
Log("---------------------------开始测试字符串类型参数---------------------------")
Log("变量pStr1:", pStr1, ", 变量值类型:", typeof(pStr1))
Log("变量pStr2:", pStr2, ", 变量值类型:", typeof(pStr2))
Log("变量pStr3:", pStr3, ", 变量值类型:", typeof(pStr3))
Log("变量pStr4:", pStr4, ", 变量值类型:", typeof(pStr4))
Log("---------------------------开始测试下拉框类型参数---------------------------")
Log("变量pCombox1:", pCombox1, ", 变量值类型:", typeof(pCombox1))
Log("变量pCombox2:", pCombox2, ", 变量值类型:", typeof(pCombox2))
Log("变量pCombox3:", pCombox3, ", 变量值类型:", typeof(pCombox3))
Log("---------------------------开始测试加密串类型参数---------------------------")
Log("变量pSecretStr1:", pSecretStr1, ", 变量值类型:", typeof(pSecretStr1))
}
Estratégia completa de teste de parâmetros: https://www.fmz.com/strategy/455212
Há um design de dependência de parâmetros oculto nos parâmetros acima. Muitas estratégias têm o requisito de habilitar uma série de configurações com base em um determinado parâmetro, o que pode ser alcançado com dependências de parâmetros como esta.
Controles interativos
Há também cinco tipos de controles interativos de estratégia na Plataforma de Negociação Quantitativa do Inventor, e esses controles interativos também foram otimizados e atualizados desta vez. Adicionada "configuração de componentes" para simplificar a função de agrupamento.
1. Controles interativos digitais
Os controles interativos são basicamente os mesmos que a "configuração do componente" dos parâmetros da interface de estratégia. Além dos controles da caixa de entrada padrão, os tipos de componentes também suportam:
- Selecionador de tempo
O comando interativo enviado contém um registro de data e hora da seleção. - Barra de entrada de slides
O comando interativo enviado contém o valor representado pela posição do controle deslizante selecionado.
O uso é o mesmo de vários tipos de componentes de parâmetros de interface de estratégia, portanto não será repetido aqui.
2. Controles interativos booleanos (verdadeiro/falso)
Os controles interativos são basicamente os mesmos que a "configuração de componentes" dos parâmetros da interface de estratégia.
3. Controles interativos de string
Além do controle da caixa de entrada padrão, o tipo de componente também suporta:
- texto
O comando interativo enviado contém o conteúdo inserido na caixa de texto. - Selecionador de tempo
O comando interativo enviado contém uma sequência de tempo do horário selecionado, com vários formatos para escolher. - Seletor de cores
O comando interativo enviado contém a sequência de valores de cor da cor selecionada.
4. Caixa suspensa (selecionada) controle interativo
A caixa suspensa do controle interativo também foi atualizada: "suporte a múltiplas seleções", "valores padrão personalizados", vinculação de opções a dados específicos, etc.
Além do componente de caixa suspensa padrão, o seguinte foi adicionado:
- Controlador de Segmento
O comando interativo enviado contém o índice ou dados vinculados do controle deslizante selecionado.
5. Controle interativo de botões
Um controle interativo do tipo botão não tem nenhum item de entrada. Quando acionado, o comando interativo enviado contém apenas o nome do controle do botão.
Estratégia de teste de controle interativo
A melhor maneira de entender é testá-lo manualmente. Uma estratégia de teste também é preparada aqui.
Vale ressaltar que controles interativos não podem ser testados no sistema de backtesting, e somente testes em tempo real podem ser criados.
javascript
function main() {
var lastCmd = ""
while (true) {
var cmd = GetCommand() // 接收交互控件产生的消息
if (cmd) {
Log(cmd)
lastCmd = cmd
}
LogStatus(_D(), lastCmd)
Sleep(500)
}
}
Insira aleatoriamente algumas informações, defina algumas opções e clique no botão de controle interativo para gerar mensagens interativas. A estratégia captura as mensagens e as imprime.

Estratégia de teste de controle interativo concluída: https://www.fmz.com/strategy/455231
renovar
- A plataforma atualizou o tipo de string e o tipo de caixa suspensa dos parâmetros de interface e controles interativos; e adicionou suporte para 2 novos controles:
- Teste de parâmetros de uso de controle de moeda e controle de código de negociação (par de negociação) em parâmetros de interface de estratégia
javascript
function main() {
Log("参数test1使用币种控件选择后,test1的值为:", test1)
Log("参数test2使用交易代码控件选择后,test2的值为:", test2)
}
-
- Moeda
log参数test1使用币种控件选择后,test1的值为: BTC -
- Código de negociação (par de negociação)
log参数test2使用交易代码控件选择后,test2的值为: ETH_USDT.next_quarter
- Configure testes interativos usando controles de moeda e controles de código de transação (par de transações) nos controles de interação de estratégia:
javascript
function main() {
while (true) {
var cmd = GetCommand()
if (cmd) {
Log(cmd)
}
Sleep(2000)
}
}
- 1





















