Novato, verifique Leva-o ao Comércio Quantitativo de Criptomoedas (3)

Autora:Ninabadass, Criado: 2022-04-20 11:46:56, Atualizado: 2022-04-20 16:53:34

Novato, verifique Leva-o ao Comércio Quantitativo de Criptomoedas (3)

Mensagem de erro

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.

    img

    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).

    imgPortanto, 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.

    img

    img

    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 X representa o nome da moeda de negociação, e Y representa o nome da moeda de cotação (a moeda de cotação do par de negociação em contratos futuros cripto-marginados é geralmente expressa em USD, e isso é introduzido nos artigos anteriores).BTC_USDTSuponha que eu escreva errado, eu escrevo emBTC-USDT.

    img

    Relatório de erros no sistema de backtest na plataforma FMZ:

    img

    Reportagem de erros em um bot:

    img

    Ou, o erro mais comum que os iniciantes encontram:

    img

    Este tipo de erro é causado pela invalidação doAPI KEYno 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

      img

      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

      img

      É 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.

      img

      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.img

      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.

      img

      No entanto, se os parâmetros forem transmitidos ou escritos incorretamente, também serão notificados erros.

      img

    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 geralmente representa o código de negociação e o par de negociação em inglês. Para as mensagens de erro, vamos fechar a discussão aqui.https://www.fmz.com/bbs-topic/1427.

Sistema de ensaio de retrocesso

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).

img

Para a instrução do sistema de backtest, você pode consultar a parte relacionada do tutorial de escrita de estratégia na plataforma FMZ:

https://www.fmz.com/bbs-topic/9091

    1. Teste de retrocesso de nível de simulação O backtest de nível de simulação, em geral, consiste em gerar os dados de preços de nós temporais sucessivos com base em dados de linha K de forma simuladora.
    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:img

    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:

    img

    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.

    1. Teste de retrocesso do nível real do mercado Depois de falar sobre o nível de simulação, vamos falar sobre o nível real do mercado. Em geral, o backtest do nível real do mercado é realmente liberar os dados de preço segundo a segundo no teste e deixar a estratégia retroceder o preço de cada segundo no mercado. A desvantagem é que a quantidade de dados de backtest no nível do mercado real é muito grande, e não pode ser testado em um grande intervalo de tempo (geralmente o intervalo de tempo é inferior a 1 dia).Não há necessidade de histórico de transações(os dados de histórico de negócios, e os dados de profundidade de mercado também tem instantâneos segundo a segundo no backtest de nível de mercado real, de modo que a quantidade de dados de backtest de nível de mercado real é enorme).

    img

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.

    1. Usar os dados do painel FMZ Foi mencionado nos artigos anteriores:A Comissão considera que a Comissão não pode tomar qualquer decisão sobre a aplicação da presente diretiva.- Não. Os dados de backtest fornecidos pela plataforma só suportam um número limitado de pares de negociação. (os dados de backtest de todo o mercado e de todas as moedas são de um número astronômico, e não é realista coletá-los todos. A plataforma coletou dados de mercado de plataformas e moedas convencionais.)
    1. Usar os dados da fonte de dados personalizada Você pode selecionar as opções na página de backtest para definir uma fonte de dados personalizada. Simplificando, se você tem dados de uma plataforma, você pode fornecê-los ao sistema de backtest na plataforma FMZ para backtest, de acordo com os requisitos de formato da plataforma FMZ.

    img

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.

Estude, teste e pense

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 Square, Forums e Digest na plataforma de negociação de quantidade FMZ.

img

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:imgSe 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.img

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))
}

img

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])
    }
}

img

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.


Mais.