Documentation Open Backtest
SDK Python

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) et sell(...) 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. Utilisez flush() 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).