Backtest automatique : faire tourner une stratégie scriptée sur les barres en cache
Le mode Backtest automatique de l'écran Replay fait tourner une stratégie enregistrée sur des semaines à des années de barres en cache, avec des coûts de transaction obligatoires, en appliquant les mêmes règles d'exécution conservatrices que le backtester de recherche, et enregistre le résultat dans le panneau Performance.
Senzoukria · Documentation · Mis à jour en septembre 2026
Où le trouver
- Où
- Replay → Préparer → mode « Backtest automatique » (« Des mois de barres — votre stratégie tourne seule »)
- Valeurs par défaut
- Période 1 mois, granularité 15 minutes, valeur du point 2 $, frais aller-retour 1,24 $, slippage 1 tick
- Règles d'exécution
- Entrée à l'ouverture de la barre suivante plus le slippage, sorties sur les mèches, le stop l'emporte sur une barre ambiguë, frais sur chaque transaction
- Profondeur de lecture
- Une stratégie voit les 500 dernières barres à chaque décision
Ce qu'il fait
Là où le replay manuel joue une journée tick par tick, le backtest automatique fait tourner une stratégie écrite sur la page Scripting au-dessus des barres stockées dans le cache local. La stratégie expose decide(bars, params, ctx, state), avec les barres de la plus récente à la plus ancienne, et renvoie une action : buy, sell ou close, avec éventuellement qty, stopTicks et targetTicks. Toute la boucle tourne dans le worker du bac à sable (le protocole ofsandbox, qui porte sa propre CSP) par tranches de 300 ms pour que l'interface reste réactive ; le même texte de boucle tourne aussi dans un worker blob pour les tests et pour le site, ce qui garantit des résultats identiques.
Le panneau lit d'abord le cache pour le contrat et la granularité choisis et rapporte la couverture (« {n} séances en cache sur {n} demandées »). Les séances manquantes peuvent être téléchargées chez le broker (barres, ou historique tick footprint quand la stratégie lit les déséquilibres par niveau), et un fichier Databento ohlcv-1m peut être importé. Les barres serveur portent l'OHLC, le volume et le delta mais aucun niveau de footprint, et les barres importées ne portent aucun delta.
Réglages
| Réglage | Par défaut | Ce qu'il change |
|---|---|---|
| Stratégie | « Choisir… » | Une stratégie enregistrée depuis la page Scripting ; « Modifier la stratégie » ouvre le code, un brouillon modifié tourne sans être enregistré, Ctrl+Entrée relance. |
| Période | 1 mois | 1 semaine, 1 mois, 3 mois, 6 mois, 1 an, 2 ans, 5 ans (7 à 1 825 jours). |
| Granularité | 15 minutes | 1 minute, 5 minutes, 15 minutes, 1 heure. Six mois de barres à la minute représentent environ 250 000 barres et prennent des minutes par configuration. |
| Valeur du point ($) | 2 (MNQ) | Valeur en dollars d'un point plein par contrat ; minimum 0,01. |
| Frais aller-retour par contrat ($) | 1,24 | Soustraits de chaque transaction ; minimum 0. |
| Slippage (ticks) | 1 | Pénalise toujours l'entrée : les achats s'exécutent plus haut, les ventes plus bas ; minimum 0. |
| Walk-forward | Désactivé | Active les tranches, la part d'entraînement, le critère de sélection et les axes de paramètres (voir la page walk-forward). |
| Lancer le backtest | — | Démarre l'exécution ; « Interrompre » l'abandonne. L'en-tête du résultat indique « Résultat · {n} barres ». |
Règles de simulation
- Une décision est prise sur une barre close et appliquée à l'ouverture de la barre suivante : aucune exécution à un prix qui appartenait au passé au moment où la décision existait.
- Les stops et les objectifs sont testés contre le plus haut et le plus bas de la barre, pas contre sa clôture.
- Quand une même barre touche à la fois le stop et l'objectif, c'est le stop qui l'emporte : sans les ticks, l'ordre est inconnu, et le moteur tranche contre vous.
- Les frais s'appliquent à chaque transaction ; l'indication sur les coûts rappelle que des coûts nuls transforment une stratégie perdante en stratégie gagnante dès qu'elle trade souvent.
- Un signal inverse ferme d'abord la position courante (motif « inversion ») ; une action close aplatit (motif « aplatissement »).
- Le MAE, le MFE et le risque à l'entrée (distance du stop × qty × valeur du point) sont enregistrés pour chaque transaction, pour les graphiques d'excursion et de multiples de R.
- Les journaux de script sont conservés jusqu'à 200 lignes ; une stratégie Python tourne dans l'interpréteur installé depuis la page Scripting ; les stratégies C++ ne sont pas encore backtestables.
Limites et pièges
Le résultat est enregistré dans le panneau Performance comme une exécution « auto », avec les journées réellement couvertes, et la liste affiche « {n} j sur {req} demandés » quand la couverture est inférieure à 90 % de la fenêtre demandée. Un backtest sur une couverture partielle ne couvre que cette fenêtre, et le panneau le dit.
Les barres historiques sont un droit chez le broker : le panneau distingue « permission denied » (rp_code 13, barres non activées sur le compte) d'une archive qui ne remonte pas si loin. Aucun ordre n'est passé par un backtest ; les stratégies automatisées ne pilotent jamais que le compte d'évaluation simulé.
Pages liées
- Analyse walk-forward
- Assistant backtest (IA)
- Panneau Performance (séances passées)
- Guide du backtest futures
- Le trading quantitatif pour débuter
Cette page dans d’autres langues
Questions fréquentes
- Pourquoi le backtest exécute-t-il à l'ouverture de la barre suivante ?
- La décision n'existe qu'une fois la barre close. Entrer à un prix de cette même barre utiliserait une information dont vous ne disposiez pas encore, ce qui est le premier défaut des backtesters naïfs.
- Puis-je mettre les frais à zéro ?
- Le champ accepte 0, mais l'indication avertit qu'un backtest sans coûts ment dès que la stratégie trade souvent. La valeur par défaut de 1,24 $ est un ordre de grandeur pour un aller-retour en prop firm.
- Pourquoi n'y a-t-il rien en cache pour mon contrat ?
- Le cache se remplit quand vous ouvrez le contrat dans le chart à cette granularité, ou quand vous téléchargez l'historique manquant depuis le panneau de backtest. Un fichier Databento ohlcv-1m peut aussi être importé.