La tendance du marché d'hier soir pour Big Pie et Two Pie était vraiment opportune. Cela faisait longtemps que cette tendance n'avait pas été aussi fluide.
Cette fois, parlons de la façon d’utiliser les enregistrements de transactions historiques de B.
Les responsables de B'an ont partagé de nombreuses données de transaction. Il existe une page Github où vous pouvez voir en détail quelles catégories de données sont disponibles et comment les télécharger. Ici, je présente principalement le téléchargement, l'organisation et l'utilisation des enregistrements de transactions agrégés aggTrades.
aggTrades est l'enregistrement de transaction après agrégation, c'est-à-dire que Binance regroupe plusieurs transactions consécutives exécutées en même temps, dans la même direction et au même prix en un seul enregistrement, similaire à une ligne K, mais avec un seul prix et aucun prix le plus élevé. prix le plus bas et ainsi de suite. Par exemple, s’il y a une grosse commande passée sur le marché et que de nombreuses petites commandes sont passées pour la manger, alors ces commandes qui arrivent en même temps dans un temps très court (millisecondes) seront regroupées. Ou il peut s'agir de l'ordre dans lequel le moteur de correspondance peut correspondre en même temps.
L'avantage des données aggTrades est qu'elles peuvent contenir des enregistrements de transactions au niveau de la milliseconde, mais elles ne contiennent pas un volume de données aussi important que les transactions pures (c'est-à-dire les données les plus originales, non agrégées au même prix), ce qui est un bon compromis pour le forfait données haute fréquence.
Généralement, les stratégies quasi-haute fréquence utilisent de telles données agrégées. Ces données à très haute fréquence utilisent généralement des données sur les transactions et les carnets de commandes. La quantité de données est très importante et il est très difficile à traiter si elles ne sont pas utilisées. Non seulement consomme des ressources, mais augmente également la difficulté de programmation.
aggTrades peut être utilisé pour synthétiser des lignes K courtes de n'importe quel niveau, telles que des lignes K courtes de 5, 10 et 15 secondes. Il est toujours possible d'utiliser de telles lignes K pour certaines stratégies de trading intrajournalières.
Par exemple, ce qui suit est la ligne k de niveau 1 seconde publiée auparavant.

Il existe également des arbitrages à haute fréquence. Il est désormais difficile de gagner de l'argent avec l'arbitrage ordinaire, et si la fréquence est plus élevée, il peut y avoir des opportunités.
Ce type de données tick par tick peut également être utilisé pour synthétiser des lignes k alternatives, telles que des barres égales, etc. L'utilisation d'aggTrades est beaucoup plus précise que l'utilisation de lignes k minuscules. La stratégie CTA produite de cette manière peut l'être. par rapport aux stratégies k-line ordinaires complémentaires. Je pourrai expliquer comment synthétiser ce type de barre dans les prochains articles.
Ce qui suit est l'introduction du code (la plupart du code est dans la pièce jointe, car il est trop long et trop long, je ne le publierai pas dans le texte). Le code de téléchargement est l'exemple de Binance, mais avec quelques légères modifications, ainsi que mon code de traitement.
Voici un exemple de données mensuelles (Binance fournit également des données quotidiennes). Le code est entièrement monothread et exécuté de manière synchrone, sans asynchrone ni multithread. Étant donné que ces téléchargements sont exécutés une fois par mois ou n jours, vous pouvez simplement attendre un peu et il n'est pas nécessaire de compliquer les choses.
Il n'y a généralement aucun problème à utiliser des données plus anciennes pour le backtesting de base, car le backtesting des données à haute fréquence joue principalement un rôle analytique et dépend principalement du prix réel, car le dérapage peut être important ou l'ordre en attente peut ne pas être exécuté. et le suivi La commande n'a pas été rattrapée, l'échange a été retardé, etc.
Mais plus tard, j'ai aussi le code pour télécharger les données en temps réel, qui consiste à télécharger les données aggTrades du jour pour vérifier instantanément les prix du marché manqués. Les données quotidiennes de Binance ne sont disponibles qu'avec un décalage de plusieurs jours. Si vous souhaitez l'utiliser de toute urgence, vous devez l'explorer vous-même à l'aide de l'API d'échange.
1 téléchargement
La première partie du code est constituée des deux fichiers agg.py et utility.py, puis utilisez
python3 agg.py -y 2022 -m 6 -t um -folder /votre chemin spécifié
Voici un exemple de commande pour télécharger toutes les données aggTrades du contrat perpétuel pour juin 2022. Le téléchargement prend généralement environ dix minutes. Les données sont téléchargées compressées, l'étape suivante consiste donc à les décompresser.
2. Décompressez
Pour décompresser, utilisez le fichier unzip.py. Il s'agit d'un code très court avec seulement deux fonctions, l'une pour décompresser les données mensuelles et l'autre pour décompresser les données quotidiennes.
Après avoir extrait le fichier zip, il devient un fichier csv. Le problème avec les fichiers csv est qu’ils occupent plus d’espace sur le disque dur et sont plus lents à charger. L'étape suivante consiste donc à convertir le fichier csv en fichier pickle. Vous pouvez compresser ou ne pas compresser selon votre propre situation. Si votre disque dur est volumineux, il est recommandé de ne pas le compresser. Généralement, les données durables sont d'environ 50 Go par mois, cela dépend donc de votre situation. Généralement, vous pouvez acheter un disque dur SSD externe plus rapide. De nos jours, 1 To ne coûte que quelques centaines de yuans, ce qui est déjà bon marché. Il se charge également très rapidement lors des backtests.
3. Convertir la compression en cornichon
Le code de conversion est dans csv_to_pkl.py. Comme mentionné ci-dessus, il est plus facile à enregistrer et à utiliser après la conversion.
Après la conversion, j'ai supprimé manuellement le fichier csv, sinon il occuperait le disque dur. Il n'y a pas de code pour implémenter cette étape. Comme mentionné précédemment, il s’agit d’opérations à très faible fréquence et n’ont pas besoin d’être entièrement automatisées. J'utilise la compression gzip niveau 2 dans l'exemple de code. Généralement, les données d'un mois représentent moins de 10 Go après compression.
Non seulement le fichier CSV prend de la place, mais il se charge également lentement. Il est recommandé d'utiliser le format cornichon. Dans l’ensemble, ses performances sont bonnes, mais la clé est une bonne compatibilité. Si vous souhaitez utiliser des serveurs cloud ou de nombreux autres packages open source, ils sont plus compatibles que Feather, etc.
Bon, maintenant que les données sont prêtes, vous pouvez commencer à étudier les stratégies.
4. Téléchargement instantané des données
Comme mentionné précédemment, les données sur le serveur de données de Binance sont en retard d'un ou deux jours. Si vous avez besoin de vérifier les performances de votre stratégie dans les conditions actuelles du marché, mais que vous n'avez pas publié le prix réel d'une certaine devise à temps, vous pouvez utiliser le code suivant pour télécharger aggTrades à l'heure spécifiée. Je l'utilise habituellement pour télécharger les 12 heures de données actuelles afin de voir comment la stratégie peut fonctionner.
Si le code suivant est utilisé, il doit être modifié avec la dernière heure de début.

Les données téléchargées sont comme ceci. Vous pouvez vous référer à la documentation de Binance et aux transactions récentes (accumulation) pour voir leurs significations spécifiques.

Avec de telles données brutes, vous pouvez utiliser df.resample(bar_size).agg() pour les agréger dans n'importe quelle ligne k de niveau dont vous avez besoin, et vous pouvez faire ce que vous voulez.
enfin
Fondamentalement, il s'agit de la préparation des données aggTrades que j'ai utilisées auparavant. Les stratégies d'aujourd'hui deviennent de plus en plus volumétriques et davantage de catégories de stratégies peuvent être développées à l'aide de données plus granulaires. La complémentarité entre les stratégies est la clé de la multi-stratégie.
Si vous avez besoin du code ci-dessus, vous pouvez nous contacter pour l'obtenir.
