Es gibt ein Problem mit der Unsynchronisierung der Diagramme links und rechts der Gesamtzeitlinie. Ich würde es begrüßen, wenn die Balken über die gesamte Breite des Di agramms zeitlich synchronisiert wären.
Ich schlage den Entwicklern vor, noch einmal über die Möglichkeit nachzudenken (und sie vielleicht zur Diskussion zu stellen), das Diagramm mit und ohne "Löcher"-Balken darzustellen. In diesem Fall würde es sich nur um eine Visualisierung handeln, d.h. die "Löcher"-Balken wären in MQL5 nicht verfügbar.
Dmitry, es wäre wahrscheinlich einfacher, dies über CHARTEVENT_CLICK zu tun, anstatt in einer Schleife...
Hier ist ein Beispiel für die Synchronisierung von Charts einer Währung
//------------------------------------------------------------------ OnChartEvent void OnChartEvent(const int id, const long& lparam, const double& dparam, const string& sparam) { if (id==CHARTEVENT_CLICK) { long cid=ChartFirst(); long fbar=ChartGetInteger(ChartID(), CHART_FIRST_VISIBLE_BAR); datetime tm[], tm1[]; int rez=CopyTime(Symbol(), Period(), 0, fbar, tm); if (rez<fbar) return; while (cid!=-1) { ChartSetInteger(cid, CHART_AUTOSCROLL, false); ChartSetInteger(cid, CHART_SHIFT, false); if (cid!=ChartID() && ChartSymbol(cid)==Symbol()) { rez=CopyTime(ChartSymbol(cid), ChartPeriod(cid), TimeCurrent(), tm[0], tm1); if (rez<0) break; ChartNavigate(cid, CHART_END, rez-ChartGetInteger(cid, CHART_WIDTH_IN_BARS)+2); ChartRedraw(cid); } cid=ChartNext(cid); } } }
und das war's!
Dimitri, es wäre wahrscheinlich einfacher, dies über CHARTEVENT_CLICK statt über eine Schleife zu tun...
Hier ist ein Beispiel für die Synchronisierung von Charts einer Währung
und das war's!
Nicht alles ist so einfach. Ihre Funktion synchronisiert die Balken am linken Rand des Charts, was für das visuelle Studium der Geschichte nicht sehr praktisch ist. Sie sollten auch den Chart-Offset deaktivieren, was ebenfalls nicht sehr praktisch ist (obwohl das Geschmackssache ist). Die Entwickler würden die Fähigkeit, zu erhalten und setzen Sie den Einzug vom rechten Rand oder die Navigation durch die Zeit im Allgemeinen, viele Funktionen sind in einem solchen universellen Stil, dass Sie die Bar-Nummer oder die Zeit übergeben können gemacht. Außerdem wird das Ereignis nur für das Diagramm, auf dem das Skript arbeitet, verarbeitet.
----------------------------------------------------------------------------------------------------------------
OnChartEvent
OnChartEvent() ist ein Handler der ChartEvent-Gruppe von Ereignissen:
...
...
Die Funktion kann nur in EAs aufgerufen werden und muss den Typ void und 4 Parameter haben:
----------------------------------------------------------------------------------------------------------------
DieEreignisbehandlung funktioniert nur in Expert Advisors. Es kann nur einen Expert Advisor auf einem Chart geben, man sollte den Platz eines Expert Advisors nicht mit zusätzlichen und praktisch nutzlosen Tools besetzen. Ich bin der Überzeugung, dass Hilfstools, die nicht direkt mit der Handelsausführung zusammenhängen, nicht in Form von Expert Advisors erstellt werden sollten, abgesehen von wenigen Ausnahmen, die extrem notwendig sind.
OnChartEvent
OnChartEvent() ist ein Handler für die ChartEvent-Ereignisgruppe:
...
...
DieFunktion kann nur in Expert Advisors aufgerufen werden und muss den Typ void und 4 Parameter haben:
----------------------------------------------------------------------------------------------------------------
Die Ereignisverarbeitung funktioniert nur in Expert Advisors. Es kann nur einen Expert Advisor auf einem Chart geben, Sie sollten den Platz eines Expert Advisors nicht durch zusätzliche und praktisch nutzlose Tools ersetzen. Ich bin der Überzeugung, dass Hilfsinstrumente, die nicht direkt mit der Handelsausführung zusammenhängen, nicht in Form von Expert Advisors erstellt werden sollten, mit wenigen Ausnahmen, die extrem notwendig sind.
Dies ist nicht mehr der Fall, achten Sie auf die Ankündigungen - https://www.mql5.com/ru/forum/23/page4:
MetaTrader 5 Client Terminal Build 245
- Terminal: Der Fehler bei der Verbuchung der freien Margin-Fonds in den Vermögenswerten (in der Registerkarte "Exposure") wurde behoben.
- Terminal: Die Funktion der Chart-Eigenschaft "Chart im Vordergrund" wurde korrigiert.
- Terminal: Behoben und neu gestaltetes Druckvorschau-Fenster für Charts.
- Terminal: Ein Fehler bei der Arbeit mit temporären globalen Variablen wurde behoben.
- Terminal: Zusammenführung der Symbolleisten "Standard" und "Diagramme".
- MQL5: Korrekturen bei Abstürzen und Forumsmeldungen
- MQL5: Das Funktionsprinzip der Copy*-Funktionen für Expert Advisors und Skripte wurde geändert - jetzt warten die Funktionen auf das Herunterladen und Erstellen der angeforderten Daten. Die Wartezeit für die angeforderten Daten wird 30 Sekunden nicht überschreiten. Eine detailliertere Beschreibung wird demnächst in der MQL5-Hilfe verfügbar sein.
- MQL5: Möglichkeit der Ereignisverarbeitung durch benutzerdefinierte Indikatoren hinzugefügt, ähnlich wie bei Expert Advisors. Eine genauere Beschreibung wird in Kürze in der MQL5-Hilfe verfügbar sein.
.
So einfach ist das nicht. Ihre Funktion synchronisiert die Balken am linken Rand des Charts, was für das visuelle Studium der Geschichte nicht sehr praktisch ist.
Es ist jedoch möglich, die Balken an einer beliebigen Kante zu synchronisieren und dem Händler Schaltflächen zur Auswahl zu geben - in der Mitte, rechts, links....
Die Verschiebung des Diagramms sollte ebenfalls deaktiviert werden, was ebenfalls nicht sehr praktisch ist (allerdings ist dies eine Frage des Geschmacks).
Die Entwickler würden die Möglichkeit hinzufügen, die Einrückung vom rechten Rand oder die Navigation nach Zeit im Allgemeinen zu erhalten und einzustellen, viele Funktionen sind in einem solchen universellen Stil gemacht, dass Sie die Bar-Nummer oder Zeit übergeben können.
diese Funktion ist übrigens verfügbar. CHART_SHIFT_SIZE
siehe das Beispiel ObjChartSample.mq5
Irgendetwas scheint mit CHART_FIRST_VISIBLE_BAR falsch zu sein.
Wenn Sie ChartNavigate() auf eine Zahl setzen, die offensichtlich größer ist als die Zahl, auf der Sie den Chart sehen können, dann wird
ChartGetInteger(ChartID(),CHART_FIRST_VISIBLE_BAR) wird größer als Bars(ChartSymbol(ChartID()),ChartPeriod(ChartID())).
Beispiel im Skript 2.mq5. Führen Sie das Skript aus, warten Sie ein wenig.
Irgendetwas sagt mir, dass das Terminal nicht auf dem neuesten Stand ist.
Denn wenn man das Skript sofort wieder ausführt, funktioniert es beim ersten Mal.
Vielleicht müssen wir die Zeit kontrollieren.
Vielleicht hilft SeriesInfoInteger?
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
sChartsSynchroScroll:
Das Script ermöglicht das synchrone Scrollen aller Charts, die im Client Terminal geöffnet sind.
Autor: Dmitry Fedoseev