Fehler, Irrtümer, Fragen - Seite 1168

 
TheXpert:

Ta maaa...

Sie müssen einen Doppelgänger aus der Zeit lange vor der Überweisung einfügen. Für globale Variable. Es ist nicht Null, sondern ein zufälliges Double, das 1,34*e-307 oder 4,29*e+120 sein kann, weil es Log-Bits hat.

Nach dem Übertragen von unzip von dub auf long.

Das war's.

Ok, du hast es verstanden ;)

 
artmedia70:

OK, du hast es verstanden ;)

Ich verstehe einfach nicht, was daran unklar ist.

Double schneidet die Daten ab, so dass Sie long nicht direkt in double übertragen können. Aber beide sind jeweils 8 Byte groß, so dass man verlustfrei übertragen kann, wenn man double als Container verwendet, was ich im Beispiel getan habe.

 
TheXpert:

Ich verstehe einfach nicht, was unklar ist.

Double schneidet die Daten ab, so dass Sie long nicht direkt in double übertragen können. Aber beide sind jeweils 8 Byte groß, so dass man verlustfrei übertragen kann, wenn man double als Container verwendet, was ich im Beispiel getan habe.

Andrey, ich habe das Format der Speicherung und Anzeige in GV des Terminals nicht verstanden. Es schien eine Diagramm-ID zu zeigen, aber sie zeigt 0.
 
artmedia70:
Andrey, ich habe das Format der Speicherung und Anzeige in der GV des Terminals nicht verstanden. Es schien die Diagramm-ID zu zeigen, aber sie zeigt 0.

GV zeigt etwas an, das wie Müll aussieht, dieser "Müll" wird nach der Rückkonvertierung zu einer Karten-ID.

Der Duble hat sein eigenes Datenformat, wenn wir den Long tucking, setzen wir auf das Duble-Format und verwenden es nur als 8 Bytes Speicher.

 
TheXpert:

GV zeigt etwas an, das wie Müll aussieht; dieser "Müll" wird nach der Rückkonvertierung zu einer Graph-ID.

Der Duble hat sein eigenes Datenformat, wenn wir den Duble einstecken, setzen wir das Duble-Format ein und benutzen es einfach als 8 Bytes Speicher.

Ja, das habe ich bereits herausgefunden, danke.
 
Mir ist aufgefallen, dass die Aktualisierung einer Bibliothek oder von Ressourcen, die in ein anderes Skript (Indikator) eingebunden sind, dazu führt, dass dieses (der Indikator) neu kompiliert und das Terminal neu geladen wird. Keine Nachfrage! Ist es ein Fehler oder eine Funktion? P.S.: Es geht um MT4.
 
artmedia70:

Es ist eher eine Frage:

Suche nach einem bestehenden GV des Terminals nach Namen. Dadurch wird die ID des Charts, auf dem der EA läuft, an den Indikator übergeben. Der Indikator hängt an einem anderen Symbol. D.h., ich möchte dem Indikator die ID des Charts übergeben, auf dem der Expert Advisor läuft. Ich suche sie auf diese Weise:

Das sagt mir das Terminal:


Ich habe versucht, die Variable zu lesen. Ich habe sie direkt in die Zeichenkette und in das Journal eingefügt, sowie in Variablen verschiedener Typen - alles das gleiche. Es gibt zwei Unterschiede.

Was ist daran falsch?

Lesen Sie hier https://www.mql5.com/ru/docs/basis/types/casting Absatz "Datenkonvertierung von einfachen Strukturen".

Das ist genau Ihr Fall. Doubletten haben eine viel geringere Präzision bei der _Anzahl_ der Zeichen als Langschriften. Das ist der Grund, warum Sie dieses Ergebnis mit einer einfachen Zuweisung erhalten.

Aber Sie können 64 Bits einer globalen Variablen vollständig nutzen, um _jede_ Information mit einer Länge von 64 Bits zu speichern (z. B. kurze Strings mit einer Länge von 8 Byte, ganz zu schweigen von Longs).

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Ich bin auf das folgende Problem gestoßen. Nach dem Neustart des Terminals liefert der Indikator "seltsame" Werte aus einem anderen Zeitrahmen, wenn er vom EA aufgerufen wird.
Der Expert Advisor befindet sich auf M2, die Indikatordaten werden von M3 übernommen.
1) Um 14:40 Uhr erfolgt ein Neustart des Terminals:
PE 0 14:39:50.524 Terminal
MD 0 14:40:06.009 Terminal MetaTrader 5 Alfa-Forex x64 build 930 gestartet
II 0 14:40:06.586 Terminal OpenCL nicht gefunden, installieren Sie den neuesten OpenCL-Treiber für bessere Leistung
JO 0 14:40:07.257 Experten Experte FX_Money_Flow_v1_06 (EURUSD,M2) erfolgreich geladen
Expert Advisor schreibt die Indikatorwerte auf dem letzten und vorletzten Balken aus:
OF 0 14:40:11.540 FX_Money_Flow_v1_06 (EURUSD,M2) Der Wert des Indikators TF1: -1.#QNAN -1.#QNAN
Bereits beim nächsten Balken sind die Daten korrekt:
NJ 0 14:41:46.622 FX_Money_Flow_v1_07 (EURUSD,M2) Wert des Indikators TF1: -0.02798411604597126 -0.04893498839583753
2) Zweiter Neustart um 19:55 Uhr:
CO 0 19:55:06.918 Terminal
RO 0 19:55:28.399 Terminal MetaTrader 5 Alfa-Forex x64 build 930 gestartet
OP 0 19:55:28.992 Terminal OpenCL nicht gefunden, installieren Sie den neuesten OpenCL-Treiber für bessere Leistung
RD 0 19:55:29.507 experts expert FX_Money_Flow_v1_07 (EURUSD,M2) erfolgreich geladen
Wieder das gleiche Lied:
PQ 0 19:55:38.168 FX_Money_Flow_v1_07 (EURUSD,M2) Indikatorwert TF1: -1.#QNAN -1.#QNAN

Aber es funktioniert nicht immer richtig:

KF 0 23:59:51.987 FX_Money_Flow_v1_07 (EURUSD,M2) Faktorwert TF1 Indikator: -1.#QNAN -1.#QNAN


Das M3-Chart ist zu diesem Zeitpunkt geöffnet und es gibt einen Indikator, der alles korrekt anzeigt:
(der Zeitunterschied zwischen Terminal und Logs beträgt 5 Stunden, der Screenshot bezieht sich auf den zweiten Neustart)
Dateien:
 
OBJ_LABEL scheint UNICODE in MT4 nicht zu unterstützen? Ich habe den Wert sowohl programmatisch als auch über das Dialogfeld "Etiketteneigenschaften" geändert: Das Symbol wird eingefügt und im Dialogfeld selbst korrekt angezeigt, aber im Diagramm erscheint es als Fragezeichen (?). Die Schriftart ist Unicode, und im Dialog der Etiketteneigenschaften ist sie in der Dropdown-Liste mit den Schriftarten korrekt ausgewählt.
 
stringo:

Lesen Sie hier https://www.mql5.com/ru/docs/basis/types/casting Absatz "Datenkonvertierung von einfachen Strukturtypen".

Das ist genau Ihr Fall. Doubletten haben eine viel geringere Präzision bei der _Anzahl_ der Zeichen als Langschriften. Das ist der Grund, warum Sie dieses Ergebnis mit einer einfachen Zuweisung erhalten.

Aber Sie können die 64 Bits der globalen Variablen vollständig nutzen, um _jede_ Information mit einer Länge von 64 Bits zu speichern (z. B. kurze Strings mit einer Länge von 8 Byte, ganz zu schweigen von Longs).

Ja, ich habe es gelesen, danke.
Grund der Beschwerde: