MT4 hängt sich auf, ruft nicht mehr start() auf - Seite 3

 
mt4forum:

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?

Es tut nicht, aber Sie schrauben Sie die Schnittstelle Thread und MT4 sperrt ... können Sie nicht tun, was Sie tun, in einem EA ?
 
Sie alle sprechen von Endlosschleifen, aber niemand ist neugierig, was CreateHistory() macht. Nach der Log-Ausgabe erscheint sie nur im letzten start()-Lauf.
 
Ovo:
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 History-Speicherfunktion handelt... wenn der OP es zeigen will, wird er es tun... Ich nehme an, dass er es 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... . .
 
RaptorUK:
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... . .

Kein Problem, ich wollte nur darauf hinweisen, dass eine Endlosschleife nicht der einzige Grund für das Hängen des Terminals sein kann. Vor allem, wenn das Skript einige Dateien modifiziert.
 

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.

 
RaptorUK:
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.

 
mt4forum:

Ich habe das Programm als EA ausgeführt. Es bleibt entweder auch hängen oder bringt MT4 zum Absturz.

Ich denke, Sie müssen Ihren Code zu posten, damit jemand in der Lage sein, viel von einer Chance zu helfen stehen....
 
Ovo:
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.

 
SDC:

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.