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

Módulo de visualização para construir estratégia de negociação - Primeiro conhecimento

Autora:FMZ~Lydia, Criado: 2022-12-12 16:50:29, Atualizado: 2023-09-20 09:44:29

img

Módulo de visualização para construir estratégia de negociação - Primeiro conhecimento

A programação visual sempre foi um objetivo aspiracional dos desenvolvedores de software, mesmo no campo da negociação quantitativa. Porque o método do "o que você vê é o que você obtém" na visualização reduz o limiar técnico do desenvolvimento de programação muito. Os utilizadores já não têm de lidar com uma pilha de códigos entediantes, apenas usam a sua imaginação e pensamento lógico para se concentrarem no próprio negócio. Podes realizar qualquer programa que quiseres.

Vamos entrar juntos no campo da programação visual da estratégia comercial quantitativa!

Programação visual do FMZ Quant inicial

Depois de entrar nohttps://www.fmz.com, registe a sua conta (se já estiver registado, entre diretamente) e clique em: Painel -> Estratégia -> Adicionar Estratégia.

img

Podemos ver uma estratégia inicial de visualização. É utilizado apenas para emitir as informações sobre os ativos da conta da troca configurada por defeito (o primeiro objeto de troca adicionado no backtest ou robô). (Veja a figura abaixo)

img

Antes de começarmos a aprender a usar a visualização, podemos entender alguns conceitos de design da visualização.

  1. Espalhamento Se olharmos atentamente, podemos ver que os módulos têm tenão (côncavo) e morte (convexo), isto é, os módulos podem conectar e ser conectados. Se dois módulos representam códigos funcionais que podem ser conectados, então os tenões e mortises dos dois módulos serão atraídos juntos quando você os aproxima.

img

  1. Configuração e regulação do módulo Alguns módulos possuem algumas áreas regulaveis especiais, por exemplo:

img

Você pode arrastar o módulo Item à esquerda para o módulo Add, para que você possa adicionar uma posição tenon (côncava), adicionando assim uma posição para empalmar texto. Desta forma, clique no pinhão para ajustar e definir o módulo.

  1. Parâmetros de entrada padrão do módulo Alguns módulos precisam inserir alguns parâmetros, que podem ser valores numéricos ou strings. Se você não adicionar variáveis como parâmetros de entrada do módulo, o módulo será executado de acordo com os parâmetros de entrada padrão.

img

O módulo de cálculo da raiz quadrada como este produz os resultados do cálculo deste módulo.

img

Como você pode ver, se a posição do parâmetro de entrada é padrão, o valor padrão 9 será usado como o parâmetro de entrada para calcular a raiz quadrada de 9.

img

Claro, se você quiser usar um módulo variável como o parâmetro de entrada, você pode emoldurar o módulo variável na posição tenon (côncava) diretamente.

img

  1. Operação O módulo pode ser clicado e arrastado com o botão esquerdo do mouse. Os módulos podem ser copiados com ctrl + c e colados com ctrl + v, tão conveniente quanto copiar e colar código ou texto. A área de operação pode ser dimensionada com a roda do mouse, e todos os módulos serão dimensionados maior ou menor. Clique e arraste a posição em branco na área de operação para mover a área de operação. A lixeira do lado direito registra os módulos recentemente apagados. A coisa mais importante é que depois de empalhar a estratégia do módulo, não se esqueça de clicar em Salvar.

Introdução ao módulo de ferramentas de visualização

Você pode ver que há muitas classificações de módulos no lado esquerdo da área de edição visual, e há muitos módulos visuais disponíveis em cada projeto de classificação.

Existem 11 categorias.

img

Módulo de utilização:

img img img

  1. Informações de saída: Este módulo é geralmente utilizado em conjunto com o módulo de classe de texto, conforme mostrado abaixo:

img

Você pode inserir uma cadeia no módulo de texto, de modo que quando você executa o módulo de Informações de Saída, o conteúdo da cadeia no módulo de texto será impresso.

img

Testes de retrocesso:

img img

Como código da linguagem JavaScript:

function main(){
    Log("Hello, Blockly!")
}
  1. WeChat push: Este módulo tem a mesma aparência que a informação de saída, que é diferente daquela que empurra informações para o WeChat ligadas à conta corrente ao mesmo tempo.

img

Como código da linguagem JavaScript:

function main () {
Log("WeChat Push!@")
}
  1. Lançar exceção Lançar o módulo de exceção faz com que o programa emita um erro e, em seguida, o programa para a execução (sem escrever o código de manipulação de exceções).

img

Da mesma forma, na estratégia JavaScript, a função principal executa a função string to output diretamente.

function main () {
    throw "The first sentence throws an exception to stop the program!"
}

Resultados dos testes de regresso:

img img

Geralmente, ele é usado mais quando se trata de depuração, por exemplo, se você quiser que o programa pare sob certas condições e imprima alguns dados naquele momento para observação. Ou você pode colocar um módulo de exceção no fluxo de código onde problemas podem ocorrer, deixar o programa relatar erros, e encontrar alguns erros.

  1. Dormir Módulo de repouso

img

Como na estratégia JavaScript:

function main () {
    Sleep(1000 * 5)
}

Teste o módulo de sono:

img

Resultados dos testes de regresso:

img

  1. Impressões

img

Este módulo, assim como a função API LogProfit na FMZ Quant Trading Platform, que imprime o registro de retornos e desenha a curva de retorno de acordo com os parâmetros de entrada automaticamente.

Por exemplo:imgA execução do backtesting é mostrada na figura abaixo:

img

O código de estratégia JavaScript correspondente é o seguinte:

function main () {
    LogProfit(1)
    Sleep(1000 * 5)
    LogProfit(2)
    Sleep(1000 * 5)
    LogProfit(3)
    Sleep(1000 * 5)
    LogProfit(2)
    Sleep(1000 * 5)
    LogProfit(5)
}

Ele pode ser emoldurado em qualquer posição onde você deseja sair informações de retorno.

  1. LoopimgO módulo de loop pode envolver uma série de combinações de módulos empalhados, permitindo que as combinações de módulos executem o loop.

Teste:imgResultados dos testes de regresso:

img

Podemos ver que a combinação do módulo que consiste em print retorna e sleep será executado continuamente após o módulo de loop é envolvido.

  1. Execução do loop a cada N segundosimgO uso deste módulo é basicamente o mesmo que o do módulo de loop. A única diferença é que o módulo tem seu próprio sono.img

  2. Processamento de precisãoimgEste módulo pode ser utilizado quando o módulo variável ou valor numérico precisa controlar a precisão.

Por exemplo, o processamento de precisão é realizado no valor 3.1415926535897.

img

Exibição de testes de retrocesso:

img

  1. Limpar o registoimg

Alguns registros podem ser mantidos de acordo com os parâmetros de entrada. Tal como no documento API:

LogReset()
  1. Limpar o registo de retornoimg

Ele é usado para limpar o log de retorno. Alguns logs podem ser mantidos de acordo com os parâmetros de entrada. Tal como no documento API:

LogProfitReset()

Os seguintes são alguns módulos de ferramentas usados com frequência

  1. Módulo funcional para obter um determinado atributo do mercadoimgEste módulo de ferramenta deve ser utilizado em conjunto com o módulo de cotação no Tipos de módulos de transacções, conforme mostrado na figura:imgUtilize o módulo de informação de saída para emitir o último preço de transação do último mercado de ticker:imgExibição de testes de retrocesso:img

Como código de estratégia JavaScript:

function main () {
    Log(exchange.GetTicker().Last)
}
  1. O módulo que obtém o atributo de uma barra de dados de linha KimgEste módulo deve também ser utilizado em conjunto com o módulo de aquisição de dados K-line no Tipos de módulos de transacções.

Primeiro, criamos um módulo variável chamado K-line.imgEm seguida, obtemos os dados da linha K, usamos o módulo de dados da linha K para obtê-lo e atribuímos o valor ao módulo variável: linha K.imgEm seguida, usamos o módulo de comprimento da lista no List Module Type para obter o comprimento do módulo da variável da linha K, que é usado para especificar qual barra na linha K para obter os dados.imgJunte-os, como mostrado na figura:img

O carimbo da última barra de linha K é impresso quando o backtest é executado.img

  1. O módulo que obtém os dados de uma encomenda na carteira de encomendasimgTambém precisa ser usado em conjunto com o módulo Get Depth Data no Transaction Module Type.imgO índice é definido em 0 e a ordem de venda é definida para obter as informações da ordem de venda.

img

Como código de estratégia JavaScript:

function main () {
    Log(exchange.GetDepth().Asks[0])
}
  1. Módulo para obtenção de um atributo nas informações sobre activosimgEste módulo deve ser utilizado em conjunto com o módulo de obtenção de informações sobre activos.imgPor exemplo: imprimir a moeda disponível da conta correnteimgExibição de testes de retrocesso:img

Como código de estratégia JavaScript:

function main () {
    Log(exchange.GetAccount().Stocks)
}
  1. Módulo para obtenção de um atributo nos dados de ordemimgEste módulo é utilizado para obter o valor de um atributo nos dados de encomenda, como o preço ou a quantidade de venda de um atributo na carteira de encomendas (exemplo no 13).img

Resultados dos testes de regresso:img

Como código de estratégia JavaScript:

function main () {
    Log(exchange.GetDepth().Asks[0].Price)
}

Também pode ser usado para obter um atributo na informação de ordem devolvida pelo Query Order Details Module (a ser explicado no capítulo avançado).

  1. O módulo para obter os atributos de uma posição na informação de posiçãoimgDe forma semelhante, deve ser usado em conjunto com o Get Futures Position Module. Observe que os dados de posição devolvidos pelo Get Futures Position Module são uma matriz (lista) que contém posições em diferentes contratos e direções.

Tendo aprendido tanto, combinemos uma operação de cobertura, isto é, a cobertura de contratos a curto prazo e a prazo.

Fazemos uma cobertura de arbitragem positiva, ou seja, abrimos um contrato de posição curta para o contrato a prazo e abrimos um contrato de posição longa para o contrato recente.

img

Resultados dos testes de regresso:

img

Exemplos de estratégias de visualização:

https://www.fmz.com/strategy/121404 https://www.fmz.com/strategy/129895 https://www.fmz.com/strategy/123904 https://www.fmz.com/strategy/122318Para mais estratégias, consulte:https://www.fmz.com/square

Outros artigos desta série

- Módulo de visualização para a construção de estratégias de negociação - em profundidade (https://www.fmz.com/digest-topic/9509) - Módulo de visualização para a construção de uma estratégia comercial - Compreensão avançada (https://www.fmz.com/bbs-topic/9815)

A programação chata pode ser facilmente completada por blocos de construção.


Relacionados

Mais.