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: 4554
Beiträge: 41310
Benutzer: 6.946
Aktive Benutzer: 217
Links: 82
Wir begrüßen unseren neuesten Benutzer: cavaliereg
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 17 Minuten
- cavaliereg
vor einem Tag
- majid_z
vor einem Tag
- Jeatcomput...
vor 2 Tagen
- Herrfroehl...
vor 2 Tagen
- dberkovi

Onlineuser
'Wer ist online' anzeigen Benutzer: 1
Gäste: 98
Gesamt: 99
Team: 0
Team:  
Benutzer:  cavaliereg
Freunde anzeigen

Empfehlungen

Antwort
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt vor einer Woche
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.431
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.
Mit Zitat antworten
  #2 (permalink)  
Alt vor einer Woche
Benutzerbild von Indikator-Trading
Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 127
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);
Mit Zitat antworten
  #3 (permalink)  
Alt vor einer Woche
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.431
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.
Mit Zitat antworten
  #4 (permalink)  
Alt vor einer Woche
Benutzerbild von Indikator-Trading
Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 127
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.
Mit Zitat antworten
  #5 (permalink)  
Alt vor einer Woche
Premium Mitglied
 
Registriert seit: Jun 2013
Beiträge: 308
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.
Mit Zitat antworten
  #6 (permalink)  
Alt vor einer Woche
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.431
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.
Mit Zitat antworten
  #7 (permalink)  
Alt vor einer Woche
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.431
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.
Mit Zitat antworten
  #8 (permalink)  
Alt vor einer Woche
Benutzerbild von Indikator-Trading
Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 127
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
Mit Zitat antworten
  #9 (permalink)  
Alt vor einer Woche
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.431
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.
Mit Zitat antworten
  #10 (permalink)  
Alt vor einer Woche
Premium Mitglied
 
Registriert seit: Jun 2013
Beiträge: 308
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
Mit Zitat antworten
Antwort

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 +2. Es ist jetzt 13:03 Uhr.





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