La tendencia del mercado de anoche para Big Pie y Two Pie fue realmente oportuna. No había sido una tendencia tan fluida en mucho tiempo.

Esta vez hablemos sobre cómo utilizar los registros históricos de transacciones de B.

Los funcionarios de B'an han compartido muchos datos de transacciones. Hay una página de Github donde puedes ver en detalle qué categorías de datos están disponibles y cómo descargarlas. Aquí presento principalmente la descarga, organización y uso de los registros de transacciones agregados aggTrades.

aggTrades es el registro de transacciones después de la agregación, es decir, Binance agrega varias transacciones consecutivas ejecutadas al mismo tiempo, en la misma dirección y al mismo precio en un registro, similar a una línea K, pero con un solo precio y sin precio más alto, precio más bajo, etc. Por ejemplo, si se realiza un pedido grande en el mercado y se realizan muchos pedidos pequeños para consumirlo, entonces estos pedidos que llegan al mismo tiempo en un tiempo muy corto (milisegundos) se agregarán. O puede ser el orden que el motor correspondiente puede igualar al mismo tiempo.

La ventaja de los datos de aggTrades es que puede tener registros de transacciones a nivel de milisegundos, pero no tiene un volumen de datos tan grande como las transacciones puras (es decir, los datos más originales, no agregados al mismo precio), lo cual es una buen compromiso para el plan de datos de alta frecuencia.

Generalmente, las estrategias de casi alta frecuencia utilizan este tipo de datos agregados. Aquellos que tienen una frecuencia muy alta suelen utilizar datos comerciales y de libros de pedidos. La cantidad de datos es muy grande y es muy inconveniente de procesar si no se utilizan. No solo consume recursos, sino que también aumenta la dificultad de programación.

aggTrades se puede utilizar para sintetizar líneas K cortas de cualquier nivel, como líneas K cortas de 5, 10 y 15 segundos. Todavía es posible utilizar dichas líneas K para algunas estrategias de negociación intradiaria.

Por ejemplo, la siguiente es la línea k de nivel de 1 segundo publicada anteriormente.

图片

También existe el arbitraje de alta frecuencia. Ahora es difícil ganar dinero con el arbitraje ordinario y es muy arriesgado. Si la frecuencia es mayor, puede haber algunas oportunidades.

Este tipo de datos tick por tick también se puede utilizar para sintetizar líneas K alternativas, como barras iguales y similares. El uso de aggTrades es mucho más preciso que el uso de líneas K diminutas. La estrategia CTA producida de esta manera. en comparación con la estrategia ordinaria de línea K complementaria. Quizás escriba sobre cómo sintetizar este tipo de barra en los próximos artículos.

La siguiente es la introducción del código (la mayor parte del código está en el archivo adjunto, debido a que es demasiado y demasiado largo, no lo publicaré en el texto). El código de descarga es el ejemplo de Binance, pero con algunos ligeros cambios, y mi código de procesamiento.

A continuación se muestra un ejemplo de datos mensuales (Binance también proporciona datos diarios). Todo el código es de un solo subproceso y se ejecuta de forma sincrónica, sin asincrónica ni multiproceso. Debido a que dichas descargas se ejecutan una vez al mes o n días, puedes esperar un poco y no hay necesidad de complicarlo.

En general, no hay ningún problema con el uso de datos más antiguos para el backtesting básico, porque el backtesting de datos de alta frecuencia desempeña principalmente una función analítica y depende principalmente del precio real, porque el deslizamiento puede ser grande o la orden pendiente no se completa, y el seguimiento El pedido no fue captado, el cambio se retrasó, etc.

Pero luego también tengo el código para descargar datos en tiempo real, que consiste en descargar los datos de aggTrades del día para verificar instantáneamente los precios de mercado perdidos. Los datos diarios de Binance solo están disponibles con un retraso de varios días. Si desea usarlo con urgencia, debe rastrearlo usted mismo utilizando la API de Exchange.

1 descarga

La primera parte del código son los dos archivos agg.py y utilidad.py, y luego usa

python3 agg.py -y 2022 -m 6 -t um -folder /su ruta especificada

A continuación se muestra un ejemplo de un comando para descargar todos los datos de aggTrades del contrato perpetuo para junio de 2022. La descarga suele tardar unos diez minutos. Los datos se descargan comprimidos, por lo que el siguiente paso es descomprimirlos.

2. Descomprimir

Para descomprimir, use el archivo unzip.py. Es un código muy corto con solo dos funciones, una para descomprimir datos mensuales y la otra para descomprimir datos diarios.

Después de extraer el archivo zip, se convierte en un archivo csv. El problema de los archivos csv es que ocupan más espacio en el disco duro y tardan más en cargarse. Entonces, el siguiente paso es convertir el archivo csv en un archivo pickle. Puede comprimir o no comprimir según su propia situación. Si su disco duro es grande, se recomienda no comprimirlo. Generalmente, los datos sostenibles son aproximadamente 50 GB por mes, por lo que depende de su situación. Generalmente, puedes comprar un disco duro SSD externo más rápido. Hoy en día, 1 TB solo cuesta unos cientos de yuanes, lo que ya es barato. También se carga muy rápidamente durante las pruebas retrospectivas.

3. Convertir compresión en encurtido

El código de conversión está en csv_to_pkl.py. Como se mencionó anteriormente, es más fácil de guardar y usar después de la conversión.

Después de la conversión, eliminé manualmente el archivo csv; de lo contrario, ocuparía el disco duro. No hay ningún código para implementar este paso. Como se mencionó anteriormente, se trata de operaciones de muy baja frecuencia y no es necesario automatizarlas por completo. Utilizo compresión gzip nivel 2 en el código de ejemplo. Generalmente, los datos de un mes ocupan menos de 10 GB después de la compresión.

CSV no sólo ocupa espacio, sino que también se carga lentamente. Se recomienda utilizar formato encurtido. En general, su rendimiento es bueno, pero la clave es una buena compatibilidad. Si desea utilizar servidores en la nube o muchos otros paquetes de código abierto, son más compatibles que Feather y similares.

Bien, ahora que los datos están listos, puedes empezar a estudiar estrategias.

4. Descarga de datos instantánea

Como se mencionó anteriormente, los datos en el servidor de datos de Binance están retrasados ​​uno o dos días. Si necesita verificar cómo se desempeñará su estrategia en las condiciones actuales del mercado, pero no ha publicado el precio real de una determinada moneda a tiempo, puede usar el siguiente código para descargar aggTrades nuevamente al momento especificado. Normalmente lo uso para descargar las 12 horas actuales de datos y ver cómo puede funcionar la estrategia.

Si se utiliza el siguiente código, es necesario modificarlo a la última hora de inicio.

图片

Los datos descargados son así. Puede consultar la documentación de Binance y las transacciones recientes (acumulación) para ver sus significados específicos.

图片

Con estos datos sin procesar, puedes usar df.resample(bar_size).agg() para agregarlos en cualquier línea k de nivel que necesites, y puedes hacer lo que quieras.

por fin

Básicamente, esta es la preparación de los datos de aggTrades que usé antes. Las estrategias actuales se están volviendo cada vez más volumétricas y se pueden desarrollar más categorías de estrategias utilizando datos más granulares. La complementariedad entre estrategias es la clave de la multiestrategia.

Si necesita el código anterior, puede contactarnos para obtenerlo.