Page 1 sur 1

Récupérer un maximum de données M1 pour backtest sur de longues périodes : retour d'expérience et solutions qui marchent

Publié : 14 oct. 2026, 15:26
par Anya
Quand on développe une stratégie intraday, on tombe vite sur le même mur : l'historique en 1 minute (M1). La plupart des plateformes n'en conservent que quelques mois ou quelques années, alors qu'un backtest sérieux devrait couvrir plusieurs régimes de marché : krach de 2020, bull market de 2021, bear market de 2022, rebond de 2023, etc.

Je viens de passer une matinée à essayer de récupérer l'historique M1 du Nasdaq 100 sur plusieurs années. Voici mon retour d'expérience, avec ce qui a échoué, ce qui a fonctionné, et les solutions éprouvées que je vous recommande.


1. Pourquoi c'est important : un backtest trop court peut mentir

Je disposais jusqu'ici de données depuis 2024 pour une de mes stratégies d'open sur le Nasdaq. Sur cette période, les résultats étaient très bons.

En étendant le backtest à 2020-2026, le tableau a nettement changé :
  • des années beaucoup plus difficiles sont apparues (2020 notamment) ;
  • le réglage qui brillait sur 2024-2026 s'est révélé bien plus fragile sur l'ensemble de la période ;
  • le drawdown maximum réel s'est avéré bien plus profond que ce que laissaient penser deux années de données.
Deux ans de données, c'est souvent un seul régime de marché. Une stratégie qui n'a vu qu'un seul régime n'a encore rien prouvé.

2. Ce qui n'a pas marché : Dukascopy en téléchargement massif

Dukascopy est souvent cité comme LA source gratuite de données historiques. Leurs données sont de bonne qualité, et un outil open source très connu, dukascopy-node, permet de les télécharger en ligne de commande avec Node.js.

Mon expérience :
  • Premier essai : une année complète en M1 d'un coup. Le téléchargement va jusqu'à 100 %... mais les fichiers font 0 octet, sans le moindre message d'erreur.
  • Diagnostic : en interrogeant directement leur serveur, j'obtiens une erreur 503 Service Unavailable. Mes requêtes trop rapprochées avaient fait bloquer mon adresse IP.
  • En passant par la connexion 5G de mon téléphone (autre IP), ça refonctionne... quelques minutes, puis nouveau blocage.
  • Autre piège : la dernière version de dukascopy-node interroge une nouvelle API de Dukascopy, qui ne répondait pas non plus chez moi.
Conclusion : Dukascopy reste une source valable, mais elle est devenue très sensible au volume de requêtes. Si vous l'utilisez :
  • téléchargez mois par mois, jamais une année d'un coup ;
  • ajoutez des pauses entre les requêtes (options --batch-size et --batch-pause de dukascopy-node) ;
  • vérifiez systématiquement la taille des fichiers obtenus : un fichier vide est le signe d'un blocage, pas d'une absence de données.

3. Ce qui a marché : l'historique de votre broker via MT5

La solution la plus simple était sous mes yeux : le terminal MetaTrader 5 de mon broker.

J'avais déjà essayé par le passé, sans réussir à remonter avant 2024. La raison était un simple réglage : MT5 limite le nombre de barres conservées par graphique.

La manipulation :
  1. Dans MT5 : Outils → Options → Graphiques.
  2. Mettre « Nb max de barres dans le graphique » sur Unlimited.
  3. Fermer et redémarrer MT5.
Ensuite, avec Python et la librairie officielle MetaTrader5 (pip install MetaTrader5), on récupère l'historique M1 en quelques secondes :

Code : Tout sélectionner

import MetaTrader5 as mt5
from datetime import datetime, timezone

mt5.initialize()
debut = datetime(2020, 1, 1, tzinfo=timezone.utc)
fin   = datetime(2020, 2, 1, tzinfo=timezone.utc)
rates = mt5.copy_rates_range("NAS100.p", mt5.TIMEFRAME_M1, debut, fin)
print(len(rates), "bougies")
mt5.shutdown()
En bouclant mois par mois et en enregistrant chaque mois dans un CSV, j'ai récupéré plus de 80 mois de M1 sur le Nasdaq, depuis janvier 2020, sans aucun blocage. Petite astuce : si un mois ancien revient vide au premier appel, relancez une seconde fois. MT5 télécharge parfois l'historique manquant au premier appel et ne le renvoie qu'au suivant.

Le gros avantage de cette méthode : ce sont exactement les prix de votre broker, avec ses horaires et ses spreads. Si votre robot tourne chez ce broker, c'est la base de backtest la plus fidèle possible. Les données incluent même le spread de chaque minute, ce qui permet de déduire des coûts réalistes.

La profondeur disponible varie selon les brokers et les instruments : testez le vôtre.


4. Les autres solutions éprouvées

HistData.com (gratuit)
Fichiers M1 en libre téléchargement sur de nombreuses années, pour le forex et quelques indices (Nasdaq 100, S&P 500, DAX...). Pas de blocage, téléchargement fichier par fichier. Idéal pour remonter plus loin que votre broker.

Dukascopy (gratuit, avec précautions)
Voir plus haut : très bonne qualité et beaucoup d'instruments, mais à télécharger lentement et par petits morceaux. On peut aussi passer par l'export de données historiques de leur plateforme JForex (compte démo gratuit).

Le testeur de stratégie MT5
En mode « Every tick based on real ticks », MT5 télécharge automatiquement l'historique tick de votre broker pour la période testée. Pratique pour tester un EA directement, moins pour analyser les données soi-même.

Les fournisseurs payants
Pour des historiques très longs et propres (futures, indices, actions), des fournisseurs spécialisés vendent des jeux de données M1 sur 10 à 20 ans. C'est souvent la seule option sérieuse pour les contrats futures.


5. Mes conseils pratiques
  • Privilégiez les données de votre propre broker dès que la profondeur suffit. Deux fournisseurs n'ont jamais exactement les mêmes cotations, surtout sur les CFD d'indices.
  • Faites attention aux fuseaux horaires. Les données MT5 sont en heure serveur du broker (souvent GMT+2/GMT+3, calée sur New York), celles de Dukascopy ou HistData sont en UTC ou en heure de New York. Une erreur de fuseau, et votre « open US » est décalé d'une heure dans le backtest.
  • Contrôlez la complétude. Comptez le nombre de bougies par mois : sur un indice coté presque 23 h/24, on doit retrouver un ordre de grandeur stable (autour de 28 000 à 31 000 bougies M1 par mois). Un mois nettement en dessous signale un trou.
  • Ne gardez que ce dont vous avez besoin. Pour une stratégie d'open, extraire la fenêtre horaire utile divise la taille des fichiers par 8 ou 10, ce qui rend l'analyse bien plus simple à manipuler.
  • Adaptez vos paramètres au niveau de l'actif. Un stop de 40 points sur un Nasdaq à 30 000 n'a pas le même sens qu'à 10 000 en 2020. Pour comparer des années très différentes, raisonnez en pourcentage du prix.

Et vous ? Quelles sources utilisez-vous pour vos données intraday ? Avez-vous déjà rencontré des différences importantes de résultats en backtestant la même stratégie sur deux sources de données ?