Introduction
Dans cet article, je vais vous guider étape par étape dans le processus de téléchargement massif de données historiques d'Order Book depuis l'API Tardis. Que vous soyez trader quantitatif, analyste blockchain ou développeur DeFi, ces données sont essentielles pour back-tester vos stratégies de trading ou analyser la liquidité historique d'un exchange.
💡 Prérequis : Ce tutoriel est conçu pour les débutants complets. Aucune expérience préalable avec les API n'est nécessaire. Je vous explaine chaque concept en partant de zéro.
Qu'est-ce que Tardis et pourquoi ses données Order Book sont-elles précieuses ?
Tardis est un fournisseur spécialisé dans la collecte et la distribution de données historiques du marché crypto. Leur technologie capture chaque transaction, chaque modification d'order book avec une granularité exceptionnelle.
Format des données Order Book
Un Order Book est composé de deux côtés :
- Bids : Ordres d'achat en attente (prix + quantité)
- Asks : Ordres de vente en attente (prix + quantité)
Les snapshots capturent l'état complet du livre d'ordres à un instant T, vous permettant d'analyser la profondeur du marché et la distribution de la liquidité.
Configuration initiale de votre environnement
Installation des dépendances
# Installation via pip
pip install requests pandas python-dotenv
Vérification de l'installation
python -c "import requests; print(f'Requests version: {requests.__version__}')"
Structure du projet
mon_projet_tardis/
├── config.py
├── downloader.py
├── requirements.txt
└── data/
└── .gitkeep
Configuration de la clé API
Obtention de votre clé API Tardis
Pour accéder aux données Tardis, vous devez créer un compte sur
tardis.dev. Le niveau gratuit vous permet de tester l'API avec des limitations.
# config.py
import os
from dotenv import load_dotenv
load_dotenv() # Charge les variables d'environnement depuis .env
TARDIS_API_KEY = os.getenv("TARDIS_API_KEY")
BASE_URL = "https://api.tardis.dev/v1"
Vérification simple
if not TARDIS_API_KEY:
raise ValueError("⚠️ Clé API Tardis non trouvée. Vérifiez votre fichier .env")
# .env (à créer à la racine du projet)
TARDIS_API_KEY=votre_cle_api_ici
Téléchargement basique d'un snapshot
Comprendre les endpoints de l'API
L'API Tardis propose plusieurs endpoints pour différents types de données. Pour les Order Book snapshots, l'endpoint principal est :
GET /exchanges/{exchange}/order-book-snapshots
Premier script de téléchargement
# downloader.py
import requests
import time
import os
from datetime import datetime, timedelta
class TardisDownloader:
def __init__(self, api_key):
self.api_key = api_key
self.base_url = "https://api.tardis.dev/v1"
self.headers = {
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json"
}
def get_orderbook_snapshots(self, exchange, symbol, start_date, end_date):
"""
Télécharge les snapshots d'order book pour un symbole donné.
Args:
exchange: Nom de l'exchange (ex: 'binance', 'coinbase')
symbol: Paire de trading (ex: 'BTC-USDT')
start_date: Date de début (format ISO 8601)
end_date: Date de fin (format ISO 8601)
"""
url = f"{self.base_url}/exchanges/{exchange}/order-book-snapshots"
params = {
"symbol": symbol,
"from": start_date,
"to": end_date,
"format": "json"
}
print(f"📥 Téléchargement des données pour {symbol}...")
print(f" Période: {start_date} → {end_date}")
response = requests.get(
url,
headers=self.headers,
params=params,
timeout=60
)
if response.status_code == 200:
data = response.json()
print(f"✅ {len(data)} snapshots récupérés")
return data
else:
print(f"❌ Erreur {response.status_code}: {response.text}")
return None
Utilisation
downloader = TardisDownloader(api_key="votre_cle_tardis")
data = downloader.get_orderbook_snapshots(
exchange="binance-futures",
symbol="BTC-USDT",
start_date="2024-01-01T00:00:00Z",
end_date="2024-01-02T00:00:00Z"
)
Téléchargement par lots avec gestion desrate limits
Pourquoi le téléchargement par lots ?
Les données historiques peuvent représenter des gigaoctets. Télécharger tout d'un coup risque de :
- Dépasser les limites de requêtes de l'API
- Causer des timeout connections
- Perdre des données en cas d'erreur réseau