Василий: Ja, ich frage nach MQL 5? Ja, es soll auf die Daten des aktuellen Symbols zugegriffen werden. Die Daten werden für den EA-Code benötigt. So muss ich zum Beispiel den Schlusskurs des dem aktuellen Balken vorausgehenden Balkens kennen.
Василий: Ja, ich frage nach MQL5? Ja, es soll auf die Daten des aktuellen Symbols zugegriffen werden. Die Daten, die wir im Expert Advisor-Code benötigen. So muss ich zum Beispiel den Schlusskurs des dem aktuellen Balken vorausgehenden Balkens kennen
Sie sollten die Dokumentation ein wenig lesen.
intCopyClose(
string symbol_name, // имя символа ENUM_TIMEFRAMES timeframe, // период int start_pos, // откуда начнем int count, // сколько копируем double close_array[] // массив для копирования цен закрытия
);
Hier ein Beispiel für das Abrufen des Schlusskurses und der Indikatorpuffer
Hier ein Beispiel für das Abrufen des Schlusskurses und der Indikatorpuffer
Schlechtes Beispiel. Die Variable, die den Indikator-Handle in MQL5 speichert, muss im "Header" deklariert werden - im Bereich der globalen Variablen, und der Handle sollte in OnInit() erhalten werden. Und nur dann können Sie sich auf das Handle des Indikators beziehen, um Daten von überall im Programm zu erhalten.
Und das ist das, was ich in den Protokollen erhalte.
0 22:58:16.487 Core 1 2016.04.01 00:00 Anzahl der Balken in der Terminal-Historie für die Symbol-Periode GBPUSD im Moment = 7729 JR 0 22:58:16.487 Core 1 2016.04.01 03:00:00 Versuchter Abschluss 0 mit Lot 0.01 EL 0 22:58:16.487 Kern 1 2016.04.01 03:00:00 Markt kaufen 0,01 GBPUSD sl: 1,43033 tp: 1,44034 (1,43646 / 1,43654 / 1,43646) GO 0 22:58:16.487 Core 1 2016.04.01 03:00:00 deal #2 buy 0.01 GBPUSD at 1.43654 done (based on order #2) GE 0 22:58:16.487 Core 1 2016.04.01 03:00:00 Geschäft durchgeführt [#2 buy 0.01 GBPUSD at 1.43654] NK 0 22:58:16.487 Kern 1 2016.04.01 03:00:00 Auftrag ausgeführt Kauf 0,01 zu 1,43654 [#2 Kauf 0,01 GBPUSD zu 1,43654] HI 0 22:58:16.487 Kern 1 2016.04.01 03:00:00 ticket=1 HM 0 22:58:16.487 Kern 1 2016.04.01 03:00:00 Preis=0.0 HH 0 22:58:16.487 Kern 1 2016.04.01 03:00:00 time=2016.04.01 00:00 CR 0 22:58:16.487 Kern 1 2016.04.01 03:00:00 ticket=2 ID 0 22:58:16.487 Kern 1 2016.04.01 03:00:00 Preis=1.43654 OP 0 22:58:16.487 Kern 1 2016.04.01 03:00:00 time=2016.04.01 03:00
Woher kommt der erste Handel zum Nulltarif? Ich tue es nicht :-).
Ich tue es nicht :-) Erklären Sie bitte.
Z.P. Ich glaube, ich habe es verstanden. Das erste Geschäft hat einen Gewinn von 10K. Ich weiß nicht, was ich damit anfangen soll, aber es ist trotzdem seltsam. Und warum?
Und hier noch eine weitere Frage. Das Geschäft (Kauf bei 1,43654) ist noch nicht eröffnet worden. Wie ist sie in der Geschichte entstanden?
Ich muss Daten NUR auf geschlossene Geschäfte in das Array wie in MQL4 erhalten. Wie macht man das?
Karputov Vladimir: Schlechtes Beispiel. Die Variable, die den Indikator-Handle in MQL5 speichert, muss im "Header" deklariert werden - im Bereich der globalen Variablen des Programms, holen Sie sich den Handle in OnInit(). Und nur dann können Sie sich auf das Handle des Indikators beziehen, um Daten von überall im Programm zu erhalten.
Ich stimme Ihnen nicht ganz zu, wenn es darum geht, ein Handle zu erhalten, da die Funktion OnInit() einmal ausgeführt wird und es keine 100%ige Garantie gibt, dass der Indikator beim ersten Mal erstellt wird. Sie könnten Recht haben, wenn Sie eine Variable deklarieren, aber ich möchte wissen, ob die folgende Dokumentation etwas Schlimmeres sagt als die Variante mit einer statischen Variable
Lokale Variablen, die mit dem Schlüsselwort static deklariert sind, speichern ihre Werte so lange, wie die Funktion existiert. Bei jedem nachfolgenden Aufruf einer Funktion enthalten diese lokalen Variablen die Werte, die sie beim vorherigen Aufruf hatten.
Ich stimme Ihnen nicht ganz zu, wenn es darum geht, ein Handle zu erhalten, da die Funktion OnInit() einmal ausgeführt wird und es keine 100%ige Garantie gibt, dass der Indikator beim ersten Mal erstellt wird. Sie mögen mit der Deklaration einer Variablen Recht haben, aber ich möchte wissen, wie schlecht die Option einer statischen Variablen in der Dokumentation ist
...
Wir werden dies in OnInit() bei der Erstellung eines Indikator-Handles überprüfen. Wenn der Indikator-Handle nicht erstellt wurde, wird beiOnit()INIT_FAILED zurückgegeben.Das heißt, der Indikator-Handle wird nur einmal und nur in OnInit() erstellt. Dies ist nicht "4" - Durcheinander und Umherirren und Erklärung von Griffen in allen Ecken des Programms.
Karputov Vladimir: Zu diesem Zweck prüft OnInit(), ob der Indikator-Handle angelegt ist. Wenn der Indikator-Handle nicht erstellt wurde, sollte OnOnit()INIT_FAILED zurückgeben.Das heißt, der Indikator-Handle wird nur einmal und nur in OnInit() erstellt. Dies ist nicht "4" - es ist nicht ein Durcheinander und wandern und deklarieren Griffe in allen Ecken des Programms.
Ich würde meine Aussage nicht so kategorisch treffen. Es ist kein Chaos in den Schränken, es ist ein Chaos in den Köpfen (c)
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Erlauben Sie die Verwendung von Cookies, um sich auf der Website MQL5.com anzumelden.
Bitte aktivieren Sie die notwendige Einstellung in Ihrem Browser, da Sie sich sonst nicht einloggen können.
Sie sind angemeldet. Die Zwei-Faktor-Authentifizierung wurde deaktiviert. Richten Sie sie erneut ein und scannen Sie einen neuen QR-Code oder fahren Sie mit deaktivierter Zwei-Faktor-Authentifizierung fort.
Ja, ich frage nach MQL 5? Ja, es soll auf die Daten des aktuellen Symbols zugegriffen werden. Die Daten werden für den EA-Code benötigt. So muss ich zum Beispiel den Schlusskurs des dem aktuellen Balken vorausgehenden Balkens kennen.
Sehen Sie sich das Beispiel für CopyTime an
Ja, ich frage nach MQL5? Ja, es soll auf die Daten des aktuellen Symbols zugegriffen werden. Die Daten, die wir im Expert Advisor-Code benötigen. So muss ich zum Beispiel den Schlusskurs des dem aktuellen Balken vorausgehenden Balkens kennen
Sie sollten die Dokumentation ein wenig lesen.
Hier ein Beispiel für das Abrufen des Schlusskurses und der Indikatorpuffer
...
Hier ein Beispiel für das Abrufen des Schlusskurses und der Indikatorpuffer
Hallo zusammen!
Ich erhalte Daten über die Handelshistorie im Tester mithilfe des OnTrade-Ereignisses.
Und das ist das, was ich in den Protokollen erhalte.
0 22:58:16.487 Core 1 2016.04.01 00:00 Anzahl der Balken in der Terminal-Historie für die Symbol-Periode GBPUSD im Moment = 7729
JR 0 22:58:16.487 Core 1 2016.04.01 03:00:00 Versuchter Abschluss 0 mit Lot 0.01
EL 0 22:58:16.487 Kern 1 2016.04.01 03:00:00 Markt kaufen 0,01 GBPUSD sl: 1,43033 tp: 1,44034 (1,43646 / 1,43654 / 1,43646)
GO 0 22:58:16.487 Core 1 2016.04.01 03:00:00 deal #2 buy 0.01 GBPUSD at 1.43654 done (based on order #2)
GE 0 22:58:16.487 Core 1 2016.04.01 03:00:00 Geschäft durchgeführt [#2 buy 0.01 GBPUSD at 1.43654]
NK 0 22:58:16.487 Kern 1 2016.04.01 03:00:00 Auftrag ausgeführt Kauf 0,01 zu 1,43654 [#2 Kauf 0,01 GBPUSD zu 1,43654]
HI 0 22:58:16.487 Kern 1 2016.04.01 03:00:00 ticket=1
HM 0 22:58:16.487 Kern 1 2016.04.01 03:00:00 Preis=0.0
HH 0 22:58:16.487 Kern 1 2016.04.01 03:00:00 time=2016.04.01 00:00
CR 0 22:58:16.487 Kern 1 2016.04.01 03:00:00 ticket=2
ID 0 22:58:16.487 Kern 1 2016.04.01 03:00:00 Preis=1.43654
OP 0 22:58:16.487 Kern 1 2016.04.01 03:00:00 time=2016.04.01 03:00
Woher kommt der erste Handel zum Nulltarif? Ich tue es nicht :-).
Ich tue es nicht :-) Erklären Sie bitte.
Z.P. Ich glaube, ich habe es verstanden. Das erste Geschäft hat einen Gewinn von 10K. Ich weiß nicht, was ich damit anfangen soll, aber es ist trotzdem seltsam. Und warum?
Und hier noch eine weitere Frage. Das Geschäft (Kauf bei 1,43654) ist noch nicht eröffnet worden. Wie ist sie in der Geschichte entstanden?
Ich muss Daten NUR auf geschlossene Geschäfte in das Array wie in MQL4 erhalten. Wie macht man das?
P.S. Filter nach DEAL_ENTRY_OUT ?
Haben Sie versucht, das Terminal neu zu installieren?
Schlechtes Beispiel. Die Variable, die den Indikator-Handle in MQL5 speichert, muss im "Header" deklariert werden - im Bereich der globalen Variablen des Programms, holen Sie sich den Handle in OnInit(). Und nur dann können Sie sich auf das Handle des Indikators beziehen, um Daten von überall im Programm zu erhalten.
Ich stimme Ihnen nicht ganz zu, wenn es darum geht, ein Handle zu erhalten, da die Funktion OnInit() einmal ausgeführt wird und es keine 100%ige Garantie gibt, dass der Indikator beim ersten Mal erstellt wird. Sie könnten Recht haben, wenn Sie eine Variable deklarieren, aber ich möchte wissen, ob die folgende Dokumentation etwas Schlimmeres sagt als die Variante mit einer statischen Variable
Lokale Variablen, die mit dem Schlüsselwort static deklariert sind, speichern ihre Werte so lange, wie die Funktion existiert. Bei jedem nachfolgenden Aufruf einer Funktion enthalten diese lokalen Variablen die Werte, die sie beim vorherigen Aufruf hatten.
Filtern nach DEAL_ENTRY_OUT
Ich stimme Ihnen nicht ganz zu, wenn es darum geht, ein Handle zu erhalten, da die Funktion OnInit() einmal ausgeführt wird und es keine 100%ige Garantie gibt, dass der Indikator beim ersten Mal erstellt wird. Sie mögen mit der Deklaration einer Variablen Recht haben, aber ich möchte wissen, wie schlecht die Option einer statischen Variablen in der Dokumentation ist
...
Zu diesem Zweck prüft OnInit(), ob der Indikator-Handle angelegt ist. Wenn der Indikator-Handle nicht erstellt wurde, sollte OnOnit()INIT_FAILED zurückgeben.Das heißt, der Indikator-Handle wird nur einmal und nur in OnInit() erstellt. Dies ist nicht "4" - es ist nicht ein Durcheinander und wandern und deklarieren Griffe in allen Ecken des Programms.