Fehler, Irrtümer, Fragen - Seite 1623

 
Dmitri Custurov:
Vielen Dank für die angebotene Lösung. Alles funktioniert.
Großartig. Die Bibliothek und der Anwendungsfall, den ich in KodoBase poste, sind also ein Beispiel.
 
-Aleks-:
Es wäre viel schneller, die gesamte Array-Datei in den Speicher zu lesen und dann mit ihr zu arbeiten.
Ich glaube nicht, dass der Optimierer die Datei zehntausende Male öffnen, lesen und schließen muss.
 
Aliaksandr Yemialyanau:

Wie kann ich eine Array-Datei mit meinem EA verbinden?

Zunächst schreibt das Skript ein Array:

Ich verbinde die Datei mit dem EA:

Beim Kompilieren treten Fehler auf:

'??????????????????????????t????...' - Bezeichner ist zu lang mas.dat 1 1

'' - unbekanntes Symbol mas.dat 1 3015

Was ist die mas-Datei? Welche Art von Datei? Nach diesen Fehlern zu urteilen, ist es nur ein Strom von Bytes, richtig?
 

Schwerwiegende Fehler bei statischen Variablen, z.B. dieser Code:

class A  { public:
            int m;
            A() { Alert("A");  m=1; }
         };

class B  { public:
            B() { Alert("B");  static A a;  Alert("a.m==",a.m);  Alert("&a==",&a);}
         };
B b;

void OnStart()
{
};

Bei der Ausführung erhalten wir die folgende Reihenfolge der Warnungen:

B
a.m==0
&a==0
A

Das heißt, dass die statische Variable zum Zeitpunkt des Zugriffs noch nicht initialisiert wurde. Auch der Zeiger ist null. Er wurde einfach übersprungen und wir können sicher weitergehen.

Entweder Sie initialisieren die Variable und machen weiter oder Sie brechen die Kompilierung mit einem Fehler ab.

Wenn jedoch eine Rekursion von gegenseitig referenzierten Klassen auftritt, sollte die Kompilierung abgebrochen werden.

 
Aliaksandr Yemialyanau:

Wie kann ich eine Array-Datei mit meinem EA verbinden?

Zunächst schreibt das Skript ein Array:

Ich verbinde die Datei mit dem EA:

Beim Kompilieren treten Fehler auf:

'??????????????????????????t????...' - Bezeichner ist zu lang mas.dat 1 1

'' - unbekanntes Symbol mas.dat 1 3015

Ihr Skript sollte eine Datei mas.mqh erzeugen, die ein Array von uchar-Typen mit Bytes Ihrer Daten enthält. Wenn die Datei beispielsweise drei Byte groß ist, sollte der Inhalt der Datei mas.mqh wie folgt aussehen:

uchar mass[3] = {25, 127, 89};

Die generierte Array-Masse ist das, was Sie in Ihrem Programm verwenden sollten.

 
Aliaksandr Yemialyanau:
Ich glaube nicht, dass der Optimierer die Datei zehntausende Male öffnen, lesen und schließen muss.
Oh, Sie wollen also mit einem Array kompilieren?
 
Sie müssen eine Datei nicht zehntausendmal von der Festplatte lesen, dafür gibt es den Festplatten-Cache, von dem ich zwar nicht weiß, ob er in diesem speziellen Fall verwendet wird, aber Sie sollten ihn überprüfen und messen, bevor Sie Krücken erfinden.
 
Wenn ich einen einzelnen Lauf im MT5 unterbreche, ist nur die Grafik der Saldenänderung sichtbar. Aber Handel und Aufträge sind nicht verfügbar.
Die Verwendung des Visualisierungsmodus ist wegen möglicher zusätzlicher langsamer Berechnungen durch MQLInfoInteger(MQL_VISUAL_MODE) nicht immer geeignet.
Ist es möglich, die Verfügbarkeit aller Informationen während des Backtests (ohne Visualisierung) hinzuzufügen, wie es in MT4 der Fall ist?
 
Im Debugging-Modus für historische Daten gibt MQLInfoInteger(MQL_VISUAL_MODE) immer true zurück.
 
fxsaber:
Im Debug-Modus für historische Daten gibt MQLInfoInteger(MQL_VISUAL_MODE) immer true zurück.
Was soll sie zurückgeben?