Une bougie absente ne prouve pas à elle seule une panne de fournisseur : le produit pouvait être fermé, ou l'export construit autrement. Déclarez d'abord période attendue et conventions. Le contrôleur CSV local compte positions vides, horodatages répétés, prix contradictoires et lignes invalides sur une grille fixe. Il ne crée aucune cotation et ne répare aucun prix. Ce contrôle prépare Backtester une stratégie : prix, coûts et fuites de données, sans tester une stratégie à lui seul.

Définir la série et les bornes

Notez instrument, fournisseur, base de prix et intervalle. Des bougies Bid, Ask et milieu sont des séries différentes ; le libellé EUR/USD ne suffit pas. Comparez aussi heures d'ouverture équivalentes. Un export horodaté à la clôture semblera décalé face à celui horodaté à l'ouverture, même si les deux contiennent des prix valides.

En-tête exact : timestamp,open,high,low,close. Chaque ligne suivante contient exactement cinq champs séparés par virgules. Les prix utilisent le point décimal, sans séparateur de milliers. Guillemets, colonnes supplémentaires et séparateur point-virgule demandent une conversion préalable conservée et documentée : le contrôleur refuse les formats non pris en charge plutôt que deviner.

Dates complètes : 2026-10-12T08:00:00Z et 2026-10-12T10:00:00+02:00 désignent le même instant, notamment dix heures à Paris ce 12 octobre. Secondes obligatoires, jusqu'à trois chiffres de fraction de seconde admis. Une heure de serveur sans offset ne définit pas son fuseau ; ajouter Z à une heure locale change sa signification au lieu de la convertir. Vérifiez les paramètres d'alignement du fournisseur ; une langue d'interface ne les remplace pas.

Déclarez premier et dernier débuts de bougie attendus. Les deux bornes sont incluses : 08 h 00 à 08 h 11 avec intervalle d'une minute donne douze dates. La grille est ancrée à la première ; la dernière doit y tomber exactement. Elle représente des durées égales écoulées, pas un mois calendaire ni nécessairement une journée locale de 1440 minutes lorsqu'un changement d'heure en modifie la durée.

Reproduire un rapport local

Chargez le CSV, choisissez un intervalle entier de 1 à 1440 minutes et fournissez les deux bornes. Limites : 2 Mio, 100000 lignes et 100000 positions attendues. Découpez une période plus longue en fenêtres documentées sans chevauchement. Chaque prix accepte au maximum quinze chiffres significatifs et 48 caractères ; une précision excessive invalide la ligne, sans arrondir silencieusement un conflit.

Vérifier la couverture temporelle du CSV

Le fichier est analysé localement, sans transmission ni conservation persistante. Format : timestamp,open,high,low,close. Maximum2Mio. Les dates exigent Z ou un offset explicite. Les prix du CSV gardent le point décimal.

Télécharger l’exemple sans anomalie · Télécharger l’exemple diagnostique

Le fichier est analysé dans votre navigateur, sans transmission de son contenu ni conservation persistante par cet outil. Le rapport téléchargé permet de conserver réglages et constats. Un format accepté n'authentifie pas le fournisseur et ne contrôle pas la présence de toutes les données économiques pertinentes.

Douze lignes ne prouvent pas une exportation complète

Les fichiers proposés sont synthétiques, sans compte ou cotations réels. Réglez M1, 12 octobre 2026 de 08 h 00 à 08 h 11 UTC. Le fichier propre occupe douze dates distinctes sans vide. Le fichier diagnostique contient également douze lignes, mais seulement huit positions valides sur la grille.

Sur petit écran, faites défiler le tableau pour lire toutes les colonnes.

Résultat attendu du fichier diagnostique fictif
ConstatExplication
4 positions vides08:03,08:04,08:10,08:11 sans bougie valide.
2 lignes répétéesHorodatages 08:02 et 08:06 repris.
1 groupe de prix contradictoiresDeux bougies valides 08:06 ont des OHLC différents.
1 ligne invalideÀ 08:04, le haut est inférieur à l'ouverture.
1 hors grille et 1 retour temporel08:07:30 hors M1 ; 08:08 apparaît après 08:09.

Les interruptions maximales ont chacune deux débuts de bougie ; en cas d'égalité, le premier intervalle 08:03–08:04 est retourné. Ce n'est pas une durée de panne mesurée. Il manque encore calendrier du produit et circonstances extérieures au fichier pour l'expliquer.

Huit positions occupées ne suppriment pas le conflit

Huit positions occupées sur douze, avec un conflit

Huit positions occupées sur douze, avec un conflitExemple fictif M1 du 12 octobre 2026 UTC. Absences 08:03,08:04,08:10,08:11. À 08:06,deux bougies valides de prix différents occupent une position mais restent ambiguës. Le nombre de lignes 12 ne décrit pas la couverture 8 sur 12.Grille fictive M1 : 08 h 00 à 08 h 11 UTC✓ 08:00✓ 08:01✓ 08:02× 08:03× 08:04✓ 08:05? 08:06✓ 08:07✓ 08:08✓ 08:09× 08:10× 08:11✓ Occupée · × Vide · ? Prix contradictoires8 dates occupées ; 4 vides ; 1 conflit à résoudre.
Couverture temporelle et cohérence de prix sont deux contrôles distincts. Les symboles doublent les couleurs ; aucune cotation réelle.

Faites défiler horizontalement ou agrandissez le schéma pour lire les détails.

Grille M1 fictive : 8 sur 1212 octobre 2026 UTC, 08:00 à 08:11 ; huit dates occupées dont 08:06 contradictoire.EXEMPLE DE CALCULVides4Occupées8Conflit08:06
Grille M1 fictive : 8 sur 12. 12 octobre 2026 UTC, 08:00 à 08:11 ; huit dates occupées dont 08:06 contradictoire.

Le nombre de lignes masque quatre absences et un conflit.

Vides
4 – 08:03,08:04,08:10,08:11.
Occupées
8 – Dates valides distinctes.
Conflit
08:06 – Position occupée mais prix ambigu.

Interpréter sans réparer automatiquement

La couverture compte dates valides distinctes, pas lignes. Un doublon identique n'ajoute aucune position. Deux OHLC différents mais individuellement valides au même instant occupent une position et déclenchent aussi un conflit. On peut donc n'avoir aucun vide et garder des prix ambigus. L'outil ne choisit ni la version la plus récente, ni la plus haute, ni celle améliorant le résultat du test.

Une ligne invalide ne couvre aucune position. Les prix doivent être finis ; le haut ne peut être inférieur à l'ouverture, la clôture ou le bas, et le bas ne peut dépasser les autres valeurs. Lignes hors période et hors grille n'améliorent pas le compte. Tous les constats sont comptés, mais seuls vingt exemples par groupe sont affichés pour garder un rapport lisible.

Rapprochez un week-end vide du calendrier réel ; une absence en séance du journal de téléchargement et de l'original. Dans la documentation OANDA, complete indique que la période de la bougie est terminée, pas que toute l'exportation est complète. Remplacer les vides par le dernier prix crée des bougies synthétiques susceptibles de changer indicateurs et exécution des stops. Trier ne résout pas des prix contradictoires. Préservez les versions et chaque correction avec motif et source.

Contre-exemple EUR indépendant : deux exports à grille complète proposent des clôtures différentes, 1,1000 et 1,1002 USD/EUR, dans deux bougies par ailleurs cohérentes. Pour une quantité linéaire hypothétique de 10000 EUR, l'écart de résultat de prix est 2 USD, environ 1,82 EUR au taux stipulé 1,10 USD/EUR. Il ne suffit pas de choisir le chiffre favorable. Ce n'est pas le conflit de haut 08:06 du fichier fourni et ne décrit aucune opération réelle : le cas montre pourquoi couverture identique ne valide pas les prix.

OHLC complets ne signifie pas ticks enregistrés

Une bougie ne restitue pas le chemin entier. MetaQuotes documente des ticks générés lorsque la barre de minute existe mais ses ticks manquent. Une grille M1 complète ne prouve donc pas que le testeur utilise seulement des observations enregistrées. Contrôlez modèle, journal, période de ticks disponible et dates demandées/effectives : une histoire préparatoire insuffisante peut décaler le début.

Avec CopyRates, comparez quantité demandée et retournée ; le téléchargement peut être en cours. Backtesting MT4 et MT5 : données, indices et horloges traite la configuration et les coûts ; Backtester une stratégie : prix, coûts et fuites de données relie données et validation. Ni l'un ni le rapport ne démontre le rendement futur d'un Expert Advisor (EA), robot MetaTrader.

Protocole après analyse

  1. Archivez source intacte, réglages, rapport, instrument, base de prix, fuseau et calendrier ; une autre personne doit pouvoir répéter le contrôle.
  2. Examinez l'interruption maximale et tous les groupes contradictoires ; confirmez une fermeture prévue ou obtenez une exportation corrigée.
  3. Relancez sur les mêmes bornes et conservez le précédent rapport au lieu de l'écraser.
  4. Sur l'intervalle accepté, inspectez signaux, spreads et ordre des exécutions. Backtest Python : alignement, disponibilité et exécution complète un moteur séparé ; Backtest : test historique d’une règle et Cours acheteur et vendeur : Bid/Ask ne sont pas certifiés par la seule grille.