Vous débutez dans le trading algorithmique et vous cherchez à récupérer des données crypto historiques fiables sans exploser votre budget ? Ce guide pas à pas vous apprend à connecter Tardis, l'une des références mondiales de la donnée de marché, puis à utiliser une IA pour interpréter vos résultats de backtest. Aucune expérience API n'est requise : on part de zéro, on installe Python, et on finit avec un mini-backtest fonctionnel.

À la fin de la lecture, vous aurez : un script Python qui capte les ticks en direct via WebSocket, un CSV historisé, un backtest moyenne-mobile exécuté, et une analyse stratégique générée par IA. Nous comparerons aussi Tardis à des alternatives (CoinAPI, Kaiko, CCXT) et à S'inscrire ici sur HolySheep AI pour la couche d'intelligence artificielle.

1. Prérequis — ce qu'il vous faut avant de commencer

[Capture d'écran suggérée : ouvrir un terminal et taper python --version — la réponse doit afficher 3.10.x ou plus]

2. Créer votre compte Tardis et récupérer votre clé API

  1. Rendez-vous sur tardis.dev et cliquez sur « Sign Up ».
  2. Validez votre e-mail, puis connectez-vous.
  3. En haut à droite, ouvrez le menu « API Keys ».
  4. Cliquez sur « Generate New Key », nommez-la par exemple mon-bot-test.
  5. Copiez la clé (elle commence par td_) et gardez-la secrète — elle ne s'affiche qu'une seule fois.

[Capture d'écran suggérée : tableau de bord Tardis, onglet API Keys avec la nouvelle clé générée et le bouton « Copy »]

3. Installer les bibliothèques Python

Dans votre terminal :

pip install websocket-client pandas numpy requests

Recommandé : isoler le projet dans un environnement virtuel pour ne pas polluer votre Python global.

python -m venv tardis-env
source tardis-env/bin/activate      # Mac / Linux
tardis-env\Scripts\activate         # Windows PowerShell
pip install websocket-client pandas numpy requests

4. Premier test WebSocket avec Tardis

Tardis expose son flux temps réel à l'URL wss://ws.tardis.dev/v1. Voici le script minimal pour recevoir des trades BTC/USDT depuis Binance :

import websocket
import json

API_KEY = "VOTRE_CLE_TARDIS_ICI"   # commence par td_...

def on_open(ws):
    print("✅ Connexion WebSocket etablie")
    # Abonnement au flux trades Binance BTC-USDT
    subs = {
        "action": "subscribe",
        "channel": "trades",
        "symbols": ["binance:BTC-USDT"]
    }
    ws.send(json.dumps(subs))

def on_message(ws, message):
    data = json.loads(message)
    print(f"📈 Trade recu : prix={data.get('price')} quantite={data.get('amount')} cote={data.get('side')}")

def on_error(ws, error):
    print(f"❌ Erreur : {error}")

def on_close(ws, code, msg):
    print(f"🔌 Deconnecte : code={code} message={msg}")

ws = websocket.WebSocketApp(
    "wss://ws.tardis.dev/v1",
    header={"Authorization": f"Bearer {API_KEY}"},
    on_open=on_open,
    on_message=on_message,
    on_error=on_error,
    on_close=on_close
)
ws.run_forever()

[Capture d'écran suggérée : terminal affichant 3 à 5 trades reçus en temps réel, par exemple prix=67234.51 quantite=0.012 cote=buy]

💡 Astuce : remplacez "trades" par "book" pour le carnet d'ordres L2, ou par "derivative_ticker" pour les contrats à terme.

5. Sauvegarder les ticks dans un CSV pour backtester

Pour backtester, il faut historiser. Modifiez la fonction on_message pour écrire dans un fichier :

import websocket
import json
import csv
from datetime import datetime

API_KEY = "VOTRE_CLE_TARDIS_ICI"
nom_fichier = f"trades_{datetime.now():%Y%m%d_%H%M%S}.csv"
fichier = open(nom_fichier, "w", newline="", encoding="utf-8")
writer = csv.writer(fichier)
writer.writerow(["timestamp", "prix", "quantite", "cote"])

def on_message(ws, message):
    data = json.loads(message)
    writer.writerow([data["timestamp"], data["price"], data["amount"], data["side"]])
    fichier.flush()   # ecriture immediate sur disque (anti-crash)

def on_open(ws):
    print(f"✅ Flux demarre, ecriture dans {nom_fichier}")
    ws.send(json.dumps({
        "action": "subscribe",
        "channel": "trades",
        "symbols": ["binance:BTC-USDT"]
    }))

ws = websocket.WebSocketApp(
    "wss://ws.tardis.dev/v1",
    header={"Authorization": f"Bearer {API_KEY}"},
    on_open=on_open,
    on_message