Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 986
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
In OnInit() rufen Sie die Zeitreihe des Symbols auf: iTime(Symbol,Timeframe,1);
Ganz zu Beginn von OnTick() den benötigten Balken der benötigten Zeitreihe über die entsprechende iFunc() abfragen, oder if( iTime(Symbol,Timeframe,10)==0) return;
In diesem Fall wird der Expert Advisor keinen neuen Balken erkennen und auf den nächsten Tick warten.
In OnInit() haben wir die Zeitreihendaten angefordert und damit das Paging der Daten aktiviert.
In OnTick() prüfen wir, ob die minimal erforderliche Historie für den EA verfügbar ist, und wenn sie noch nicht verfügbar ist, warten wir auf den nächsten Tick.
Und bis alle Daten, die der Expert Advisor benötigt, eingegangen sind, wartet er auf den nächsten Tick.
Sobald alle erforderlichen Daten gepumpt und erhalten wurden, beginnt der Expert Advisor mit dem neuen Balken und der erforderlichen Historie zu arbeiten.
Um die seriellen Daten auf dem neuesten Stand zu halten, sollten Sie sie mindestens alle zwei Minuten abrufen. Erstellen Sie einen zweiten Timer für etwa anderthalb Minuten (90 Sekunden) und greifen Sie darin einfach auf eine beliebige Zeitreihe des gewünschten Symbols zu, z. B. iTime(Symbol,Timeframe,1); Ohne die empfangenen Daten zu überprüfen - verschieben" Sie einfach die Historie. Dann sind alle Daten des Symbols immer auf dem neuesten Stand.
Natürlich werde ich versuchen, die neue Bar mit allen TFs zu überprüfen, aber ist es nicht synchron, das ist nicht MT4. Das Problem liegt nicht beim Balken, sondern bei der Nichtausführung von Indikatoren, die vom Indikator aufgerufen werden, der wiederum vom Expert Advisor aufgerufen wird.
Ich arbeite mit Protokollen, so dass der Verlauf immer auf dem neuesten Stand sein sollte.
Und all diese Prüfungen werden für den Test durchgeführt und verlangsamen nur die Arbeit auf einem echten Konto, weil dort alles langsamer funktioniert als unter den stationären Bedingungen des Testers, ich wiederhole, dass der Indikator auf einem echten Konto korrekt funktioniert.
Bisher habe ich das Problem gelöst, indem ich vor dem Start des Hauptcodes die Bereitschaft der Indikatoren, die fehlgeschlagen sind, überprüft habe
Aber dieser Ansatz ist nicht universell, da Sie alle Indikatoren auflisten müssen. Gibt es eine andere, universellere Methode, um die Testerumgebung korrekt arbeiten zu lassen?
In OnTick() prüfen wir, ob die minimal erforderliche Historie für den Expert Advisor verfügbar ist, und wenn sie noch nicht verfügbar ist, warten wir auf den nächsten Tick.
Und bis alle vom EA benötigten Daten vorliegen, wird er auf den nächsten Tick warten.
Sobald alle erforderlichen Daten gepumpt und erhalten wurden, beginnt der Expert Advisor mit dem neuen Balken und der erforderlichen Historie zu arbeiten.
Ich verstehe nicht, wie Sie die Verfügbarkeit der Historie überprüfen wollen...
Fügen Sie diese Zeile vor der MQL4-Funktion ein
und es wird in MT5 funktionieren.
Das ist genial. Herzlichen Dank!
Können Sie sagen, MT5 können solche Tasten zu implementieren, vielleicht bereits eine, teilen Sie den Code ...
Sorgen Sie für Schlupf und Neuanmeldungen.
Hallo, wenn die Ask und Bid Preise von der CSymbolInfo Klasse mehr oder weniger klar sind, wie man zum Beispiel SessionInterest oder SessionBuyOrdersVolume oder SessionPriceLimitMin bekommt, gibt es Nullen, ich kann nicht verstehen, warum...
Hallo, wenn die Ask und Bid Preise von CSymbolInfo Klasse ist mehr oder weniger klar, wie man z.B. SessionInterest oder SessionBuyOrdersVolume oder SessionPriceLimitMin zu bekommen, gibt es Nullen, ich kann nicht verstehen, warum...
Wenn ein Handelsserver diese Informationen sendet, werden Sie sie erhalten.
In der Regel werden diese Informationen von Brokern für Aktiensymbole verbreitet (nicht zu verwechseln mit Brokern und Handelszentren).
Wenn ein Handelsserver diese Informationen sendet, werden Sie sie erhalten.
Diese Informationen werden in der Regel von Brokern für Börsensymbole übermittelt (nicht zu verwechseln mit Brokern und Handelszentren).
Broker Otkritie, die RTS-Index-Futures, ich nehme an, muss mindestens SessionPriceLimitMin und SessionPriceLimitMax übertragen (weil sie so weit ich verstehe, die Eröffnungskurse in Marktaufträge verwendet werden). Übersetzt die Eröffnung nicht... Ich verschreibe zum Beispiel:
Print(m_symbol.Ask()," ",m_symbol.SessionBuyOrdersVolume()); - von Ihrem EA
Ich erhalte nur Ask-Preise im Protokoll
Bitte helfen Sie mir beim Schreiben eines Codes, der das Datum des letzten Balkens mit einer beliebigen Verschiebung in einem beliebigen TF korrekt und auf den aktuellen TF genau bestimmt.
Dieser Code funktioniert im Allgemeinen, aber nur, wenn die Startzeit des aktuellen Balkens mit dem aktuellen (auf die Minute gerundeten) Balken übereinstimmt, da mein aktueller Chart M1 ist. Und wenn sie nicht übereinstimmen, kommt es zu verschiedenen Missgeschicken, die von verschiedenen TFs abhängen. Wenn es 12 Uhr war, ist es kein Problem, die Zeit wird 12:59 sein, aber wenn es 13 Uhr war, wird es 13:58 sein, weil der stündliche Balken um 14:05 Uhr und nicht um 14:00 Uhr geöffnet wurde und die FunktioniBarShift den nächstgelegenen Balken zu 14:00 Uhr, d.h. 13:59, liefert.
Hinzugefügt: Ich habe dies gemacht, es scheint zu funktionieren
Otkritie Broker, RTS-Index-Futures, nehme ich an, es sollte mindestens SessionPriceLimitMin und SessionPriceLimitMax (wie ich verstehe, sie sind in der Markt-Aufträge von Eröffnungskursen verwendet) übertragen. Übersetzt die Eröffnung nicht... Ich verschreibe zum Beispiel:
Print(m_symbol.Ask()," ",m_symbol.SessionBuyOrdersVolume()); - von Ihrem EA
Ich erhalte nur Ask-Preise im Protokoll