Fehler, Irrtümer, Fragen - Seite 1628

 
HistoryOrderGetInteger(OrderTicket, ORDER_TIME_DONE_MSC ) - gibt im Testgerät Null zurück!
 

Fehler beim Öffnen einer Datei durch den Prüfer. Und wenn zum Beispiel

1. "einige irrelevante Codes" entfernen (siehe unten)

2. oder entfernen Sie ::Sleep(1000)

es liegt kein Fehler vor

//Test.mq5
#import "Test001.ex5"
        string f( string file );
#import
string __Period() { return StringSubstr( EnumToString((ENUM_TIMEFRAMES)Period()), 7 ); }
void OnInit()
{
        Print( Symbol(), ",", __Period(), ", результат=", f( "test.txt" ));
}

Abfolge der Aktionen:

1. Erstellen Sie ein neues Profil (z. B. "Test")

2. Öffnen Sie zwei neue Charts und hängen Sie den Expert Advisor Test.ex5 an beide Charts an (siehe Abbildung).

4. Wählen Sie ein anderes vorhandenes Profil

5. Profil "Test" auswählen

Ergebnis:

Test001.mq5 sieht wie folgt aus:

//Test001.mq5
#property library
//---
//здесь некий код не имеющий отношения к делу
//---
string f( string file ) export
{
        ::ResetLastError();
        int hFile = ::FileOpen( file, FILE_READ | FILE_SHARE_READ | FILE_TXT | FILE_ANSI | FILE_COMMON );
        if ( hFile == INVALID_HANDLE )
                return ::StringFormat( "Error(%d): Не был открыт файл: %s", ::GetLastError(), file );
        ::Sleep( 1000 );
        ::FileClose( hFile );
        return "OK";
}
Dateien:
Test001.ex5  16 kb
 

Die Datei test.txt selbst ist nicht an die Nachricht angehängt, sondern sieht wie folgt aus

Zusätzliche Informationen: Ort der zu öffnenden Datei im Sinne von FILE_COMMON - hat keinen Einfluss auf den Fehler

 
Andrey Barinov:

Dies ist eine Code-Optimierung.

Wenn Sie in metaeditor.ini im Feld [Experts] OPTIMIZE=0 schreiben, dann wird die Kompilierungsgeschwindigkeit wie in 4. Ich habe einige Projekte, die in 20 Sekunden kompiliert werden und andere, die in eine unendliche Optimierungsschleife geraten :)

Wow, danke Kumpel! Wo waren Sie vorher? ) Und wir haben uns hier gequält... Das Seltsamste ist, dass die Entwickler nichts über diese Option gesagt haben
 
Alexey Navoykov:
Wow, danke Kumpel! Wo waren Sie denn schon mal? ) Und hier leiden wir ... Seltsam ist, dass die Entwickler diese Option nicht erwähnt haben.

Nicht still. Es gibt ein 18-seitiges Thema im Forum, in dem diese Möglichkeit gerade beschrieben wurde.

Übrigens ist die Optimierung beim Kompilieren für die Fehlersuche nicht aktiviert.

 
Andrey Barinov:

Dies ist eine Code-Optimierung.

Wenn Sie in metaeditor.ini im Feld [Experts] OPTIMIZE=0 schreiben, dann wird die Kompilierungsgeschwindigkeit wie in 4. Ich habe einige Projekte in 20 Sekunden kompiliert, und einige gehen in eine unendliche Optimierungsschleife :)

Ganz genau! Allerdings habe ich ihn vor einiger Zeit selbst auf 1 gesetzt und ihn dann einfach vergessen. ))

Alexey Navoykov:
... Und wir haben hier immer noch zu kämpfen... Das Seltsame ist, dass die Entwickler nichts über diese Option gesagt haben

Das Thema wurde im Detail besprochen:Testen eines neuen MQL5-Compilers für x64-Plattformen - Geschwindigkeitssteigerung von 2 auf 10 Mal!>>>

>>> Ich habe es nur vergessen. )

Anfangs funktionierte diese Optimierung noch nicht einmal bei mir. D.h. die Kompilierung würde in einigen Fällen fehlschlagen. Aber dann habe ich den Grund gefunden. Dann wurde es behoben, und ich setzte den Parameter in einem der Terminals auf 1 und vergaß ihn. Und gestern saß ich da und fragte mich, warum die Kompilierung in einem MT5-Editor viel schneller geht als in einem anderen MT5-Editor.

//---

Wenn ich ihn jetzt auf 0 setze, ist die Kompilierung ~25 Mal schneller.

0 error(s), 0 warning(s), compile time: 668 msec                1       1
 
Anatoli Kazharski:

Natürlich brauchen auch meine komplexesten Projekte in MetaTrader 5 viel Zeit zum Kompilieren. Es dauert sogar bis zu 11 Sekunden. Genau die gleichen Versionen, aber in MetaTrader 4 kann bis zu 25 Mal schneller sein.

In MT5 ist der Compiler fortschrittlicher und optimiert den Code so, dass er bis zu 10 Mal schneller läuft als in MT5. Wir haben schon früher darüber geschrieben und es erklärt.

Der MQL5-Compiler muss aus Kompatibilitätsgründen zwei Kopien des Codes erstellen - für die alte 32-Bit-Version (ohne vollständige Optimierung) und die maximal optimierte Version für 64 Bit. Die volle Leistungsfähigkeit von MQL5 zeigt sich nur in 64 Bit.

 
Renat Fatkhullin:

Der MT5-Compiler ist fortschrittlicher, er optimiert den Code so, dass er bis zu 10 Mal schneller läuft als MT5.

Darüber hinaus muss der Compiler aus Kompatibilitätsgründen zwei Kopien des Codes erstellen - für die alte 32-Bit-Version (ohne vollständige Optimierung) und die maximal optimierte Version für 64 Bit. Die volle Leistungsfähigkeit von MQL5 zeigt sich nur in 64 Bit.

Ich danke Ihnen. Ich habe mein Gedächtnis bereits in dem Thread aufgefrischt, in dem all dies diskutiert wurde.

Ich werde sie für die Zeit der Entwicklung auf 0 setzen, da ich oft eine Kompilierung durchführen muss und es sehr ermüdend ist, 10 Sekunden zu warten. Und für das Endprodukt vor der endgültigen Zusammenstellung werde ich die 1.

 
Renat Fatkhullin:

In MT5 ist der Compiler fortschrittlicher und optimiert den Code so, dass er bis zu 10 Mal schneller läuft als in MT5. Wir haben dies bereits früher geschrieben und erläutert.

Der MQL5-Compiler muss aus Kompatibilitätsgründen zwei Kopien des Codes erstellen - für die alte 32-Bit-Version (ohne vollständige Optimierung) und die maximal optimierte Version für 64 Bit. Die volle Leistungsfähigkeit von MQL5 zeigt sich nur in 64 Bit.

Wenn Sie denOPTIMIZE-Parameter ändern, während MetaEditor läuft, müssen Sie ihn dann neu laden, um die Einstellungen zu übernehmen oder nicht?
 
coderex:
Wenn derOPTIMIZE-Parameter geändert wird, während der MetaEditor läuft, muss er dann neu geladen werden, um die Einstellungen zu übernehmen oder nicht?
Es ist schneller, es selbst zu versuchen. Ich habe es gerade getestet. Ein Neustart des Editors ist nicht erforderlich.
Grund der Beschwerde: