Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4973
Beiträge: 43291
Benutzer: 7.220
Aktive Benutzer: 82
Links: 84
Wir begrüßen unseren neuesten Benutzer: JosephTK
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einer Stunde
- JosephTK
vor 2 Tagen
- Hopfen&Mal...
vor 2 Tagen
- frankmicha...
vor einer Woche
- DFeck
vor einer Woche
- bb1107

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 1138
Gesamt: 1138
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 09.10.20
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard 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.
  #2 (permalink)  
Alt 09.10.20
Benutzerbild von Indikator-Trading
Premium Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 345
Indikator-Trading befindet sich auf einem aufstrebenden Ast
Standard

Vielleicht helfen dir diese beiden Funktionen:
SymbolIsSynchronized()
SymbolSelect()


Ich habe sie mal in einem von mir geschriebenen CurrencyStrange Indicator verwendet.

Beispiel für die OnInit()-Funktion mit EURUSD:
Code:
 if(!SymbolIsSynchronized("EURUSD"))
         SymbolSelect("EURUSD",true);
  #3 (permalink)  
Alt 09.10.20
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Indikator-Trading Beitrag anzeigen
Vielleicht helfen dir diese beiden Funktionen:
SymbolIsSynchronized()
SymbolSelect()


Ich habe sie mal in einem von mir geschriebenen CurrencyStrange Indicator verwendet.

Beispiel für die OnInit()-Funktion mit EURUSD:
Code:
 if(!SymbolIsSynchronized("EURUSD"))
         SymbolSelect("EURUSD",true);
Danke, aber das hilft auch nicht.
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.
  #4 (permalink)  
Alt 09.10.20
Benutzerbild von Indikator-Trading
Premium Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 345
Indikator-Trading befindet sich auf einem aufstrebenden Ast
Standard

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.
  #5 (permalink)  
Alt 09.10.20
Premium Mitglied
 
Registriert seit: Jun 2013
Beiträge: 364
Ca$hDigger befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von traderdoc Beitrag anzeigen
datetime draw_time = iTime(NULL, PERIOD_H1, 1);
traderdoc
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.
  #6 (permalink)  
Alt 09.10.20
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Indikator-Trading Beitrag anzeigen
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.
Auch SERIES_SYNCHRONIZED ist nach dem Hilfeindex kein existierender Parameter.
Funktioniert aber trotzdem nicht.
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #7 (permalink)  
Alt 09.10.20
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Ca$hDigger Beitrag anzeigen
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.
Leider keine Chance!
Das kann es doch nicht geben!
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #8 (permalink)  
Alt 09.10.20
Benutzerbild von Indikator-Trading
Premium Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 345
Indikator-Trading befindet sich auf einem aufstrebenden Ast
Standard

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
  #9 (permalink)  
Alt 10.10.20
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.733
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

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.
  #10 (permalink)  
Alt 10.10.20
Premium Mitglied
 
Registriert seit: Jun 2013
Beiträge: 364
Ca$hDigger befindet sich auf einem aufstrebenden Ast
Standard

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
Thema geschlossen

Lesezeichen

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +1. Es ist jetzt 23:02 Uhr.





Suchmaschine - Reisen - Wavesnode - Facebook Forum - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------