|
Startseite | Registrieren | Hilfe | Benutzerliste | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Datenaktualisierung
Jetzt habe ich tatsächlich einen Bug im MT4 gefunden:
Wenn man z.B. schreibt: datetime draw_time = iTime(NULL, PERIOD_H1, 1); Und man öffnet eine neues Chartfenster (default-Datei im M5 abgespeichert) , so dass das Chart im M5 öffnet, mit einem WP welches "lange" nicht benutzt wurde (sprich wo die Kurse intern "lange" nicht aktualisiert wurden), dann steht in draw_time eine Zeit, die definitv nicht der vorletzten Kerze des H1 entspricht. Wer kennt eine Methode, nach dem Öffnen des Charts und Laden des EAs die Historie dieses WP aus dem EA-Programm heraus automatisch zu aktualisieren? traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Zitat:
Die Funktion SymbolIsSynchronized() steht nicht mal im Hilfeindex. Ein Compilerfehler wird aber auch nicht angezeigt. Das Problem ist sofort behoben, wenn man nach Öffnen des Charts im M5 auf irgendein anderes TF wechselt und wieder zurück zu M5 geht oder wenn man den EA frisch raufgezogen hat, mit F7 die Eigenschaften aufruft, nichts ändert, sondern nur OK drückt. Das ist schon merkwürdig! traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
||||
Per Google-Suche:
while(!SeriesInfoInteger(_Symbol,0,SERIES_SYNCHRON IZED))Comment("Synchronizing"); Comment("Ready"); Würde ich nur ohne While-Schleifen machen, da du sonst ggf. für ewig drin gefangen bist. |
|
|||
Versuche doch mal den Value einfach auf anderem Wege abrufen zB über MqlRates und CopyRates().
ps: bei MT5 kann ich per MqlTick und CopyTicks() das (nach)laden der History erzwingen. |
|
|||
Zitat:
Funktioniert aber trotzdem nicht.
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Zitat:
Das kann es doch nicht geben!
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
||||
Eigentlich brauchst du doch nur RefreshRates() zu nutzen oder?
Wenn RefreshRates() == false ist, dann müssen die Daten in der History aktuell sein. Also müsstest du solange warten, bis dieser Fall eingetreten ist. Ich hab die Funktion nie genutzt, aber vielleicht läuft anderenfalls (also falls der EA nicht einfach bei RefreshRates anhält bis alle Daten geladen worden sind, müsstest du mal selbst austesten) läuft dein EA schon weiter, da RefreshRates() == true ist, aber die History noch nicht komplett geladen worden ist. Hier ein Link zu einem Artikel. Ist aber für den MT5, kannst aber vielleicht dennoch was für dich mitnehmen: https://www.mql5.com/en/docs/series/timeseries_access |
|
|||
Nein, RefreshRates() löst das Problem eigenartigerweise auch nicht. Das war auch mein erster Gedanke, zumal man die Funktion immer vor der Orderöffnung einsetzt, um aktuelle Kurswerte zu verarbeiten.
Der Link führt leider wie so häufig zu MQL5-Seiten und MQL5 "tickt" aber nun mal anders. Es sollte auch gestern für den MT5 ein Update kommen, in welchem die Kurshistorie vielfach berücksichtigt wurde: https://www.mql5.com/de/forum/353030 traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Scheint so, als würden die Funktionen beim Abruf nicht blockieren bis die Kurse aktualisiert sind und so dann einen alten Wert zurück liefern.
Angenommen die Funktionen iTime() CopyRates() etc blockieren bei MT4 nicht selbst, sorgen aber hoffentlich dafür, dass die History angefangen wird zu laden, dann wäre eine mögliche Lösung manuell etwas zu warten: Schleife: 1. Funktion aufrufen (um damit das Laden der Kurse zu triggern) Wert ignorieren bis wirklich aktuell. 2. Sleep(5000); Wiederhole solange bis die Kurse wirklich aktuell sind. -> break |
Lesezeichen |
Themen-Optionen | Thema durchsuchen |
Ansicht | |
|
|