SDK Python
Le paquet openbacktest — des bougies en DataFrames et des sessions sous forme d'objets.
Le paquet openbacktest encapsule l'API REST dans un client idiomatique pour
Python. Les bougies sont fournies sous forme de DataFrames pandas, les sessions
sont des objets avec état dotés des méthodes buy/sell/close, et les
statistiques sont calculées par le même moteur que celui de l'application.
Le client utilise l'API publique de la version actuelle par défaut. Définissez
OPENBACKTEST_BASE_URL pour cibler un autre environnement, notamment un
serveur local.
Installation
Le SDK se trouve dans le dépôt, sous sdk/python. Sa publication sur PyPI est
prévue :
python -m venv .venv
.venv\Scripts\Activate.ps1 # Windows — utilisez source .venv/bin/activate ailleurs
pip install -e "sdk/python[dev]"Démarrage rapide
import os
from openbacktest import OpenBacktest
client = OpenBacktest(
api_key=os.environ["OPENBACKTEST_API_KEY"],
)
print(client.me()) # vérifie la clé et l'accès Pro
# Bougies dans un DataFrame (index datetime UTC et colonnes OHLCV)
candles = client.get_candles("BTCUSDT", "1h", count=1500)
print(candles.tail())
# Projet et session
project = client.create_project("Croisement de SMA", "BTCUSDT", "1h")
session = client.create_session(
project.id, "exécution 1", initial_balance=10_000,
fees={"entryFee": 0.1, "exitFee": 0.1, "type": "percent"},
)
# Ouvrir avec buy()/sell(), puis clôturer avec close().
session.buy(qty=0.1, price=60_000, time=candles.index[100])
session.close(price=61_000, time=candles.index[110])
stats = session.finish()
print(stats.winrate, stats.pl_net, stats.max_drawdown)Cycle de vie d'une session
buy(qty, price, time, stop_loss=None, take_profit=None, note=None)etsell(...)ouvrent une position longue ou courte. Une seule position peut être ouverte à la fois.close(price, time)clôture la position, ajoute le trade à un tampon local, puis l'envoie à l'API par lots de 500 au maximum. Utilisezflush()pour forcer l'envoi.finish()vide le tampon, termine la session de manière idempotente et renvoie les statistiques.stats()permet de les relire à tout moment.- La session apparaît ensuite dans l'application web avec les étiquettes
api/sdk, les mêmes graphiques et les mêmes statistiques qu'une session de replay manuel.
Erreurs
Toutes les erreurs de l'API déclenchent des exceptions typées provenant de
openbacktest.errors : AuthenticationError (401), ProRequiredError (403),
NotFoundError (404), SessionNotActiveError (409), ValidationError (400),
RateLimitError (429, avec le nombre de secondes dans retry_after ; les
requêtes GET sont automatiquement retentées jusqu'à trois fois) et
ServerError (5xx).