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

 

Ich stimme mit Raptor überein, die einzige Möglichkeit, wie jemand wirklich helfen kann, ist, wenn Sie den entsprechenden Code posten, sonst ist es so, als ob Sie nur im Dunkeln tappen.

 

Es tut mir leid, ich kann den Code nicht veröffentlichen. Es sind 72 Seiten und es ist der Code eines Produkts, das ich veröffentlichen werde.

In der Zwischenzeit habe ich die Log-Aufrufe implementiert, die WHRoeder in seiner ersten Antwort vorgeschlagen hat,

und schreibe Debug-Informationen, die von Microsofts dbgView eingesehen werden können.

Diese Debug-Informationen sind genau dieselben wie meine eigenen Debug-Informationen, was zeigt,

dass wir dem, was wir in den Protokolldateien sehen, vertrauen können.

Die Protokolldatei sagt uns nun, dass start() zwar beendet, aber nicht mehr ausgelöst wird.

Es scheint, dass dies mit der Menge an Arbeit zu tun hat, die in CreateHistory() erledigt wird, das innerhalb von start() aufgerufen wird.

Wenn ich dieselbe CreateHistory() in init() aufrufe, wird genau der gleiche Arbeitsaufwand ohne Probleme erledigt.

Können wir einen MT4-Entwickler hinzuziehen, der sich dies ansieht?

Wo kann ich weitere Informationen über einen MT4-Absturz finden (die EA-Version meines Indikators stürzt MT4 ab)?

In der Windows-Ereignisanzeige konnte ich nichts sehen.

 

Als ich sagte, posten Sie den relevanten Code, den ich nicht meinte, alle es, ich meinte, was haben Sie ändern oder hinzufügen, um es seit dem letzten Mal lief es erfolgreich? Ich nehme an, Sie haben nicht 72 Seiten reinen Code geschrieben, ohne ihn vorher zu testen ...

 

Was ich geändert habe, ist: Ich habe CreateHistory() von init() nach start() verschoben.

Die aktuelle Situation ist wie folgt:

Wenn ich CreateHistory() in start ohne Verzögerung aufrufe: funktioniert alles gut.

Wenn ich CreateHistory() in start mit einer Verzögerung >= 1 sec: MT4 bleibt hängen.

Es ist jedoch nicht CreateHistory(), das sich aufhängt, es ist die start() -Funktion.

Hier ist der Code für start() :

int start()
  {     
   int TFInd;
   int k;  
   
   if (CheckDebug(DebugStart, 2))
      {
         DebugStr = "DebugStart: " + "begin ---------------------------------------: ";
         PrintDebug(DebugFile, DebugStr);
      }

      
   for (IndexCount = 1; IndexCount <= MaxIndices; IndexCount++)
      {
         if (CheckDebug(DebugStart, 2))
            {
               DebugStr = "DebugStart: " + "in loop +++++++++++++: "+ "IndexCount: "+ IndexCount;
               PrintDebug(DebugFile, DebugStr);
            }              
      
         if (MyCurrencyIndices[IndexCount] == 0)
            break;

         CurrencyIndex = MyCurrencyIndices[IndexCount];             

         CurrencyIndexStr = Prefix + CurrencyNames[CurrencyIndex];
                 
         if (!HistoryCreated[CurrencyIndex] && (TimeLocal() >= IndiStartTime + 0))                                                  // yyy
            {                     
               FileSeek(FileHandle[CurrencyIndex, TimeFrameM15] , HeaderFilePointer[CurrencyIndex, TimeFrameM15] , SEEK_SET);
               FileSeek(FileHandle[CurrencyIndex, TimeFrameH1] , HeaderFilePointer[CurrencyIndex, TimeFrameH1] , SEEK_SET);
               FileSeek(FileHandle[CurrencyIndex, TimeFrameH4] , HeaderFilePointer[CurrencyIndex, TimeFrameH4] , SEEK_SET);
               FileSeek(FileHandle[CurrencyIndex, TimeFrameD1] , HeaderFilePointer[CurrencyIndex, TimeFrameD1] , SEEK_SET);

               CreateHistory();
               HistoryCreated[CurrencyIndex] = true;    
            }                           
      }  

   if (CheckDebug(DebugStart, 2))
      {
         DebugStr = "DebugStart: " + "returning ...";
         PrintDebug(DebugFile, DebugStr);
      }
                          
   return(0);
  }

Unten sind 2 Log-Dateien:

eine für den obigen Code mit TimeLocal() >= IndiStartTime + 0 (funktioniert gut), eine für den obigen Code mit TimeLocal() >= IndiStartTime + 1 (bleibt hängen).

Im letzten Fall wird CreateHistory() korrekt ausgeführt und zurückgegeben.

Es wird nur einmal innerhalb von start() aufgerufen.

Es wird nichts anderes in start() getan, trotzdem wird start() nie wieder von MT4 aufgerufen und MT4 hängt sich auf und frisst CPU.

CreateHistory() triggert 80% meines Codes.

Ich kann ihn nicht posten.

Logdatei für 0 Sekunden Verzögerung:

2013.12.04 12:34:10 Test reduziert: USDJPY M15 Debug Init() begin:
2013.12.04 12:34:10 Test reduziert: USDJPY M15 Debug Init() return:
2013.12.04 12:34:10 Test reduziert: USDJPY M15 DebugStart: begin ---------------------------------------:
2013.12.04 12:34:10 Test verkürzt: USDJPY M15 DebugStart: in loop +++++++++++++: IndexCount: 1 <----------- CreateHistory() wird sofort aufgerufen
2013.12.04 12:34:10 Test reduziert: USDJPY M15 Debug CreateHistoryTimeFrame(), start: CurrencyIndex: 1 TF: 1 ShiftsArray[1, TF]: 4996 TheShift: 0
2013.12.04 12:34:10 Test reduziert: USDJPY M15 Debug CreateHistoryTimeFrame(), final return: CurrencyIndex: 1 TF: 1
2013.12.04 12:34:10 Test reduziert: USDJPY M15 DebugStart: in Schleife +++++++++++++: IndexCount: 2
2013.12.04 12:34:10 Test reduziert: USDJPY M15 DebugStart: Rückgabe ...
2013.12.04 12:34:11 Test reduziert: USDJPY M15 DebugStart: begin ---------------------------------------: <------------ start() wird wiederholt ausgelöst
2013.12.04 12:34:11 Test reduziert: USDJPY M15 DebugStart: in Schleife +++++++++++++: IndexCount: 1
2013.12.04 12:34:11 Test reduziert: USDJPY M15 DebugStart: in Schleife +++++++++++++: IndexCount: 2
2013.12.04 12:34:11 Test reduziert: USDJPY M15 DebugStart: Rückgabe ...
2013.12.04 12:34:11 Test reduziert: USDJPY M15 DebugStart: begin ---------------------------------------:
2013.12.04 12:34:11 Test reduziert: USDJPY M15 DebugStart: in Schleife +++++++++++++: IndexCount: 1
2013.12.04 12:34:11 Test reduziert: USDJPY M15 DebugStart: in Schleife +++++++++++++: IndexCount: 2
2013.12.04 12:34:11 Test reduziert: USDJPY M15 DebugStart: Rückgabe ...

Logdatei für 1 Sekunde Verzögerung:

2013.12.04 12:32:17 Test reduziert 0: USDJPY M15 Debug Init() beginnen:
2013.12.04 12:32:17 Test reduziert 0: USDJPY M15 Debug Init() return:
2013.12.04 12:32:17 Test reduced 0: USDJPY M15 DebugStart: begin ---------------------------------------:
2013.12.04 12:32:17 Test reduziert 0: USDJPY M15 DebugStart: in loop +++++++++++++: IndexCount: 1
2013.12.04 12:32:17 Test reduziert 0: USDJPY M15 DebugStart: in loop +++++++++++++: IndexCount: 2
2013.12.04 12:32:17 Test reduziert 0: USDJPY M15 DebugStart: Rückkehr ...
2013.12.04 12:32:17 Test reduziert 0: USDJPY M15 DebugStart: begin ---------------------------------------:
2013.12.04 12:32:17 Test reduziert 0: USDJPY M15 DebugStart: in loop +++++++++++++: IndexCount: 1
2013.12.04 12:32:17 Test reduziert 0: USDJPY M15 DebugStart: in loop +++++++++++++: IndexCount: 2
2013.12.04 12:32:17 Test reduziert 0: USDJPY M15 DebugStart: Rückkehr ...
2013.12.04 12:32:17 Test reduziert 0: USDJPY M15 DebugStart: begin ---------------------------------------:
2013.12.04 12:32:17 Test reduziert 0: USDJPY M15 DebugStart: in loop +++++++++++++: IndexCount: 1
2013.12.04 12:32:17 Test reduziert 0: USDJPY M15 DebugStart: in loop +++++++++++++: IndexCount: 2
2013.12.04 12:32:17 Test reduziert 0: USDJPY M15 DebugStart: Rückkehr ...
2013.12.04 12:32:17 Test reduziert 0: USDJPY M15 DebugStart: begin ---------------------------------------:
2013.12.04 12:32:17 Test reduziert 0: USDJPY M15 DebugStart: in loop +++++++++++++: IndexCount: 1
2013.12.04 12:32:17 Test reduziert 0: USDJPY M15 DebugStart: in loop +++++++++++++: IndexCount: 2
2013.12.04 12:32:17 Test reduziert 0: USDJPY M15 DebugStart: Rückkehr ...
2013.12.04 12:32:17 Test reduziert 0: USDJPY M15 DebugStart: begin ---------------------------------------:
2013.12.04 12:32:17 Test reduziert 0: USDJPY M15 DebugStart: in loop +++++++++++++: IndexCount: 1
2013.12.04 12:32:17 Test reduziert 0: USDJPY M15 DebugStart: in loop +++++++++++++: IndexCount: 2
2013.12.04 12:32:17 Test reduziert 0: USDJPY M15 DebugStart: Rückkehr ...
2013.12.04 12:32:17 Test reduziert 0: USDJPY M15 DebugStart: begin ---------------------------------------:
2013.12.04 12:32:17 Test reduziert 0: USDJPY M15 DebugStart: in loop +++++++++++++: IndexCount: 1
2013.12.04 12:32:17 Test reduziert 0: USDJPY M15 DebugStart: in loop +++++++++++++: IndexCount: 2
2013.12.04 12:32:17 Test reduziert 0: USDJPY M15 DebugStart: Rückkehr ...
2013.12.04 12:32:17 Test reduziert 0: USDJPY M15 DebugStart: begin ---------------------------------------:
2013.12.04 12:32:17 Test reduziert 0: USDJPY M15 DebugStart: in loop +++++++++++++: IndexCount: 1
2013.12.04 12:32:17 Test reduziert 0: USDJPY M15 DebugStart: in loop +++++++++++++: IndexCount: 2
2013.12.04 12:32:17 Test reduziert 0: USDJPY M15 DebugStart: Rückkehr ...
2013.12.04 12:32:17 Test reduziert 0: USDJPY M15 DebugStart: begin ---------------------------------------:
2013.12.04 12:32:17 Test reduziert 0: USDJPY M15 DebugStart: in loop +++++++++++++: IndexCount: 1
2013.12.04 12:32:17 Test reduziert 0: USDJPY M15 DebugStart: in loop +++++++++++++: IndexCount: 2
2013.12.04 12:32:17 Test reduziert 0: USDJPY M15 DebugStart: Rückkehr ...
2013.12.04 12:32:17 Test reduziert 0: USDJPY M15 DebugStart: begin ---------------------------------------:
2013.12.04 12:32:17 Test reduziert 0: USDJPY M15 DebugStart: in loop +++++++++++++: IndexCount: 1
2013.12.04 12:32:17 Test reduziert 0: USDJPY M15 DebugStart: in loop +++++++++++++: IndexCount: 2
2013.12.04 12:32:17 Test reduziert 0: USDJPY M15 DebugStart: Rückkehr ...
2013.12.04 12:32:18 Test reduziert 0: USDJPY M15 DebugStart: begin ---------------------------------------:
2013.12.04 12:32:18 Test reduced 0: USDJPY M15 DebugStart: in loop +++++++++++++: IndexCount: 1
2013.12.04 12:32:18 Test reduziert 0: USDJPY M15 Debug CreateHistoryTimeFrame(), start: CurrencyIndex: 1 TF: 1 ShiftsArray[1, TF]: 4996 TheShift: 0 <----------- nach 1 sec CreateHistory() wird aufgerufen
2013.12.04 12:32:18 Test reduziert 0: USDJPY M15 Debug CreateHistoryTimeFrame(), final return: CurrencyIndex: 1 TF: 1
2013.12.04 12:32:18 Test reduziert 0: USDJPY M15 DebugStart: in Schleife +++++++++++++: IndexCount: 2
2013.12.04 12:32:18 Test reduziert 0: USDJPY M15 DebugStart: Rückgabe ... <---------- start() wird nie wieder ausgelöst

 
Ich habe Lust, Verstecken zu spielen. Im Moment bin ich sehr misstrauisch, dass Ihre CreateHistory() -Funktion wiederholtin die Live-.hst-Dateien schreibt. Liege ich richtig?
 

CreateHistory() erstellt Offline-Diagramme und schreibt sie in .hst-Dateien.

Sie schreibt NICHT in die Live-.hst-Dateien.

 
mt4forum:

CreateHistory() erstellt Offline-Diagramme und schreibt sie in .hst-Dateien.

Sie schreibt NICHT in die Live-.hst-Dateien.

Wie können Sie sicherstellen, dass dies der Fall ist?
 
RaptorUK:
Wie können Sie sicherstellen, dass dies der Fall ist?

   CurrencyIndexStr = "CI_EUR";  

   FileName = CurrencyIndexStr + ThePeriod + ".hst";
   FileHandle = FileOpenHistory(FileName, FILE_BIN|FILE_WRITE);  

Es gibt kein MT4-Instrument mit dem Namen CI_EUR.

 
mt4forum:

Es gibt kein MT4-Instrument mit dem Namen CI_EUR.

OK