Vous parlez tous de boucles infinies, mais personne n'est curieux de savoir ce que fait CreateHistory(). D'après le journal, elle n'apparaît que dans la dernière exécution de start().
Ovo: Vous parlez tous de boucles infinies, mais personne n'est curieux de savoir ce que fait CreateHistory(). D'après le journal, elle n'apparaît que lors de la dernière exécution de start().
J'ai supposé que c'était une sorte de fonction de sauvegarde de l'historique... si le PO veut le montrer, il le fera.... Je suppose qu'il ne le fait pas et même s'il le fait, cela ne nous aidera probablement pas à l'aider. Le moyen le plus rapide est qu'il poste son code pour que quelqu'un puisse le regarder avec une nouvelle paire d'yeux.... . .
RaptorUK: J'ai supposé que c'était une sorte de fonction de sauvegarde de l'historique... Si le PO veut le montrer, il le fera... Je suppose qu'il ne le fait pas et même s'il le fait, cela ne va probablement pas nous aider à l'aider. Le moyen le plus rapide est qu'il poste son code pour que quelqu'un puisse le regarder avec une nouvelle paire d'yeux.... . .
Pas de problème, je voulais souligner que la boucle infinie pourrait ne pas être la seule raison pour laquelle le terminal se bloque. Surtout si le script modifie certains fichiers.
Mais pourquoi MT4 se mettrait-il ensuite en boucle ?
A en juger par votre fichier journal, il semble qu'il était déjà en boucle. Que se passe-t-il après avoir atteint 8 ? Etait-il dans une boucle ? Si oui, comment savez-vous qu'il est sorti de cette boucle ? Est-il retourné à init() ?
Vous avez ajouté Print("Start Started") ; et cela n'est jamais apparu dans le fichier journal, donc il n'est jamais entré dans la fonction start(). Cela suggère qu'il n'est jamais sorti de la fonction init(). Mettez plus d'instructions Print() et réduisez le champ.
RaptorUK: Ce n'est pas le cas, mais si vous bousillez le fil de l'interface, MT4 se bloque... Ne pouvez-vous pas faire ce que vous faites dans une EA ?
J'ai exécuté le programme en tant qu'EA. Soit il se bloque, soit il fait planter MT4.
Ovo: Vous parlez tous de boucles infinies, mais personne ne se demande ce que fait CreateHistory(). D'après le journal, elle n'apparaît que dans la dernière exécution de start().
CreateHistory() fait beaucoup de travail. Elle passe en boucle les paires de devises et les horizons temporels et génère des graphiques hors ligne.
Mais le fichier journal montre qu'elle se termine correctement.
A en juger par votre fichier journal, il semble qu'il était déjà dans une boucle. Que se passe-t-il après qu'il soit arrivé à 8 ? Etait-il dans une boucle si c'est le cas, comment savez-vous qu'il est sorti de cette boucle ? Est-il retourné à init() ?
Vous avez ajouté Print("Start Started") ; et cela n'est jamais apparu dans le fichier journal, donc il n'est jamais entré dans la fonction start(). Cela suggère qu'il n'est jamais sorti de la fonction init(). Mettez plus d'instructions Print() et réduisez le champ.
Après être arrivé à 8, il retourne correctement à init().
La ligne suivante du fichier journal le montre : "DebugMyInit return ..." est la dernière ligne de débogage dans MyInit().
J'utilise ma propre fonction print pour générer le fichier journal. Print("Start Started") n'imprime pas dans ce fichier journal.
L'entrée
2013.11.15 12:33:22 Test réduit 395052 : USDJPY M15 DebugStart : dernier retour dans InitialGapFound
montre qu'il a quitté la fonction init().
Si je peux faire confiance, que ma fonction de débogage enregistre correctement toutes les informations, alors le fichier journal nous indique, qu'après la dernière exécution de start(),
start() est sortie et n'est pas appelée à nouveau. C'est là le problème.
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
Non, je n'utilise pas sleep() ou messagebox(), mais je fais beaucoup de travail dans la fonction MyInit(), qui prend environ 5 secondes.
Vous pouvez le constater dans le fichier journal :
2013.11.15 14:35:32 Test réduit 1180990 : USDJPY M15 DebugStart : InitialHistoryGapClosed
2013.11.15 14:35:32 Test réduit 1180990 : USDJPY M15 DebugMyInit begin : <---------- travail commence
2013.11.15 14:35:32 Test réduit 1180990 : USDJPY M15 DebugMyInit InitialMyInitCalls : 0 IndexCount : 1 nach CreateHistory()
2013.11.15 14:35:33 Test réduit 1180990 : USDJPY M15 DebugMyInit InitialMyInitCalls : 0 IndexCount : 2 nach CreateHistory()
2013.11.15 14:35:34 Test réduit 1180990 : USDJPY M15 DebugMyInit InitialMyInitCalls : 0 IndexCount : 3 nach CreateHistory()
2013.11.15 14:35:35 Test réduit 1180990 : USDJPY M15 DebugMyInit InitialMyInitCalls : 0 IndexCount : 4 nach CreateHistory()
2013.11.15 14:35:35 Test réduit 1180990 : USDJPY M15 DebugMyInit InitialMyInitCalls : 0 IndexCount : 5 nach CreateHistory()
2013.11.15 14:35:36 Test réduit 1180990 : USDJPY M15 DebugMyInit InitialMyInitCalls : 0 IndexCount : 6 nach CreateHistory()
2013.11.15 14:35:37 Test réduit 1180990 : USDJPY M15 DebugMyInit InitialMyInitCalls : 0 IndexCount : 7 nach CreateHistory()
2013.11.15 14:35:37 Test réduit 1180990 : USDJPY M15 DebugMyInit retour InitialMyInitCalls : 0 IndexCount : 8 <---------- fin du travail
2013.11.15 14:35:37 Test réduit 1180990 : USDJPY M15 DebugStart : dernier retour dans InitialGapFound
Mais pourquoi cela fait-il que MT4 passe en boucle après cela ?
Vous parlez tous de boucles infinies, mais personne n'est curieux de savoir ce que fait CreateHistory(). D'après le journal, elle n'apparaît que lors de la dernière exécution de start().
J'ai supposé que c'était une sorte de fonction de sauvegarde de l'historique... Si le PO veut le montrer, il le fera... Je suppose qu'il ne le fait pas et même s'il le fait, cela ne va probablement pas nous aider à l'aider. Le moyen le plus rapide est qu'il poste son code pour que quelqu'un puisse le regarder avec une nouvelle paire d'yeux.... . .
mt4forum 2013.11.16 11:14
Mais pourquoi MT4 se mettrait-il ensuite en boucle ?
A en juger par votre fichier journal, il semble qu'il était déjà en boucle. Que se passe-t-il après avoir atteint 8 ? Etait-il dans une boucle ? Si oui, comment savez-vous qu'il est sorti de cette boucle ? Est-il retourné à init() ?
Vous avez ajouté Print("Start Started") ; et cela n'est jamais apparu dans le fichier journal, donc il n'est jamais entré dans la fonction start(). Cela suggère qu'il n'est jamais sorti de la fonction init(). Mettez plus d'instructions Print() et réduisez le champ.
Tout d'abord, merci pour votre grand intérêt, et désolé pour ma réponse tardive.
Je vais aborder les différents commentaires dans les entrées suivantes.
Ce n'est pas le cas, mais si vous bousillez le fil de l'interface, MT4 se bloque... Ne pouvez-vous pas faire ce que vous faites dans une EA ?
J'ai exécuté le programme en tant qu'EA. Soit il se bloque, soit il fait planter MT4.
J'ai exécuté le programme en tant qu'EA. Soit il se bloque, soit il fait planter MT4.
Vous parlez tous de boucles infinies, mais personne ne se demande ce que fait CreateHistory(). D'après le journal, elle n'apparaît que dans la dernière exécution de start().
CreateHistory() fait beaucoup de travail. Elle passe en boucle les paires de devises et les horizons temporels et génère des graphiques hors ligne.
Mais le fichier journal montre qu'elle se termine correctement.
A en juger par votre fichier journal, il semble qu'il était déjà dans une boucle. Que se passe-t-il après qu'il soit arrivé à 8 ? Etait-il dans une boucle si c'est le cas, comment savez-vous qu'il est sorti de cette boucle ? Est-il retourné à init() ?
Vous avez ajouté Print("Start Started") ; et cela n'est jamais apparu dans le fichier journal, donc il n'est jamais entré dans la fonction start(). Cela suggère qu'il n'est jamais sorti de la fonction init(). Mettez plus d'instructions Print() et réduisez le champ.
Après être arrivé à 8, il retourne correctement à init().
La ligne suivante du fichier journal le montre : "DebugMyInit return ..." est la dernière ligne de débogage dans MyInit().
2013.11.15 12:33:22 Test réduit 395052 : USDJPY M15 DebugMyInit return InitialMyInitCalls : 0 IndexCount : 8
J'utilise ma propre fonction print pour générer le fichier journal. Print("Start Started") n'imprime pas dans ce fichier journal.
L'entrée
2013.11.15 12:33:22 Test réduit 395052 : USDJPY M15 DebugStart : dernier retour dans InitialGapFound
montre qu'il a quitté la fonction init().
Si je peux faire confiance, que ma fonction de débogage enregistre correctement toutes les informations, alors le fichier journal nous indique, qu'après la dernière exécution de start(),
start() est sortie et n'est pas appelée à nouveau. C'est là le problème.