A tendência do mercado da noite passada para Big Pie e Two Pie foi realmente oportuna. Faz muito tempo que não tem sido uma tendência tão suave.

Desta vez vamos falar sobre como usar os registros históricos de transações de B.

Os funcionários do B'an compartilharam muitos dados de transações. Há uma página no Github onde você pode ver detalhadamente quais categorias de dados estão disponíveis e como baixá-los. Aqui apresento principalmente o download, organização e uso dos registros agregados de transações aggTrades.

aggTrades é o registro da transação após agregação, ou seja, a Binance agrega diversas transações consecutivas executadas ao mesmo tempo, na mesma direção e com o mesmo preço em um registro, semelhante a uma linha K, mas com apenas um preço e sem preço mais alto. preço mais baixo e assim por diante. Por exemplo, se houver um pedido grande feito no mercado e muitos pedidos pequenos forem feitos para comê-lo, então esses pedidos que chegam ao mesmo tempo em um período de tempo muito curto (milissegundos) serão agregados. Ou pode ser a ordem que o mecanismo de correspondência pode corresponder ao mesmo tempo.

A vantagem dos dados aggTrades é que eles podem ter registros de transações em nível de milissegundos, mas não possuem um volume de dados tão grande quanto as negociações puras (ou seja, os dados mais originais, não agregados ao mesmo preço), o que é um bom compromisso para plano de dados de alta frequência.

Geralmente, as estratégias de frequência quase alta utilizam esses dados agregados. Esses dados de alta frequência geralmente usam dados de transações e carteiras de pedidos. A quantidade de dados é muito grande e é muito inconveniente de processar. Não só consome recursos, mas também aumenta a dificuldade de programação.

aggTrades pode ser usado para sintetizar linhas K curtas de qualquer nível, como linhas K curtas de 5, 10 e 15 segundos. Ainda é possível usar essas linhas K para algumas estratégias de negociação intradiária.

Por exemplo, a seguir está a linha k de nível de 1 segundo postada anteriormente.

图片

Há também arbitragem de alta frequência.Hoje em dia, é difícil ganhar dinheiro através de arbitragem normal.Se a frequência for maior, pode haver algumas oportunidades.

Este tipo de dados tick-by-tick também pode ser usado para sintetizar k-lines alternativas, como barras iguais. O uso de aggTrades é muito mais preciso do que o uso de k-lines minúsculas. estratégias de linha k complementares. Posso escrever sobre como sintetizar esse tipo de barra nos próximos artigos.

A seguir está a introdução do código (a maior parte do código está em anexo, porque é muito e muito longo, não vou postar no texto). O código de download é o exemplo da Binance, mas com algumas pequenas alterações, e meu código de processamento.

Aqui está um exemplo de dados mensais (a Binance também fornece dados diários). O código é todo single-threaded e executado de forma síncrona, sem assíncrono ou multi-threading. Como esses downloads são executados uma vez por mês ou n dias, você pode esperar um pouco e não há necessidade de complicar.

Geralmente não há problema em usar dados mais antigos para backtesting básico, porque o backtesting de dados de alta frequência desempenha principalmente um papel analítico e depende principalmente do preço real, porque a derrapagem pode ser grande ou a ordem pendente não é concluída, e o acompanhamento O pedido não foi capturado, a troca atrasou, etc.

Mais tarde, porém, também tenho o código para baixar dados em tempo real, que consiste em baixar os dados aggTrades do dia para verificar instantaneamente os preços de mercado perdidos. Os dados diários da Binance só estão disponíveis com um atraso de vários dias. Se quiser usá-lo com urgência, você mesmo terá que rastreá-lo usando a API do Exchange.

1 baixar

A primeira parte do código são os dois arquivos agg.py e utility.py, e então use

python3 agg.py -y 2022 -m 6 -t um -folder/seu caminho especificado

Aqui está um exemplo de comando para baixar todos os dados aggTrades de contrato perpétuo para junho de 2022. Geralmente leva cerca de dez minutos para fazer o download. Os dados são baixados compactados, então a próxima etapa é descompactá-los.

2. Descompacte

Para descompactar, use o arquivo unzip.py. É um código muito curto com apenas duas funções, uma para descompactar os dados mensais e outra para descompactar os dados diários.

Após extrair o arquivo zip, ele se torna um arquivo csv. O problema dos arquivos csv é que eles ocupam mais espaço no disco rígido e a velocidade de carregamento é mais lenta. Portanto, a próxima etapa é converter o arquivo csv em um arquivo pickle. Você pode compactar ou não compactar de acordo com sua situação. Se o seu disco rígido for grande, é recomendável não compactá-lo. Geralmente, os dados sustentáveis ​​são de cerca de 50 GB por mês, então depende da sua situação. Geralmente, você pode comprar um disco rígido SSD externo mais rápido. Hoje em dia, 1 TB custa apenas algumas centenas de yuans, o que já é barato e carrega muito rapidamente durante o backtesting.

3. Converta compactação em pickle

O código de conversão está em csv_to_pkl.py. Conforme mencionado acima, é mais fácil salvar e usar após a conversão.

Após a conversão, apaguei manualmente o arquivo csv, caso contrário ele ocuparia o disco rígido. Não há código para implementar esta etapa. Como mencionado anteriormente, estas são operações de frequência muito baixa e não precisam ser totalmente automatizadas. Eu uso a compactação gzip nível 2 no código de exemplo. Geralmente, os dados de um mês são inferiores a 10 GB após a compactação.

O csv não apenas ocupa espaço, mas também carrega lentamente. Recomenda-se usar o formato pickle. No geral, seu desempenho é bom, mas o segredo é uma boa compatibilidade. Se você quiser usar servidores em nuvem ou muitos outros pacotes de código aberto, eles são mais compatíveis que o Feather e similares.

Pronto, agora que os dados estão prontos, você pode começar a estudar estratégias.

4. Download instantâneo de dados

Como mencionado anteriormente, os dados no servidor de dados da Binance estão atrasados ​​em um ou dois dias. Se você precisar verificar o desempenho de sua estratégia nas condições atuais de mercado, mas não publicou o preço real de uma determinada moeda a tempo, poderá usar o código a seguir para baixar o aggTrades de volta ao horário especificado. Eu costumo usá-lo para baixar as 12 horas atuais de dados para ver o desempenho da estratégia.

Se o código a seguir for usado, ele precisará ser modificado para a hora de início mais recente.

图片

Os dados baixados são assim. Você pode consultar a documentação e transações recentes (acumulação) da Binance para ver seus significados específicos.

图片

Com esses dados brutos, você pode usar df.resample(bar_size).agg() para agregá-los em qualquer linha k de nível necessária e pode fazer o que quiser.

afinal

Basicamente esta é a preparação dos dados aggTrades que usei antes. As estratégias atuais estão se tornando cada vez mais volumétricas e mais categorias de estratégias podem ser desenvolvidas usando dados mais granulares. A complementaridade entre estratégias é a chave para a multiestratégia.

Se precisar do código acima, entre em contato conosco para obtê-lo.