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!
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.
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)
Você pode arrastar o módulo
O módulo de cálculo da raiz quadrada como este produz os resultados do cálculo deste módulo.
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.
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.
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.
Módulo de utilização:
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.
Testes de retrocesso:
Como código da linguagem JavaScript:
function main(){
Log("Hello, Blockly!")
}
Como código da linguagem JavaScript:
function main () {
Log("WeChat Push!@")
}
Da mesma forma, na estratégia JavaScript, a função principal executa a função
function main () {
throw "The first sentence throws an exception to stop the program!"
}
Resultados dos testes de regresso:
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.
Como na estratégia JavaScript:
function main () {
Sleep(1000 * 5)
}
Teste o módulo de sono:
Resultados dos testes de regresso:
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:A execução do backtesting é mostrada na figura abaixo:
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.
Teste:Resultados dos testes de regresso:
Podemos ver que a combinação do módulo que consiste em
Execução do loop a cada N segundosO 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.
Processamento de precisãoEste 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.
Exibição de testes de retrocesso:
Alguns registros podem ser mantidos de acordo com os parâmetros de entrada. Tal como no documento API:
LogReset()
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()
Como código de estratégia JavaScript:
function main () {
Log(exchange.GetTicker().Last)
}
Primeiro, criamos um módulo variável chamado K-line.Em 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:
O carimbo da última barra de linha K é impresso quando o backtest é executado.
Como código de estratégia JavaScript:
function main () {
Log(exchange.GetDepth().Asks[0])
}
Como código de estratégia JavaScript:
function main () {
Log(exchange.GetAccount().Stocks)
}
Resultados dos testes de regresso:
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
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.
Resultados dos testes de regresso:
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.