Fehler, Irrtümer, Fragen - Seite 2784

 

printf(), double, wissenschaftliche Form. Die Anzahl der Dezimalstellen, die ich einstellen kann, die Gesamtlänge der Zahl, die ich einstellen kann:

double d=12.3456789;
printf("d=%012.4E",d);

Ergebnis: d=001.2346E+01

Kann ich vor einer Potenz Nullen hinzufügen? Sie sollte folgendermaßen aussehen: d=001.2346E+0001
 
sershi87:
Wie ich bereits sagte, ist das Terminal nach dem Update sehr langsam und hängt sich komplett auf. Vor der Aktualisierung gab es keine derartigen Probleme und alles funktionierte einwandfrei. Ich bin mir des Debian-Problems bewusst und stimme voll und ganz mit der Tatsache überein, dass es sich um eine sehr stabile Platte handelt. Ich bin jedoch der Meinung, dass eine native Version schon lange überfällig ist und wir diese verfolgen müssen.

Ich vermute, dass die Verlangsamungen und Abstürze durch eine fehlerhafte Synchronisierung mit dem History-Server verursacht werden.
Das heißt, zum Beispiel, die Einstellung der Bars im Terminal-Fenster ist 100000, zum Beispiel ich 3000 Bars aus dem Code
anfordern, aber die Synchronisation kann fehlschlagen und beginnt die Synchronisation mit allen verfügbaren Geschichte auf dem Server und pumpt alle Geschichte vom Server.
Aufgrund dieses vollständigen Abpumpens des Verlaufs bleibt das Terminal hängen, bis es den gesamten Verlauf des verfügbaren Servers heruntergeladen hat.
Wenn Sie auf diesen Download warten, hängt sich das Terminal auf und beginnt zu arbeiten.

 
Roman:

Ich vermute, dass die Verlangsamungen und Abstürze durch eine fehlerhafte Synchronisierung mit dem History-Server verursacht werden.
Das heißt, zum Beispiel, die Einstellung der Bars im Terminal-Fenster ist 100000, zum Beispiel ich 3000 Bars aus dem Code
anfordern, aber die Synchronisation kann fehlschlagen und beginnt die Synchronisation mit allen verfügbaren Geschichte auf dem Server und pumpt alle Geschichte vom Server.
Aufgrund dieses vollständigen Abpumpens des Verlaufs bleibt das Terminal hängen, bis es den gesamten Verlauf des verfügbaren Servers heruntergeladen hat.
Wenn Sie auf diesen Download warten, hängt sich das Terminal auf und beginnt zu arbeiten.

Das Bremsen beginnt erst, wenn Sie die Scheibe öffnen. Sie schließen den Becher und alles ist in Ordnung. Aber man kann nicht ohne sie arbeiten.
 

MT5 (Build 2496) ist SEHR schlecht mit benutzerdefinierten Charts, die mit einer benutzerdefinierten Formel berechnet werden.
Dauerhafte Belastung der CPU - Kernlast 100%.
Lädt permanent die Festplatte - schreibt dort einfach ab 3 GB und mehr Daten.
Hogs Terminal, wenn ein beliebiger Indikator mit einem Puffer im Hauptfenster gezeichnet werden soll (z. B. Indikatoren/Trend/Adaptiver gleitender Durchschnitt).


Schritte zum Spielen:
MetaQuotes-Demo, Hedge-Konto.
Legen Sie die maximale Anzahl von Balken pro Diagramm fest: 1000

Benutzerdefiniertes Symbol erstellen: Strg+U ==> Benutzerdefiniertes Symbol erstellen:
- Symbol: NZDUSD_AUDUSD
- Formel: NZDUSD-AUDUSD
- Negative Preise zulassen: True

Ergebnis: Das System beginnt, bis zu 3 GB auf der Festplatte zu verbrauchen.
Wenn ich ein Diagramm mit einem benutzerdefinierten Symbol öffne, steigt die Belastung des Kernels auf 100 %.
Wenn ich einen Indikator hinzufüge (z. B. Indikatoren/Trend/Adaptiver gleitender Durchschnitt) und die TF umschalte, beginnt das Datenfenster zu ruckeln, und nach ein paar Sekunden reagiert das Terminal überhaupt nicht mehr.


 
UPD. Auch Zehntausende von eintönigen Einträgen werden in das Protokoll geschrieben:
QG      0       18:18:12.209    Synthetic Symbol        NZDUSD_AUDUSD: there is data from 2020.06.19 to 2020.06.19 (4294967295 M1 bars from 1970.01.01 00:00 to 2020.06.19 23:54)
ML      0       18:18:12.209    Synthetic Symbol        NZDUSD_AUDUSD: M1 bars processing finished
LF      0       18:18:12.212    Synthetic Symbol        NZDUSD_AUDUSD: M1 bar 2020.06.19 23:54 updated
GO      0       18:18:12.212    Synthetic Symbol        NZDUSD_AUDUSD: there is data from 2020.06.19 to 2020.06.19 (4294967295 M1 bars from 1970.01.01 00:00 to 2020.06.19 23:54)
CD      0       18:18:12.212    Synthetic Symbol        NZDUSD_AUDUSD: M1 bars processing finished
QN      0       18:18:12.215    Synthetic Symbol        NZDUSD_AUDUSD: M1 bar 2020.06.19 23:54 updated
FG      0       18:18:12.215    Synthetic Symbol        NZDUSD_AUDUSD: there is data from 2020.06.19 to 2020.06.19 (4294967295 M1 bars from 1970.01.01 00:00 to 2020.06.19 23:54)
JL      0       18:18:12.215    Synthetic Symbol        NZDUSD_AUDUSD: M1 bars processing finished
FF      0       18:18:12.218    Synthetic Symbol        NZDUSD_AUDUSD: M1 bar 2020.06.19 23:54 updated
QO      0       18:18:12.218    Synthetic Symbol        NZDUSD_AUDUSD: there is data from 2020.06.19 to 2020.06.19 (4294967295 M1 bars from 1970.01.01 00:00 to 2020.06.19 23:54)
MD      0       18:18:12.218    Synthetic Symbol        NZDUSD_AUDUSD: M1 bars processing finished
LN      0       18:18:12.221    Synthetic Symbol        NZDUSD_AUDUSD: M1 bar 2020.06.19 23:54 updated
GG      0       18:18:12.221    Synthetic Symbol        NZDUSD_AUDUSD: there is data from 2020.06.19 to 2020.06.19 (4294967295 M1 bars from 1970.01.01 00:00 to 2020.06.19 23:54)
CL      0       18:18:12.221    Synthetic Symbol        NZDUSD_AUDUSD: M1 bars processing finished
NF      0       18:18:12.223    Synthetic Symbol        NZDUSD_AUDUSD: M1 bar 2020.06.19 23:54 updated
IO      0       18:18:12.223    Synthetic Symbol        NZDUSD_AUDUSD: there is data from 2020.06.19 to 2020.06.19 (4294967295 M1 bars from 1970.01.01 00:00 to 2020.06.19 23:54)
ED      0       18:18:12.223    Synthetic Symbol        NZDUSD_AUDUSD: M1 bars processing finished
RN      0       18:18:12.227    Synthetic Symbol        NZDUSD_AUDUSD: M1 bar 2020.06.19 23:54 updated

Die Gesamtgröße des Protokolls beläuft sich auf fast 1 GB.


UPD... Wenn nach allen Berechnungen das Terminal geschlossen und wieder geöffnet wird, werden alle 3-8 GB berechneter Daten erfolgreich gelöscht und die Berechnung beginnt erneut, wobei eine bescheidenere Menge an Speicherplatz verbraucht wird - etwa 500 MB.
Wenn ich nach dem Neustart des Terminals ein Diagramm mit einem benutzerdefinierten Symbol öffne, wird es aus irgendeinem Grund leer, nur 3 Balken auf M1 (das Verhalten ist so etwas wie ein ausgeschaltetes Flag "Allow negative prices").

 

Wohin kann ich meine Fehlerberichte schicken, damit sie von den Entwicklern bearbeitet werden?

Seit einigen Versionen ist die Kompilierung von Template-Klassen, die statische Funktionen aufrufen, nicht mehr möglich. Beispiel:

Die Klasse Bar wurde sowohl mit 64-Bit als auch mit 32-Bit MQL5 kompiliert. Jetzt wird ein Fehler erzeugt. bauen 2485 05 Jun 2020

class Foo {
public:
    static void Start() {
        Print("Hallo!");
    }
};

template<typename T>
class Bar {
public:
    Bar() {
        T::Start();
    }
};

class Foz {
public:
    Foz() {
    }

    void Start() {
        Print("Hallo!");
    }
};

template<typename T>
class Baz {
public:
    Baz() {
        T t;
        t.Start();                                                                                                                                                                                          
    }
};

void OnStart() {
    Bar<Foo> var;
    Baz<Foz> vaz;
}

template_static_bug.mq5 : information: compiling 'template_static_bug.mq5'
template_static_bug.mq5(12,12) : error 256: 'Start' - undeclared identifier
Result: 1 errors, 0 warning
 
YanGillan:

Wohin kann ich meine Fehlerberichte schicken, damit sie von den Entwicklern bearbeitet werden?
Seit einigen Versionen ist die Kompilierung von Template-Klassen, die statische Funktionen aufrufen, nicht mehr möglich. Beispiel:
Die Klasse Bar wurde sowohl mit 64-Bit als auch mit 32-Bit MQL5 kompiliert. Jetzt wird ein Fehler erzeugt. Build 2485 05 Jun 2020.

Sie werden ungefähr der 5. Benutzer sein, der sich auf die eine oder andere Weise über diesen Fehler beschwert...

 
Sergey Dzyublik:

Sie werden ungefähr der 5. Benutzer sein, der sich über diesen Fehler in der einen oder anderen Form beschwert...

Ja, aber was soll man tun? Ich kenne die Umgehung über die Basisklasse, aber das ist eine Krücke. Und es ist keine gute Idee, den gesamten Code zu patchen.

Wo kann ich die früheren Builds herunterladen? Ich habe sie weder bei meinem Broker noch auf der mt5-Website gefunden.

 
YanGillan:

Ja, aber was soll man tun? Ich kenne die Umgehung durch die Basisklasse, aber das ist eine Krücke. Und es ist keine gute Idee, den gesamten Code zu patchen.

Wo kann ich die früheren Builds herunterladen? Ich habe sie auf der Seite meines Brokers nicht gefunden und auch auf der mt5 Seite ist sie nicht verfügbar.

 
YanGillan:

Ich kenne die Abhilfe durch die Basisklasse, aber sie ist eine Krücke. Und es ist keine gute Idee, den gesamten Code zu patchen.

Beziehen Sie sich auf diese Methode oder auf eine andere?

template<typename T>
class GetClassType{
public:
   class type : public T{}; 
};


class Foo {
public:
    static void Start() {
        Print("Hallo!");
    }
};

template<typename T>
class Bar {
public:
    Bar() {
        GetClassType<T>::type::Start();
    }
};

void OnStart() {
    Bar<Foo> var;
}