Dans cet article
Après cet article, vous saurez…
- Distinguer comportement documenté MT5 et null du modèle pédagogique.
- Enregistrer mode et première divergence sans placer d’ordre.
- Tester égalité au seuil et donnée absente comme cas différents.
Les notions sans quitter l’article
Expert Advisor (EA), robot MetaTrader Backtest : test historique d’une règleUn EA fonctionne dans le test visuel MT5, mais pas dans une passe sans affichage. Avant de changer la stratégie, demandez si la décision dépend d'une valeur de données ou d'un objet dessiné sur le graphique. Comparez modes, versions, données et première divergence enregistrée. Le modèle de cette page ne lance pas MT5 et ne place aucun ordre.
Ce qui diffère réellement avec l'affichage
La documentation MQL5 indique que, hors mode visuel, les objets graphiques ne sont pas tracés et les requêtes portant sur les propriétés d'un objet créé renvoient des valeurs nulles au sens numérique, c'est-à-dire zéro. Cette limitation ne s'applique pas au mode visuel. Il s'agit d'un comportement documenté, pas d'une expérience effectuée sur votre EA ni d'une explication universelle des écarts.
Si le programme lit le prix d'une ligne ou l'état d'un bouton, consignez cette lecture séparément des prix ou indicateurs. Vérifiez d'abord si l'entrée attendue existe et si la fonction réussit. Un statut explicite d'indisponibilité évite d'accepter un zéro technique comme prix. Un graphique visible ne prouve pas que toutes les entrées sont prêtes.
Séparer nombre disponible et objet graphique
Simulation pédagogique sans trading : signal numérique déclaré 1,1050, seuil 1,1040, condition strictement « signal supérieur au seuil ». Le signal explicite satisfait la condition. Notre chemin objet indisponible conserve null, et ne compare rien. Ces valeurs ne sont ni cotations MT5 ni journaux d'exécution.
Une entrée absente n'est pas un prix zéro
Nombre, absence et substitution erronée
Faites défiler horizontalement ou agrandissez le schéma pour lire les détails.
Une donnée absente reste inconnue, même si la variante incorrecte donne faux avec zéro.
- Nombre explicite
- Condition satisfaite – 1,1050>1,1040.
- Objet absent
- Non évaluée – Null dans notre modèle.
- Zéro substitué
- Faux apparent – Défaut masquant l’absence.
Le chemin protégé reste inconnu ; la variante incorrecte calcule 0 > 1,1040 et donne un faux ordinaire. Sous la condition opposée « inférieur au seuil », ce zéro pourrait même satisfaire le critère. Ne réparez pas une entrée manquante avec une valeur arbitraire. Nombre et disponibilité répondent à deux questions différentes.
Séparer les données de l'objet de graphique
Cet exemple pédagogique fonctionne localement dans votre navigateur : sans connexion au compte ou à une API, transmission des saisies ou conservation persistante. Ne saisissez ni mot de passe ni données personnelles.
L'outil compare deux valeurs positives finies déclarées, dans l'intervalle 10⁻⁸ à 10⁸, avec au maximum quinze chiffres et point décimal à la saisie. En mode non visuel simulé, l'objet est indisponible ; dans l'autre, il transporte le signal. L'outil ne lit aucun graphique, ne crée pas de signal d'investissement et n'accède ni à un compte ni à une API. Les saisies ne sont ni transmises ni conservées de façon persistante par ce calcul local.
Contre-exemple EUR distinct : budget de perte de prix 20 EUR et estimation disponible de 18 EUR. Une règle « estimation inférieure au budget » est satisfaite. Si l'estimation manque, remplacer par zéro ferait encore dire oui, en cachant précisément l'information nécessaire. Zéro n'est acceptable que s'il s'agit réellement d'une estimation validée de zéro ; notre modèle ne calcule pas une taille ni les frais d'un ordre.
Enregistrer le mode sans négocier
MQL_TESTER, MQL_VISUAL_MODE et MQL_OPTIMIZATION décrivent l'environnement du programme ; TERMINAL_BUILD identifie le build. Enregistrez les lectures réelles plutôt que déduire le mode de l'apparence d'une fenêtre. Ces drapeaux seuls ne prouvent pas l'égalité des données ou paramètres.
Le petit EA autonome ci-dessous écrit la configuration dans OnInit et possède un OnTick vide. Il n'envoie ni ne modifie d'ordre et ne gère aucune position. Sauvegardez-le séparément comme fichier MQ5 et compilez votre propre exemplaire dans MetaEditor pour conserver les journaux réels. Les étiquettes techniques des champs restent inchangées pour rapprocher les sorties.
#property strict
int OnInit()
{
PrintFormat("tester=%d visual=%d optimization=%d build=%d symbol=%s period=%d",
(int)MQLInfoInteger(MQL_TESTER),
(int)MQLInfoInteger(MQL_VISUAL_MODE),
(int)MQLInfoInteger(MQL_OPTIMIZATION),
(int)TerminalInfoInteger(TERMINAL_BUILD),
_Symbol, (int)_Period);
return INIT_SUCCEEDED;
}
void OnTick() {}
N'ajoutez pas un second OnInit dans un EA existant et ne remplacez pas son initialisation par cet exemple. Instrumenter un programme suppose de préserver son déroulement. La documentation décrit aussi une exception pour OnInit à la restriction de PrintFormat pendant l'optimisation ; absence de message à une autre étape ne prouve pas que cette étape n'a jamais été exécutée.
Trouver la première différence plutôt que le profit final
Préparez le registre des deux passes : modes, versions terminal et code, paramètres, symbole, période, modèle de ticks, début demandé et effectif, version des données, coûts et état initial. Gardez paramètres et identifiants de fichiers. Si les déclarations diffèrent, n'attribuez pas tout à l'affichage ; Même backtest, résultat différent : comparer les preuves facilite ce rapprochement.
Cherchez le premier stade où disponibilité ou valeur diverge : lecture réussie, timestamp, indicateur prêt, signal, condition ou décision. « Profit 120 au lieu de 80 » ne nomme pas ce stade. Préservez journaux et petit tableau de comparaison, avec identifiant d'observation, entrée demandée, heure ou rang et acceptation. Ne reconstituez pas des nombres jamais enregistrés. Une trace exhaustive sans identifiant stable peut masquer le premier écart plutôt que l'expliquer.
Reconcevoir la dépendance du signal
Le module de calcul devrait produire valeur explicite et statut de disponibilité ; la couche graphique affiche ce résultat. Désactiver le dessin ne change alors pas volontairement la source du signal. Testez données disponibles, absentes et valeur exactement égale au seuil. Avec comparaison stricte et deux valeurs égales, le résultat numérique est faux, tandis qu'une entrée absente reste non évaluée.
Éliminer cette dépendance ne garantit pas des tests entiers identiques : versions, données, coûts et autres dépendances restent à contrôler. Sans code source, adressez au développeur le registre des passes et la première divergence réellement documentée. N'utilisez pas une série d'ordres en réel comme substitut au diagnostic. Backtesting MT4 et MT5 : données, indices et horloges traite la préparation générale.
Trois contrôles à effectuer ensuite
- Préservez une paire de passes et marquez les champs non confirmés ; même nom d'EA ne prouve pas environnement identique.
- Comparez 1,1050 et 1,1040, puis deux valeurs égales ; vérifiez que l'objet indisponible reste null dans notre modèle.
- Dans une configuration séparée sans trading, relevez le premier stade divergent et son identifiant ; aucune instruction d'ordre n'est nécessaire.
Un Expert Advisor (EA), robot MetaTrader peut réussir ce contrôle sans être rentable. Un Backtest : test historique d’une règle honnête distingue ce que le programme documente, ce que notre modèle stipule et ce qui reste inconnu.
Vérifiez vos acquis
Environ 3 minutes de pratique.
Voir la réponse et l’explication
C’est la convention explicite de notre modèle, pas une affirmation qu’une fonction MT5 renvoie null.
Autres questions
Null signifie-t-il que les fonctions d’objet MT5 renvoient null ?
Non. La documentation décrit des zéros numériques hors test visuel. Null est la représentation explicite de disponibilité dans notre simulation. Vérifiez fonction, succès, mode et entrée attendue pour un EA réel ; la page démontre une dépendance, pas tous les comportements MQL5.
Un résultat vrai indique-t-il qu’un ordre sera ouvert ?
Non. Deux nombres déclarés sont comparés sans terminal ni compte. Cela ne valide ni autres conditions, ni permissions, ni exécution. L’outil distingue faux et impossible à évaluer, sans signal d’investissement ou preuve d’efficacité.
Supprimer les objets garantit-il des tests identiques ?
Non. Cela traite une cause possible ; versions, paramètres, données, ticks, coûts et état initial comptent encore. Enregistrez les deux passes et le premier écart. Sans preuve préservée, ne choisissez pas une cause selon le profit obtenu.
Le petit logger est-il une stratégie prête au trading ?
Non : OnInit enregistre la configuration et OnTick est vide. Aucune demande, modification d’ordre, signal ou gestion de position. Compilez un fichier autonome et gardez son résultat réel ; n’ajoutez pas un second OnInit dans un EA existant. Ce contrôle ne certifie ni sécurité ni rentabilité.
Sources et vérification
- MQL5 — test des stratégies
Sections objets graphiques et limites Print/PrintFormat : zéro hors mode visuel, exception OnInit en optimisation ; pas expérience sur un EA.
- MQL5 — propriétés du programme
DrapeauxMQL_TESTER,MQL_VISUAL_MODE,MQL_OPTIMIZATION ; ils décrivent mode, pas performance.
- MQL5 — propriétés du terminal
TERMINAL_BUILD identifie le build du terminal, sans certifier données ou code.
- MQL5 — PrintFormat
Sortie formatée et restrictions en optimisation. Snippet source autonome sans ordres conservé ; compilation locale non revendiquée.
Les calculs reposent sur des hypothèses explicites. Ils ne remplacent ni les données actuelles du marché ni les conditions de l’intermédiaire.
