Negociação Quantitativa de Criptomoedas para iniciantes - Levá-lo mais perto da Criptomoeda Quantitativa (3)

Autora:Lydia., Criado: 2022-07-29 09:37:22, Atualizado: 2023-09-21 21:03:55

img

Negociação Quantitativa de Criptomoedas para iniciantes - Levá-lo mais perto da Criptomoeda Quantitativa (3)

Mensagem de erro

Nos artigos anteriores, aprendemos que a chamada negociação programática e quantitativa é um programa de script baseado nos dados obtidos da exchange através de uma série de cálculos, julgamentos e gatilhos para fazer algumas operações e operar a conta de exchange para negociar. Estas ações de aquisição de dados e contas operacionais são todas realizadas através da interface API da exchange. Simplificando, o programa de script interage com a exchange. Como é uma interação, deve haver interação normal e interação anormal. Quando uma interação anormal ocorre, a interface retorna a mensagem de exceção.

É claro que existem todos os tipos de sinais de erro e mensagens de erro nos sistemas de negociação programática e quantitativa no mercado, ou nos programas desenvolvidos por nós mesmos. Essas mensagens de erro não se limitam às mensagens de erro relatadas pela interface da API de troca. Há também erros de exceção de tempo de execução do programa, erros de configuração, erros de gramática do programa e assim por diante.

As mensagens de erro na plataforma de negociação quantitativa da FMZ também se dividem grosso modo em várias categorias:

  • Erro gramatical da estratégia Este tipo de erro é o mais comum, porque o iniciante não está familiarizado com a programação, e há erros gramaticais na escrita de código durante a fase de aprendizagem e teste.

    img

    Esse tipo de erro geralmente pode ser visto na página de edição da estratégia, e a estratégia não pode ser executada (um erro será relatado diretamente no tempo de execução, como mostrado na figura abaixo).

    imgEntão, depois de escrever a estratégia, dê uma olhada habitual na página de edição da estratégia da plataforma para ver se há um XX vermelho, se sim, deve haver um erro óbvio.

  • Exceções do programa de tempo de execução causadas pelo programa de estratégia BUG Há um bug no programa. Quando o programa está sendo executado, o desencadeamento de uma exceção fará com que o programa pare anormalmente e exiba tais mensagens de erro.

    img

    img

    Tais erros farão com que o programa seja anormal e o programa pare de funcionar.

  • Erros causados por configuração e configurações inadequadas

    Na plataforma FMZ, o par de negociação é uniformemente definido no formato deX_Y, onde X representa o nome da moeda de negociação e Y representa o nome da moeda denominada (a moeda denominada do par de contratos de negociação de futuros baseados em moeda é normalmente expressa em USD, como descrito nos artigos anteriores), tais como:BTC_USDT, se eu escrever o par de negociação aleatoriamente, escrever comoBTC-USDT.

    img

    Um erro foi notificado no sistema de backtesting da plataforma FMZ:

    img

    Além disso, um erro que os iniciantes frequentemente encontram:

    img

    Este tipo de erro deve-se à alteração da palavra-passe na conta da plataforma FMZ, resultando na invalidação doAPI KEYno objeto de troca configurado (a API KEY do usuário é configurada na plataforma FMZ depois de ser criptografada no navegador), e a estratégia não pode ser iniciada, portanto, um erro é relatado.

  • Um erro é relatado na chamada de interface

    Em artigos anteriores, aprendemos que as interfaces na plataforma FMZ são divididas emInterfaces que geram solicitações de redeeInterfaces que não geram solicitações de rede. O erro de interface não fará com que o programa de estratégia pare, geralmente devido a exceções de chamada de interface e os dados errados são devolvidos, a estratégia não faz tolerância a falhas, e o erro de exceção de programa causado pelos dados errados faz com que o programa pare (o conceito de tolerância a falhas mencionado em artigos anteriores).

    Aqui estão várias mensagens de erro de interface que geram solicitações de rede:

    • Timeout da rede

      Uma das mensagens de erro mais frequentes encontradas pelos iniciantes é o uso de equipamentos de rede domésticos (seu próprio computador ou servidor doméstico).

    • Erro http 429

      Uma das mensagens de erro clássicas é que a interface de troca é chamada com muita frequência, excedendo o limite de frequência da troca (mencionado em artigos anteriores). Alguns iniciantes podem dizer que gostaria de candidatar-me aAPI KEYA frequência dos limites de acesso de interface por trocas é geralmente baseada em endereços IP. Simplificando, desde que todas as solicitações enviadas para um endereço IP sejam contadas neste endereço IP, o servidor de troca negará acesso se a solicitação exceder o limite.

    • Relatório de erros sobre as atividades da interface de troca

      O timeout e o 429 mencionados acima são erros de rede. Se houver um problema no negócio da interface de troca, um erro também será relatado. Por exemplo, se eu quiser obter o preço do mercado spot, mas eu configurar um par de negociação não existente. Eu testei na ferramenta de depuração da plataforma FMZ, a ferramenta de depuração é uma ferramenta de teste muito conveniente, que é muito adequada para testes reais de bot de chamadas de função e aquisição de dados.

      img

      Resultados de 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 real.

      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 (como visto aqui"err-msg":"invalid symbol")). Por exemplo, existem muitos erros relacionados ao negócio, como definir alavancagem quando algumas bolsas não suportam valores de alavancagem com partes decimais, neste momento, se o valor de alavancagem tiver uma parte decimal, também causará um erro na chamada da interface.

    Listar 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 geram solicitações de rede, por exemplo:

      img

      No entanto, se o parâmetro for transmitido incorretamente ou rabiscado, será notificado um erro.

      img

    Mas independentemente do tipo de erro, a mensagem de erro exibida é a informação chave para encontrar o problema, e o problema geralmente pode ser visto a partir da mensagem de erro."err-msg":"invalid symbol"In the above example, the translation is: err msg: símbolo inválido . It is probably known that the trading pair is set incorrectly, because English symbols are usually used to represent the trading code and trading pair. Para problemas comuns, há um post que continuará a ser coletado para consulta:https://www.fmz.com/bbs-topic/9158

Sistema de ensaio de retrocesso

O sistema de backtesting também é o foco de uma ferramenta quantitativa. O sistema de backtesting pode testar protótipos de estratégia convenientemente, possíveis bugs e problemas lógicos na estratégia de teste preliminar.

A seguir está uma breve descrição do sistema de backtesting na plataforma FMZ a partir do nível das diferentes linguagens de estratégia suportadas pela FMZ. (Algumas introduções do sistema de backtesting foram mencionadas nos artigos anteriores)

  • JavaScript

    Backtesting no navegador usa recursos de hardware nativos.

  • Python

    Ao fazer backtesting em um docker, você pode escolher para qual docker atribuir (ou o docker implantado por si mesmo, ou o docker público na plataforma FMZ).

  • 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 o código, a compilação pode não passar, e uma mensagem de erro aparecerá diretamente).

  • MyLanguage

    A implementação subjacente é o JavaScript, e o backtesting também é realizado no navegador.

  • Visualização

    A implementação subjacente é o JavaScript, e o backtesting também é realizado no navegador.

O sistema de backtesting na plataforma de negociação FMZ Quant é dividido em dois modos de backtesting (isso é independentemente da linguagem da estratégia, esta é a configuração de backtesting e o backtesting da estratégia em todas as linguagens é o mesmo).

img

    1. Backtesting ao nível da simulação Em termos simples, o backtesting de nível de simulação refere-se aos dados de preço de cada nó de tempo que é simulado e gerado de acordo com os dados da linha K.
    A bar in the K-line opens high and closes low, which constitutes a price framework, within which the prices are all in this price frame, so as long as the generated price opens high and closes low in this K-line frame within the range, the simulated price is reasonable.
    

    É como uma simulação como esta:https://www.fmz.comimgNaturalmente, quando o sistema de backtesting real implementa esta simulação, a situação é um pouco mais complicada do que a mostrada na figura. Conhecendo este princípio, é importante notar as desvantagens do backtesting a nível de simulação, embora o backtesting a 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 um por um).tendência simulada de movimento de carrapatos, a estratégia irá funcionar muito bem (mas, na realidade, o preço pode não ser esta tendência, embora o preço esteja dentro do quadro desta barra da linha K). A linha K usada para gerar os dados de tick simulados aqui é chamada de linha K inferior, e o período desta linha K é chamadoo período da linha K inferior, que é definido como indicado na página de definição da estratégia:

    imgA definição de 1 minuto aqui significa que os dados da linha K com um período de 1 minuto são utilizados como fonte de dados para a geração do tick simulado.

    Outro ponto é que, para estratégias de alta frequência, não é obviamente apropriado utilizar backtesting a nível de simulação.

    1. Backtesting de nível de bot real Depois de falar sobre backtesting de nível de simulação, vamos falar sobre backtesting de nível de bot real. Simplificando, o backtesting no nível de bot real é a liberação real de dados de preço a cada segundo durante o backtesting. Ele permite que a estratégia para retraçar o preço por segundo do mercado. Este modo de backtesting permite que você para backtest estratégias com alta frequência de negociação e obter um certo grau de valor de referência. A desvantagem é que a quantidade de dados de backtesting no nível de bot real é muito grande para ser backtested em um grande intervalo de tempo (o tempo é geralmente inferior a 1 dia).dados divididos(dados de transação tick-by-tick, e dados de profundidade do mercado também tem instantâneos segundo a segundo no backtesting real bot, por isso a quantidade de dados de backtesting real bot é enorme) para aumentar o intervalo de backtesting adequadamente, como mostrado na figura:

    img

Onde está a fonte de dados do sistema de backtesting da plataforma de negociação quântica FMZ? O sistema de backtesting usa os dados do centro de dados da plataforma FMZ por padrão. O centro de dados da plataforma FMZ coleta automaticamente os dados de mercado definidos de cada moeda de cada bolsa e os fornece ao sistema de backtesting na plataforma.

    1. Usar dados do centro de dados FMZ por padrão Como mencionado em artigos anteriores:https://www.fmz.com/bbs-topic/9536Os dados de backtesting fornecidos pela plataforma só suportam um número limitado de pares de negociação (os dados de backtesting de todo o mercado e de todas as moedas são um número astronômico e é irrealista coletá-los todos.
    1. Usar dados de fonte de dados personalizados Você pode usar as opções na página de backtesting para definir uma fonte de dados personalizada.

    img

    Há também algumas notas sobre fontes de dados personalizadas na documentação da API FMZ:https://www.fmz.com/api#custom-data-source

Aprender, testar, pensar

Não se pode fazer negociação programática e quantitativa semaprendizagem, Ensaios, ePensamento- Não. A primeira é que, no que se refere à política de segurança, a Comissão não tem qualquer conhecimento da existência de um sistema de segurança comum.Encontrar informaçõesEntão...Experimenta-o., Pensar e analisar, se o problema não for resolvido, repita as ações acima.

Mas, quando um iniciante encontra problemas, ele ou ela sentirá:

É muito difícil programar, quantificar e escrever estratégias. Depois de o ver durante muito tempo, ainda estou atordoado! Quero desistir antes de começar! - Não.

Começar na plataforma FMZ é muito simples na verdade. Primeiro de tudo, você deve ser bom em pesquisar informações.

img

O segundo é a habilidade prática, que pode ser facilmente testada usando o sistema de backtesting e ferramentas de depuração. Isso não significa testar uma estratégia completa.

Este é o site de tutoriais onde eu costumo aprender JS:https://www.runoob.com/js/js-loop-for.html, não se limita ao JS, todos os tipos de conhecimento de TI podem ser consultados e aprendidos aqui. Por exemplo, eu não sei como usar as expressões regulares do JS, o que devo fazer? Claro, pesquise as informações primeiro, e depois tente fazê-lo ~

Vi um exemplo disto:imgQuero testá-lo, e posso usar o sistema de backtesting da plataforma FMZ para testar e aprender.

Configure uma troca aleatória no sistema de backtestingimg

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 an email address? ", " Answer: ", IsEmail(strEmailAddress1))
    
    var strEmailAddress2 = "123456789@qq.com"
    Log(strEmailAddress2, " Is it an email address? ", " Answer: ", IsEmail(strEmailAddress2))
}

img

Olha, que ferramenta de aprendizagem! Por exemplo, eu quero aprender a escrever a lógica do loop da linguagem JavaScript, e experimentá-lo:

Loop através dos elementos de uma variável de matriz na ordem em que aparecem na matriz:

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 num instante? Na verdade, no FMZ, você pode aprender os fundamentos do JavaScript no sistema de backtesting enquanto assiste ao tutorial do JavaScript. A gramática do JavaScript está quase dominada, e entrando no próximo estágio, você precisa usar a interface de troca para obter testes de dados.ferramenta de depuraçãode uma plataforma FMZ para realizar testes reais de interface.

Em seguida, é para pensar mais, tirar conclusões de um caso, verificação de testes, análise comparativa, etc. Isso faz com que a aprendizagem para começar muito rápido.


Relacionados

Mais.