Nos artigos anteriores, aprendemos que a chamada negociação programada e quantitativa é um programa de script baseado nos dados obtidos das plataformas, após uma série de cálculos, julgamentos e gatilhos para fazer algumas operações e operar as contas da plataforma para negociar. Estas ações de aquisição de dados e contas operacionais são todas realizadas através das interfaces API da plataforma. Simplificando, os programas de script interagem com as plataformas.
É claro que os sistemas de negociação programados e quantitativos no mercado ou programas auto-desenvolvidos terão vários avisos e mensagens de erro. Essas mensagens de erro não se limitam às mensagens de erro relatadas pelas APIs da plataforma. Há também outros erros, como: erro de exceção do programa durante a operação, erro de configuração, erro de sintaxe do programa e assim por diante.
Na plataforma de negociação de quantidade FMZ, as mensagens de erro podem ser divididas em várias categorias:
Erro de sintaxe da estratégia Este tipo de erro é o erro mais comum, que geralmente é causado pela situação em que os iniciantes não estão familiarizados com a programação, e o seu código escrito durante o estudo tem erros de sintaxe.
O código foi escrito sem caracteres como parênteses. Para esse tipo de erro, o prompt de erro geralmente pode ser visto na página de edição da estratégia, e sob a circunstância, a estratégia não pode ser executada (uma vez que a estratégia é executada, haverá um erro relatado, como mostrado na imagem).
Portanto, você pode fazer um hábito de dar uma olhada na página de edição de estratégia depois de terminar de escrever o código, para ver se há uma pequena cruz vermelha; se houver, isso significa que há definitivamente um erro óbvio.
Exceção do programa durante a operação causada por programa de estratégia BUG Se um programa tiver bugs durante sua operação, o gatilho da exceção fará com que o programa pare anormalmente, e esse tipo de mensagens de erro será exibido.
Este tipo de erros podem causar a exceção do programa, e parar o programa de execução.
Erro causado por configuração e configurações incorretas
Na plataforma FMZ, todos os pares de negociação são definidos na forma deX_Y
, em que BTC_USDT
Suponha que eu escreva errado, eu escrevo emBTC-USDT
.
Relatório de erros no sistema de backtest na plataforma FMZ:
Reportagem de erros em um bot:
Ou, o erro mais comum que os iniciantes encontram:
Este tipo de erro é causado pela invalidação doAPI KEY
no objeto de troca configurado após a modificação da senha de uma conta FMZ (as chaves API dos usuários são todas criptografadas pela extremidade do navegador e configuradas na plataforma FMZ). Isso tornará uma estratégia incapaz de iniciar, o que causará um erro relatado.
Erro causado pela interface de chamada
Em artigos anteriores, estudamos e aprendemos que as interfaces na plataforma FMZ são divididas emInterfaces que fazem solicitações de redeeInterfaces que não fazem solicitações de rede. O erro de interface não causará diretamente a parada do programa de estratégia. Normalmente, devido à exceção de chamada de interface, os dados errados são devolvidos e a estratégia não faz a tolerância de falha. Em seguida, o erro de exceção de programa causado pelos dados errados faz com que o programa pare (o conceito de tolerância de falha já foi introduzido nos artigos anteriores).
Aqui listamos várias mensagens de erro das interfaces que fazem solicitações de rede:
Timeout da rede
Uma das mensagens de erro que os iniciantes frequentemente encontram é causada pelo uso de um dispositivo de rede doméstica (PC ou servidores domésticos).
Erro http 429
É uma das mensagens de erro clássicas; a razão é que uma interface de plataforma é chamada com muita frequência, excedendo o limite de frequência da plataforma. (mencionado nos artigos anteriores). Alguns novos alunos podem dizer que o erro não será levantado se eles solicitarem chaves de API de várias plataformas ou várias contas de plataforma. Precisamos saber que o limite de frequência de acesso a interfaces por plataformas geralmente é baseado em endereços IP. Simplificando, desde que todas as solicitações enviadas a partir de um endereço IP sejam contadas no endereço, o servidor da plataforma negará o acesso ao IP, se o número de solicitações exceder o limite.
Erro no serviço de interface da plataforma
O timeout e os erros 429 mencionados acima são erros na camada de rede. Se houver um problema na camada do serviço de interface da plataforma, um erro também será relatado. Por exemplo, eu quero obter as cotações do mercado spot, mas eu configurei um par de negociação não existente. Eu teste na ferramenta de depuração da plataforma FMZ. A ferramenta de depuração é uma ferramenta de teste muito conveniente, que é muito adequada para o teste real de bot de chamadas de função e aquisição de dados.
O resultado da execução da ferramenta de depuração; não há diferença entre a execução da ferramenta de depuração e a execução do bot.
Huobi error GetTicker: Invalid ticker: {"Info":{"err-code":"invalid-parameter","err-msg":"invalid symbol","status":"error","ts":1620872079355},"High":0,"Low":0,"Sell":0,"Buy":0,"Last":0,"Volume":0,"OpenInterest":0,"Time":0}
A mensagem de erro aqui significa que o par de negociação é inválido (ver aqui:"err-msg":"invalid symbol"
)).
Por exemplo, existem muitos erros relacionados ao serviço. Por exemplo, ao definir alavancagem, algumas plataformas não suportam valores de alavancagem com decimais.
Lista uma chamada de interface que não gere uma solicitação de rede:
Código do contrato de futuros definidos Algumas interfaces apenas definem algumas variáveis globais no sistema e não fazem solicitações de rede.
No entanto, se os parâmetros forem transmitidos ou escritos incorretamente, também serão notificados erros.
Não importa que tipo de erro seja, a mensagem de erro exibida é a informação chave para encontrar o problema, ou seja, você pode dizer o problema a partir da mensagem de erro."err-msg":"invalid symbol"
Você provavelmente pode saber que o erro é causado pela configuração errada do par de negociação, pois o símbolo
O sistema de backtest também é o ponto chave de uma ferramenta quantitativa. O sistema de backtest pode facilmente testar o protótipo de uma estratégia e inicialmente verificar os possíveis bugs e problemas lógicos na estratégia, mas o sistema de backtest precisa ser visto racionalmente.
A seguir está uma breve descrição do sistema de backtest na plataforma FMZ a partir do nível das diferentes linguagens de estratégia suportadas pela FMZ. (Algumas introduções do sistema de backtest foram mencionadas nos artigos anteriores.)
JavaScript
O backtest é realizado no navegador, e usa os recursos de hardware locais.
Python
No backtest em um docker, você pode escolher para qual docker atribuir (ou o docker implantado por si mesmo, ou o docker público da plataforma FMZ). Em vista da grande carga do docker público na plataforma FMZ, recomenda-se usar o backtest docker local (Isso também será mais rápido. No backtest do docker público, quando estiver sobrecarregado, algumas tarefas de backtest serão canceladas, com o resultado do backtest interrompido).
C++
Ao contrário das linguagens de script, as estratégias de linguagem C++ precisam ser compiladas e depois executadas. A estratégia de linguagem C++ será compilada primeiro na plataforma FMZ (servidor) (se houver um problema com a escrita do código, a compilação pode não passar, e uma mensagem de erro será solicitada diretamente).
Mylangue
A subcamada é implementada pelo JavaScript, e o backtest também é realizado no navegador.
Visualização
A subcamada é implementada pelo JavaScript, e o backtest também é executado no navegador
O sistema de backtest da plataforma FMZ Quant Trading tem dois modos de backtest (não importa em que idioma uma estratégia seja escrita, o modo de backtest é uma configuração do sistema de backtest, e as opções de configuração são as mesmas para todos os idiomas suportados na FMZ).
Para a instrução do sistema de backtest, você pode consultar a parte relacionada do tutorial de escrita de estratégia na plataforma FMZ:
There are the highest, the lowest, open and close prices in one bar, which forms a price structure. Within the time range represented by the K-line, the prices are all in the price structure. Therefore, as long as the generated price is within the K-line structure of the four prices, the simulated price is reasonable.
Tal como a simulação exibida na seguinte imagem:
Claro, é um pouco mais complicado do que o mostrado na imagem para realizar a simulação no sistema de backtest, que não será discutido mais aqui. Após conhecer o princípio, você precisa prestar atenção às desvantagens do backtest de nível de simulação. Embora o backtest de nível de simulação seja muito rápido (porque os preços gerados pela simulação não são preços reais segundo a segundo lançados sucessivamente).tendência de mudança de tick simulada, a estratégia terá um desempenho excelente (mas, na realidade, o preço pode não mudar com a tendência, embora o preço esteja dentro da estrutura da barra da linha K). A linha K usada para gerar os dados de tick aqui é chamada de linha K inferior, e o período da linha K é chamadoo período da linha K inferior, que é definido na página de definição da estratégia da seguinte forma:
Aqui eu defino 1 minuto, o que significa usar os dados da linha K com um período de 1 minuto como fonte de dados para gerar os dados de carrapatos simulados.
Há mais um ponto em que, para uma estratégia de alta frequência, o backtest de nível de simulação não é obviamente apropriado.
Onde está a fonte de dados do sistema de backtest do FMZ Quant? O sistema de backtest usa os dados do painel na plataforma FMZ por padrão. O painel do FMZ coleta automaticamente os dados de mercado definidos de cada moeda em cada plataforma e os fornece ao sistema de backtest da plataforma.
Há também algumas instruções sobre a fonte de dados personalizada na documentação da FMZ API:https://www.fmz.com/api#Fonte de dados personalizados
Há também alguns esquemas no Digest na plataforma FMZ. Os iniciantes, que estão interessados nisso, podem consultar esses esquemas e estudá-los.
Não se pode fazer negociação programada e quantitativa semestudar, EnsaiosePensamento- Não. É ineficiente pensar em questões a partir do nada.Busca de informaçãoEntão...Tente sozinho., ePensar e analisarSe o problema não for resolvido, repita as ações acima.
Mas, geralmente, quando os iniciantes encontram problemas, sentem-se:
Oh, escrever estratégias programadas e quantitativas é super difícil! Ainda estou confuso sobre isso, até eu estou estudando há algum tempo! Só quero desistir antes mesmo de começar! - Não.
Começar com a plataforma FMZ é realmente muito fácil e simples. Primeiro de tudo, você deve ser bom em pesquisar informações. Há muitas informações no
Depois, há a capacidade operacional; usando o sistema de backtest e a ferramenta de depuração pode facilmente fazer um teste. Isso não significa testar uma estratégia completa.
Este é o site de tutoriais onde eu costumo estudar JS:https://www.runoob.com/js/js-loop-for.html; o site não se limita ao JS, e todos os tipos de conhecimento de TI podem ser consultados e aprendidos aqui. Por exemplo, eu não sei como usar a expressão regular de JS, o que devo fazer? Naturalmente, procure primeiro a informação e depois experimente-a!
Vi um exemplo como este:Se eu quiser testá-lo, posso usar o sistema de backtest da FMZ para testá-lo para estudo.
Coloque uma plataforma aleatória no sistema de backtest.
Teste o seguinte código:
function IsEmail(str) {
var reg=/^\w+@[a-zA-Z0-9]{2,10}(?:\.[a-z]{2,4}){1,3}$/;
return reg.test(str);
}
function main() {
var strEmailAddress1 = "13512345678"
Log(strEmailAddress1, " Is it the email address? ", " Answer:", IsEmail(strEmailAddress1))
var strEmailAddress2 = "123456789@qq.com"
Log(strEmailAddress2, " Is it the email address? ", " Answer:", IsEmail(strEmailAddress2))
}
Veja, que maravilhosa ferramenta para estudar! Por exemplo, se eu quero aprender a escrever a lógica do loop da linguagem JavaScript, e depois tentar:
De acordo com a sequência de uma matriz, imprima cada elemento de uma variável de matriz em um loop:
function main() {
var arr = [{coinName: "BTC", price: 10000}, {coinName: "LTC", price: 100}, {coinName: "ETH", price: 2000}, {coinName: "ETC", price: 500}]
for (var i = 0 ; i < arr.length ; i++) {
Log(arr[i])
}
}
Sente-se motivado a aprender imediatamente? Na verdade, no FMZ, você pode aprender completamente os fundamentos do JavaScript tentando operações no sistema de backtest enquanto assiste aos tutoriais do JavaScript.ferramenta de depuraçãoem FMZ para conduzir testes reais de interface. Depois, é preciso pensar mais, tirar conclusões de um caso, com testes, verificação e análise comparativa, etc. Isso torna a aprendizagem e o início muito rápidos.