
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Nein, ich verwende weder sleep() noch messagebox(), aber ich erledige eine Menge Arbeit in der Funktion MyInit(), die etwa 5 Sekunden dauert.
Sie können das in der Log-Datei sehen:
2013.11.15 14:35:32 Test reduziert 1180990: USDJPY M15 DebugStart: InitialHistoryGapClosed
2013.11.15 14:35:32 Test reduziert 1180990: USDJPY M15 DebugMyInit begin: <---------- work starts
2013.11.15 14:35:32 Test reduziert 1180990: USDJPY M15 DebugMyInit InitialMyInitCalls: 0 IndexCount: 1 nach CreateHistory()
2013.11.15 14:35:33 Test reduziert 1180990: USDJPY M15 DebugMyInit InitialMyInitCalls: 0 IndexCount: 2 nach CreateHistory()
2013.11.15 14:35:34 Test reduziert 1180990: USDJPY M15 DebugMyInit InitialMyInitCalls: 0 IndexCount: 3 nach CreateHistory()
2013.11.15 14:35:35 Test reduziert 1180990: USDJPY M15 DebugMyInit InitialMyInitCalls: 0 IndexCount: 4 nach CreateHistory()
2013.11.15 14:35:35 Test reduziert 1180990: USDJPY M15 DebugMyInit InitialMyInitCalls: 0 IndexCount: 5 nach CreateHistory()
2013.11.15 14:35:36 Test reduziert 1180990: USDJPY M15 DebugMyInit InitialMyInitCalls: 0 IndexCount: 6 nach CreateHistory()
2013.11.15 14:35:37 Test reduziert 1180990: USDJPY M15 DebugMyInit InitialMyInitCalls: 0 IndexCount: 7 nach CreateHistory()
2013.11.15 14:35:37 Test reduziert 1180990: USDJPY M15 DebugMyInit return InitialMyInitCalls: 0 IndexCount: 8 <---------- work ends
2013.11.15 14:35:37 Test reduziert 1180990: USDJPY M15 DebugStart: letzte Rückkehr in InitialGapFound
Aber warum sollte das MT4 danach in eine Schleife gehen?
Sie alle sprechen von Endlosschleifen, aber niemand ist neugierig, was CreateHistory() macht. Laut der Log-Ausgabe erscheint sie nur im letzten start()-Lauf.
Ich nahm an, dass es sich um eine Art Speicherfunktion für die Geschichte handelt. Wenn der OP sie zeigen will, wird er das tun. Ich nehme an, dass er das nicht will, und selbst wenn er es will, wird es uns wahrscheinlich nicht helfen, ihm zu helfen. Am schnellsten geht es, wenn er seinen Code postet, damit ihn jemand mit anderen Augen sehen kann... . .
mt4forum 2013.11.16 11:14
Aber warum sollte MT4 danach in einer Schleife hängen bleiben?
Nach Ihrer Log-Datei zu urteilen, sieht es so aus, als ob er bereits in einer Schleife war. Was passiert, nachdem er bei 8 angekommen ist? War er in einer Schleife, wenn ja, woher wissen Sie, dass er die Schleife verlassen hat? Ist er zu init() zurückgekehrt?
Sie haben Print("Started Started"); hinzugefügt und es ist nie in der Logdatei aufgetaucht, also ist es nie in die start()-Funktion eingetreten. Das deutet darauf hin, dass die init()-Funktion nie verlassen wurde. Fügen Sie weitere Print()-Anweisungen ein und grenzen Sie den Fehler ein.
Zunächst einmal danke ich Ihnen für das große Interesse und entschuldige mich für meine späte Antwort.
Ich werde in den folgenden Beiträgen auf die verschiedenen Kommentare eingehen.
Tut es nicht, aber Sie schrauben Sie die Schnittstelle Thread und MT4 sperrt ... können Sie nicht tun, was Sie in einem EA tun?
Ich habe das Programm als EA ausgeführt. Es hängt entweder als gut oder stürzt MT4.
Ich habe das Programm als EA ausgeführt. Es bleibt entweder auch hängen oder bringt MT4 zum Absturz.
Sie alle sprechen von Endlosschleifen, aber niemand ist neugierig, was CreateHistory() macht. Laut der Log-Ausgabe erscheint sie nur im letzten start()-Lauf.
CreateHistory() macht eine Menge Arbeit. Es durchläuft Währungspaare und Zeitrahmen und erzeugt Offline-Charts.
Aber die Protokolldatei zeigt, dass sie korrekt beendet wird.
Nach Ihrer Protokolldatei zu urteilen, sieht es so aus, als ob er sich bereits in einer Schleife befand. Was passiert, nachdem er bei 8 angekommen ist? War er in einer Schleife, wenn ja, woher wissen Sie, dass er die Schleife verlassen hat? Ist er zu init() zurückgekehrt?
Sie haben Print("Started Started"); hinzugefügt und es ist nie in der Logdatei aufgetaucht, also ist es nie in die start()-Funktion eingetreten. Das deutet darauf hin, dass die init()-Funktion nie verlassen wurde. Fügen Sie weitere Print()-Anweisungen ein und grenzen Sie die Suche ein.
Nachdem er 8 erreicht hat, kehrt er korrekt zu init() zurück.
Die folgende Zeile in der Protokolldatei zeigt dies: "DebugMyInit return ..." ist die letzte Debug-Zeile in MyInit().
2013.11.15 12:33:22 Test reduziert 395052: USDJPY M15 DebugMyInit return InitialMyInitCalls: 0 IndexCount: 8
Ich verwende meine eigene Druckfunktion, um die Logdatei zu erzeugen. Print("Started Started") druckt nicht in diese Logdatei.
Der Eintrag
2013.11.15 12:33:22 Test reduziert 395052: USDJPY M15 DebugStart: letzte Rückkehr in InitialGapFound
zeigt, dass die Funktion init() verlassen wurde.
Wenn ich darauf vertrauen kann, dass meine Debug-Funktion alle Informationen korrekt protokolliert, dann sagt uns die Log-Datei, dass nach dem letzten Durchlauf von start(),
start() beendet und nicht wieder aufgerufen wird. Genau das ist das Problem.