avatar of 发明者量化-小小梦 发明者量化-小小梦
focar em Mensagem privada
4
focar em
1271
Seguidores

Novatos em negociação quantitativa nos círculos de criptomoedas, dêem uma olhada nisso - Levando você mais perto da negociação quantitativa nos círculos de criptomoedas (parte 3)

Criado em: 2021-05-06 11:20:04, atualizado em: 2024-12-04 21:27:24
comments   1
hits   3182

Novatos em negociação quantitativa nos círculos de criptomoedas, dêem uma olhada nisso - Levando você mais perto da negociação quantitativa nos círculos de criptomoedas (parte 3)

Novatos em negociação quantitativa nos círculos de criptomoedas, dêem uma olhada nisso - Levando você mais perto da negociação quantitativa nos círculos de criptomoedas (parte 3)

Mensagem de erro

Nos artigos anteriores, aprendemos que a chamada negociação programada e quantitativa é um programa de script que realiza algumas operações com base nos dados obtidos da bolsa após uma série de cálculos, julgamentos e gatilhos para operar a conta da bolsa para negociação. Essas ações de obtenção de dados e operação de contas são todas realizadas por meio da interface da API da exchange. Simplificando, é a interação entre o programa de script e a troca. Como é uma interação, deve haver interação normal e interação anormal. Quando ocorre uma interação anormal, a interface retorna as informações de exceção.

É claro que os sistemas de negociação programados e quantitativos no mercado, ou programas desenvolvidos internamente, terão vários avisos e mensagens de erro. Essas mensagens de erro não se limitam às mensagens de erro relatadas pela interface da API de troca. Há também coisas como: erros de exceção de tempo de execução do programa, erros de configuração, erros de sintaxe do programa, etc.

Na plataforma de negociação quantitativa do Inventor, as mensagens de erro podem ser divididas em várias categorias:

  • Erro de sintaxe de política Esse tipo de erro é o mais comum, geralmente porque os novatos não estão familiarizados com programação e há erros de sintaxe no código escrito durante a fase de aprendizado e teste. Por exemplo:

Novatos em negociação quantitativa nos círculos de criptomoedas, dêem uma olhada nisso - Levando você mais perto da negociação quantitativa nos círculos de criptomoedas (parte 3)

O código não possui caracteres como colchetes. Esse tipo de erro geralmente fica visível na página de edição da política, e a política não pode ser executada (um erro será relatado diretamente durante o tempo de execução, conforme mostrado na figura abaixo).

Novatos em negociação quantitativa nos círculos de criptomoedas, dêem uma olhada nisso - Levando você mais perto da negociação quantitativa nos círculos de criptomoedas (parte 3) Então, depois de escrever a estratégia, costumo dar uma olhada na página de edição da estratégia da plataforma para ver se há um pequeno XX vermelho. Se houver, deve haver um erro óbvio.

  • Exceção de programa de tempo de execução causada por BUG do programa de política Há um BUG no programa. Quando o programa estiver em execução, disparar uma exceção fará com que o programa pare anormalmente e exiba esse tipo de mensagem de erro.

Novatos em negociação quantitativa nos círculos de criptomoedas, dêem uma olhada nisso - Levando você mais perto da negociação quantitativa nos círculos de criptomoedas (parte 3)

Novatos em negociação quantitativa nos círculos de criptomoedas, dêem uma olhada nisso - Levando você mais perto da negociação quantitativa nos círculos de criptomoedas (parte 3)

Esses erros farão com que o programa falhe e pare de ser executado.

  • Erros causados ​​por configurações e ajustes inadequados

Na plataforma FMZ, os pares de negociação são uniformemente definidos comoX_YNeste formato, X representa o nome da moeda de negociação e Y representa o nome da moeda denominada (a moeda denominada dos pares de negociação de contratos baseados em moedas futuras geralmente é expressa em USD, que foi introduzido em artigos anteriores). Por exemploBTC_USDT, se eu escrever o par de negociação aleatoriamente,BTC-USDT

Novatos em negociação quantitativa nos círculos de criptomoedas, dêem uma olhada nisso - Levando você mais perto da negociação quantitativa nos círculos de criptomoedas (parte 3)

Erro relatado no sistema de backtesting da plataforma FMZ:

Novatos em negociação quantitativa nos círculos de criptomoedas, dêem uma olhada nisso - Levando você mais perto da negociação quantitativa nos círculos de criptomoedas (parte 3)

Reportar um erro em negociação real:

Novatos em negociação quantitativa nos círculos de criptomoedas, dêem uma olhada nisso - Levando você mais perto da negociação quantitativa nos círculos de criptomoedas (parte 3)

Além disso, um erro comum que os novatos encontram:

https://www.fmz.com![Novatos em negociação quantitativa nos círculos de criptomoedas, dêem uma olhada nisso - Levando você mais perto da negociação quantitativa nos círculos de criptomoedas (parte 3)](/upload/asset//345be4d2aa663dd2c02cf5b97f95ce03fc0a7378.png)

Este tipo de erro é causado pela alteração da senha da conta da plataforma FMZ, resultando emAPI KEYInválido (a CHAVE API do usuário é criptografada no navegador e depois configurada na plataforma FMZ), a estratégia não pode ser iniciada e um erro é relatado.

  • Erro de chamada de interface

Erros de chamada de interface são frequentemente encontrados ao executar estratégias. Em artigos anteriores, aprendemos que as interfaces na plataforma FMZ são divididas emInterface para geração de solicitações de redeInterface que não gera requisições de rede. Erros de interface não farão com que o programa de política pare. Isso geralmente é devido a uma exceção de chamada de interface, que retorna dados incorretos. Então a política não tem tolerância a falhas, e o erro de exceção do programa causado pelos dados incorretos faz com que o programa pare (o conceito de tolerância a falhas foi discutido em artigos anteriores). mencionado).

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

  • Tempo limite da rede

    Novatos em negociação quantitativa nos círculos de criptomoedas, dêem uma olhada nisso - Levando você mais perto da negociação quantitativa nos círculos de criptomoedas (parte 3)

    Uma das mensagens de erro que os iniciantes costumam encontrar é o uso de dispositivos de rede domésticos (seus próprios computadores ou servidores domésticos). Como a maioria das trocas está bloqueada, muitas delas ficam basicamente inacessíveis pela rede doméstica, e a interface de acesso relatará um tempo limite. (mencionado em artigos anteriores)

  • erro http 429

    https://www.fmz.com![Novatos em negociação quantitativa nos círculos de criptomoedas, dêem uma olhada nisso - Levando você mais perto da negociação quantitativa nos círculos de criptomoedas (parte 3)](/upload/asset//65057d99e2acdf9e237130ae7dc8082d333dc36b.png)

    Uma das mensagens de erro clássicas. O motivo é que a interface de troca é chamada com muita frequência, excedendo o limite de frequência da troca. (mencionado em artigos anteriores) Alguns novos alunos podem dizer: Vou me candidatar a mais intercâmbios.API KEYOu posso simplesmente solicitar mais algumas contas de câmbio. Precisamos saber que as trocas geralmente limitam a frequência de acesso das interfaces com base em endereços IP. Simplificando, desde que todas as solicitações enviadas de um endereço IP sejam contadas neste endereço IP, se o limite for excedido, o servidor de troca negará o acesso para a solicitação enviada por este endereço IP. .

  • Relatório de erros no nível comercial da interface de troca

    O tempo limite e o 429 mencionados acima são erros de nível de rede. Erros também serão reportados se ocorrerem problemas no nível de negócios da interface de câmbio. Por exemplo, eu quero obter cotações spot, mas eu defini um par de negociação que não existe. 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 em tempo real de chamadas de função, aquisição de dados e outras necessidades.

    Novatos em negociação quantitativa nos círculos de criptomoedas, dêem uma olhada nisso - Levando você mais perto da negociação quantitativa nos círculos de criptomoedas (parte 3)

    Não há diferença entre os resultados da execução da ferramenta de depuração e a execução real. Novatos em negociação quantitativa nos círculos de criptomoedas, dêem uma olhada nisso - Levando você mais perto da negociação quantitativa nos círculos de criptomoedas (parte 3)

    Huobi	错误	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 transações é inválido (como pode ser visto aqui"err-msg":"invalid symbol")。 Por exemplo, há muitos desses erros relacionados a negócios. Por exemplo, ao definir alavancagem, algumas bolsas não suportam valores de alavancagem com partes decimais. Neste momento, se o valor de alavancagem contiver uma parte decimal, isso também causará um erro de chamada de interface.

Listar uma chamada de interface que não gera uma solicitação de rede

  • Defina o código do contrato futuro Algumas interfaces definem apenas algumas variáveis ​​globais no sistema e não geram solicitações de rede, por exemplo:

    Novatos em negociação quantitativa nos círculos de criptomoedas, dêem uma olhada nisso - Levando você mais perto da negociação quantitativa nos círculos de criptomoedas (parte 3)

    Entretanto, ocorrerão erros se os parâmetros forem passados ​​incorretamente ou escritos aleatoriamente.

    Novatos em negociação quantitativa nos círculos de criptomoedas, dêem uma olhada nisso - Levando você mais perto da negociação quantitativa nos círculos de criptomoedas (parte 3)

Entretanto, não importa o tipo de erro, a mensagem de erro exibida é a informação essencial para encontrar o problema, e o problema geralmente pode ser identificado a partir da mensagem de erro. Você pode usar ferramentas de tradução para traduzir mensagens de erro e extrair informações importantes. Por exemplo, no exemplo acima"err-msg":"invalid symbol", tradução: “err msg”: “Símbolo inválido”. Você provavelmente sabe que as configurações do par de negociação estão erradas, porque símbolos em inglês são geralmente usados ​​para representar códigos e pares de negociação. Discutiremos brevemente as informações de erro. Há uma postagem que continuará coletando perguntas comuns para consulta: https://www.fmz.com/bbs-topic/1427

Sistema de Backtesting

O sistema de backtesting também é um ponto-chave em uma ferramenta quantitativa. O sistema de backtesting pode testar convenientemente protótipos de estratégia e testar preliminarmente potenciais bugs e problemas lógicos na estratégia. Precisamos ser racionais sobre o sistema de backtesting. O sistema de backtesting pode refletir alguns problemas da estratégia até certo ponto.

A seguir, explicaremos brevemente o sistema de backtesting na plataforma FMZ sob a perspectiva das diferentes linguagens de estratégia suportadas pela FMZ. (Algumas introduções ao sistema de backtesting foram mencionadas em artigos anteriores)

  • JavaScript

O backtest do lado do navegador usa os recursos de hardware local.

  • Python

Ao fazer backtesting em um custodiante, você pode escolher a qual custodiante alocar (seu próprio custodiante ou o custodiante público da plataforma FMZ). Dada a carga pesada sobre os custodiantes públicos na plataforma FMZ, é recomendável usar o custodiante local para backtesting (isso também será mais rápido. Ao fazer backtesting com o custodiante público, quando há muitas tarefas que excedem a carga, alguns backtesting as tarefas serão canceladas, resultando em atrasos no backtesting). (interrupção da medição).

  • C++

Ao contrário das linguagens de script, as políticas C++ precisam ser compiladas antes de poderem ser executadas. A estratégia da linguagem C++ será compilada primeiro na plataforma FMZ (servidor) (se houver um problema com o código, a compilação poderá falhar e uma mensagem de erro será exibida). Após a compilação, faça um backtest na plataforma FMZ (servidor).

  • Língua Mai

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

  • Visualização

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

O sistema de backtesting da Plataforma de Negociação Quantitativa Inventor tem dois modos de backtesting (este não distingue entre linguagens de estratégia, este são as configurações de backtesting e o backtesting de estratégia em várias linguagens é o mesmo).

Novatos em negociação quantitativa nos círculos de criptomoedas, dêem uma olhada nisso - Levando você mais perto da negociação quantitativa nos círculos de criptomoedas (parte 3)

Para obter instruções sobre o sistema de backtesting, consulte as informações no tutorial da plataforma:

https://www.fmz.com/bbs-topic/4158#%E7%AD%96%E7%95%A5%E5%9B%9E%E6%B5%8B

  • 1. Backtesting de nível de simulação Simplificando, o backtesting em nível de simulação serve para simular e gerar dados de preços para cada nó de tempo com base em dados da linha K.
  K线中一根柱子不是有高开低收么,构成了一个价格框架,在这个K线代表的时间范围内,价格都在这个价格框架内,所以只要生成的价格在这个K线高开低收框架范围内,这个模拟出来的价格就是合理的。

Assim como a simulação na figura: https://www.fmz.com![Novatos em negociação quantitativa nos círculos de criptomoedas, dêem uma olhada nisso - Levando você mais perto da negociação quantitativa nos círculos de criptomoedas (parte 3)](/upload/asset//35c54e14e29601352720d51f75e2d7674415f92e.png) Claro, quando o sistema de backtesting real implementa essa simulação, a situação é um pouco mais complicada do que a mostrada na figura. Não vamos nos aprofundar nisso aqui. É o suficiente entender o mecanismo de backtesting em nível de simulação. Conhecendo esse princípio, precisamos prestar atenção às desvantagens do backtesting em nível de simulação, embora o backtesting em nível de simulação seja muito rápido (porque os preços gerados pela simulação não são os preços reais divulgados um a um, segundo a segundo). Mas se a estratégia se encaixaTendência de mudança de tick simuladaIsso fará com que a estratégia tenha um desempenho muito bom (mas em situações reais o preço pode não se mover dessa maneira, embora o preço esteja dentro da estrutura desta coluna da linha K). A linha K usada para gerar dados de tick simulados é chamada de linha K subjacente, e o período desta linha K é chamadoCiclo da linha K inferior, defina-o conforme mostrado na página de configuração de política:

Novatos em negociação quantitativa nos círculos de criptomoedas, dêem uma olhada nisso - Levando você mais perto da negociação quantitativa nos círculos de criptomoedas (parte 3) A configuração de 1 minuto aqui significa que os dados da linha K com um período de 1 minuto são usados ​​como fonte de dados para gerar ticks simulados.

Outro ponto é que, para estratégias de alta frequência, obviamente não é apropriado usar backtesting em nível de simulação. No entanto, para estratégias de tendências, o uso de backtesting em nível de simulação ainda pode refletir o desempenho da estratégia até certo ponto.

  • 2. Backtesting em tempo real Tendo falado sobre backtesting em nível de simulação, vamos falar sobre backtesting em nível de tempo real. Simplificando, o backtesting em tempo real significa liberar dados de preços reais segundo a segundo durante o backtesting. Deixe a estratégia retroceder o preço a cada segundo no mercado. Neste modo de backtesting, algumas estratégias com alta frequência de negociação podem ser testadas, e um certo grau de valor de referência pode ser obtido. A desvantagem é que a quantidade de dados de backtesting em tempo real é muito grande para ser testada em um período maior (geralmente menos de 1 dia). Você pode fecharDados de carrapatos, reduza o nível de dados de profundidade (dados de transação, os dados de profundidade de mercado também têm instantâneos segundo a segundo no backtest em tempo real, então a quantidade de dados de backtest em tempo real é enorme), para aumentar apropriadamente o intervalo de backtest, como mostrado na figura:

Novatos em negociação quantitativa nos círculos de criptomoedas, dêem uma olhada nisso - Levando você mais perto da negociação quantitativa nos círculos de criptomoedas (parte 3)

De onde vêm os dados para o sistema de backtesting da Inventor Quantitative Trading Platform? 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 de cada moeda de cada exchange e os fornece ao sistema de backtesting na plataforma.

    1. Use os dados do centro de dados FMZ por padrão Mencionado em artigos anteriores: https://www.fmz.com/bbs-topic/6857#%E9%87%8F%E5%8C%96%E4%BA%A4%E6%98%93% E5%B9% B3%E5%8F%B0 Os dados de backtesting fornecidos pela plataforma suportam apenas pares de negociação limitados (os dados de backtesting para todo o mercado e todas as moedas são um número astronômico, e não é realista coletar todos eles. A plataforma coleta dados de mercado de bolsas e moedas tradicionais) .
    1. Use dados de fonte de dados personalizados Você pode usar as opções na página de backtesting para definir uma fonte de dados personalizada. Simplificando, se você tiver dados de uma determinada exchange, você pode fornecê-los ao sistema de backtesting da plataforma FMZ para backtesting de acordo com os requisitos de formato da FMZ plataforma.

Novatos em negociação quantitativa nos círculos de criptomoedas, dêem uma olhada nisso - Levando você mais perto da negociação quantitativa nos círculos de criptomoedas (parte 3)

Há também algumas instruções na documentação da API do FMZ sobre fontes de dados personalizadas: https://www.fmz.com/api#%E8%87%AA%E5%AE%9A%E4%B9%89%E6%95%B0%E6%8D%AE%E6%BA%90

Existem também algumas soluções na biblioteca FMZ: Novatos em negociação quantitativa nos círculos de criptomoedas, dêem uma olhada nisso - Levando você mais perto da negociação quantitativa nos círculos de criptomoedas (parte 3)

Novatos interessados ​​podem estudá-lo e consultá-lo.

Aprenda, Teste, Pense

A negociação programática e quantitativa são inseparáveisestudartestepensar。 Você não pode pensar em problemas no vácuo, isso seria ineficiente. A maneira mais eficaz de resolver e pensar sobre problemas éEncontrar informações,EntãoExperimente você mesmoAnálise do PensamentoSe o problema não for resolvido, repita os passos acima.

Mas geralmente quando um novato encontra um problema, ele sente:

“Ah, programação, quantificação e escrita de estratégias são muito difíceis.” “Estou olhando para isso há muito tempo, mas ainda estou confuso!” “Ainda não comecei e quero desistir!” ….

Na verdade, é muito simples começar na plataforma FMZ. Primeiro, você precisa ser bom em encontrar informações. Há muitas informações disponíveis para referência na Plataforma de Negociação Quantitativa do Inventor, na Estratégia Plaza, na Comunidade e na Biblioteca.

Novatos em negociação quantitativa nos círculos de criptomoedas, dêem uma olhada nisso - Levando você mais perto da negociação quantitativa nos círculos de criptomoedas (parte 3)

Depois, há a habilidade prática. Usar o sistema de backtesting e ferramentas de depuração pode facilitar os testes. Isso não significa testar uma estratégia completa. Na verdade, se você não tem nenhum conhecimento básico, você pode até aprender o básico da programação JavaScript no sistema de backtesting quantitativo FMZ.

Este é o site do tutorial onde costumo aprender JS: https://www.runoob.com/js/js-loop-for.html Não se limita a JS, todos os tipos de conhecimento de TI podem ser pesquisados ​​e aprendidos aqui. Por exemplo, não sei como usar a expressão regular do JS, o que devo fazer? Claro, verifique as informações primeiro e depois experimente~

Eu vi um exemplo assim: Novatos em negociação quantitativa nos círculos de criptomoedas, dêem uma olhada nisso - Levando você mais perto da negociação quantitativa nos círculos de criptomoedas (parte 3) Quero testá-lo e posso até usar o sistema de backtesting da plataforma FMZ para testar e aprender.

Configurar uma troca aleatoriamente no sistema de backtest Novatos em negociação quantitativa nos círculos de criptomoedas, dêem uma olhada nisso - Levando você mais perto da negociação quantitativa nos círculos de criptomoedas (parte 3)

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, " 是邮件地址么 ? ", " 回答:", IsEmail(strEmailAddress1))
    
    var strEmailAddress2 = "[email protected]"
    Log(strEmailAddress2, " 是邮件地址么 ? ", " 回答:", IsEmail(strEmailAddress2))
}

Novatos em negociação quantitativa nos círculos de criptomoedas, dêem uma olhada nisso - Levando você mais perto da negociação quantitativa nos círculos de criptomoedas (parte 3)

Olha só~ que ótima ferramenta de aprendizado! Por exemplo, quero aprender a escrever lógica de loop em JavaScript, então vamos tentar:

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

Novatos em negociação quantitativa nos círculos de criptomoedas, dêem uma olhada nisso - Levando você mais perto da negociação quantitativa nos círculos de criptomoedas (parte 3)

Você se sente motivado para estudar instantaneamente? Na verdade, no FMZ, você pode assistir ao tutorial de JavaScript enquanto aprende os conceitos básicos de JavaScript no sistema de backtesting. A sintaxe do JavaScript está quase dominada. Para entrar no próximo estágio, você precisa usar a interface de troca para obter dados para teste. Você também pode usar a plataforma FMZFerramentas de depuraçãoRealize testes de interface reais.

Então você precisa pensar mais, tirar inferências de um exemplo, testar e verificar, comparar e analisar, etc. Dessa forma, você pode começar muito rapidamente.