Diskussion zum Artikel "Synchronisierung mehrerer Charts eines Symbols auf verschiedenen Zeitrahmen"
Ich möchte die Unterstützungs- und Widerstandsniveaus auf verschiedenen Zeitrahmen synchronisieren, d.h. die auf einem Zeitrahmen hinzugefügte Unterstützung erscheint auf allen anderen Zeitrahmen-Charts
Hallo,
Wie haben Sie Widerstandsniveaus auf dem Chart hinzugefügt? Wie eine horizontale Linie oder ein rechteckiges Feld?
Gibt es eine Möglichkeit, nur bestimmte Arten von Objekten zu klonen und den Rest zu ignorieren? Wie kann ich außerdem die Sichtbarkeitseigenschaften von Objekten klonen, denn es scheint, dass die Sichtbarkeitseinstellungen der geklonten Objekte nicht übernommen werden und in den anderen Diagrammen manuell neu eingestellt werden müssen.
Vielen Dank!
Gibt es eine Möglichkeit, nur bestimmte Arten von Objekten zu klonen und den Rest zu ignorieren? Wie kann ich außerdem die Sichtbarkeitseigenschaften der Objekte klonen, da die Sichtbarkeitseinstellungen der geklonten Objekte anscheinend nicht übernommen werden und in den anderen Diagrammen manuell neu eingestellt werden müssen?
Vielen Dank!
Hallo, yousurfer.
Wenn Sie Objekte nach einer Eigenschaft auswählen möchten, können Sie diese in dieser Funktion hinzufügen
string CCopyObject::CreateMessage(long chart) { string result = NULL; int total = ObjectsTotal(chart, 0); for(int i=0;i<total;i++) { string name = ObjectName(chart, i, 0); // // if(!( zu kopierende Objekteigenschaft prüfen) ) // wenn Sie dieses Objekt nicht kopieren wollen // weiter;// Gehe zum nächsten Objekt // switch((ENUM_OBJECT)ObjectGetInteger(chart,name,OBJPROP_TYPE)) { case OBJ_HLINE: result+="{NAME="+name+"|TYPE="+IntegerToString(OBJ_HLINE)+"|"+HLineToString(chart, name)+"}"; break; case OBJ_VLINE: result+="{NAME="+name+"|TYPE="+IntegerToString(OBJ_VLINE)+"|"+VLineToString(chart, name)+"}"; break; case OBJ_TREND: result+="{NAME="+name+"|TYPE="+IntegerToString(OBJ_TREND)+"|"+TrendToString(chart, name)+"}"; break; case OBJ_RECTANGLE: result+="{NAME="+name+"|TYPE="+IntegerToString(OBJ_RECTANGLE)+"|"+RectangleToString(chart, name)+"}"; break; } } return result; }
Mit freundlichen Grüßen,
Dmitriy.
Bei 8 geöffneten Charts eines Instruments mit unterschiedlichen TF verlangsamt sich der Indikator merklich und hängt MT, z.B. kommt ein frisch gezeichnetes Quadrat mit 5-10 Sekunden Verzögerung auf andere Charts. Woran kann das liegen?
Vielen Dank!
Könnten Sie eine für MT4 machen? Vorzugsweise mit einem Filter für Objekte (nur horizontal oder Trend klonen...) Es gibt einen ähnlichen Indikator für MT4, aber der Code ist geschlossen, der Filter kann nicht hinzugefügt werden.
Um ihn auf MT4 zu verwenden, genügt es, die Dateierweiterung des Indikators von mq5 auf mq4 zu ändern und den Indikator neu zu kompilieren.
Um die Filterung von Objekten hinzuzufügen, müssen Sie die Parameter
sinput bool CloneHLine = true; sinput bool CloneVLine = true; sinput bool CloneTrend = true; sinput bool CloneRectangle = true;
und korrigieren Sie OnChartEvent mit der Hinzufügung der Funktion CheckToClone.
//+------------------------------------------------------------------+ //| ChartEvent-Funktion| //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { //--- string message1=NULL; string message2=NULL; int total=0; //--- switch(id) { case CHARTEVENT_OBJECT_CHANGE: case CHARTEVENT_OBJECT_CREATE: case CHARTEVENT_OBJECT_DRAG: if(!CheckToClone(sparam)) return; message1=CloneObjects.CreateMessage(l_Chart,sparam,0); message2=CloneObjects.CreateMessage(l_Chart,sparam,1); total=ArraySize(ar_Charts); for(int i=0;i<total;i++) { EventChartCustom(ar_Charts[i],(ushort)id,0,0,message1); EventChartCustom(ar_Charts[i],(ushort)id,0,0,message2); } break; //--- case CHARTEVENT_OBJECT_DELETE: if(!CheckToClone(sparam)) return; total=ArraySize(ar_Charts); for(int i=0;i<total;i++) EventChartCustom(ar_Charts[i],(ushort)id,0,0,sparam); break; //--- case CHARTEVENT_CUSTOM + CHARTEVENT_OBJECT_CHANGE: case CHARTEVENT_CUSTOM + CHARTEVENT_OBJECT_CREATE: case CHARTEVENT_CUSTOM + CHARTEVENT_OBJECT_DRAG: CloneObjects.DrawObjects(l_Chart,sparam); ChartRedraw(l_Chart); break; //--- case CHARTEVENT_CUSTOM + CHARTEVENT_OBJECT_DELETE: if(!CheckToClone(sparam)) return; ObjectDelete(l_Chart,sparam); ChartRedraw(l_Chart); break; } } //+------------------------------------------------------------------+ //|| //+------------------------------------------------------------------+ bool CheckToClone(string name) { bool result = false; if(l_Chart>=0 && ObjectFind(l_Chart,name)==0) { switch((ENUM_OBJECT)ObjectGetInteger(l_Chart,name,OBJPROP_TYPE)) { case OBJ_HLINE: result=CloneHLine; break; case OBJ_VLINE: result=CloneVLine; break; case OBJ_TREND: result=CloneTrend; break; case OBJ_RECTANGLE: result=CloneRectangle; break; } } return result; }
Bei 8 geöffneten Charts eines Instruments mit unterschiedlichen TF verlangsamt sich der Indikator merklich und hängt MT, z.B. kommt ein frisch gezeichnetes Quadrat mit 5-10 Sekunden Verzögerung auf andere Charts. Was kann der Grund dafür sein?
Ich danke Ihnen!
Schönen guten Tag.
Der Punkt ist, dass die Indikatoren in einem Thread arbeiten und eine große Anzahl von Indikatoren im Terminal seine Arbeit wirklich verlangsamen kann. Außerdem ist die Arbeit mit grafischen Elementen für das Terminal recht arbeitsintensiv. Für den Einsatz auf einer großen Anzahl von Charts würde ich empfehlen, das Programm in einen Expert Advisor umzuformatieren, ohne dass es zu einem Funktionsverlust kommt. Das funktioniert aber nur, wenn Sie nicht gleichzeitig Expert Advisors mit der Analyse verwenden. Denn das Terminal hat die Einschränkung, dass nicht mehr als ein Expert Advisor pro Chart verwendet werden darf.
Um ihn auf MT4 zu verwenden, ändern Sie einfach die Dateierweiterung des Indikators von mq5 auf mq4 und kompilieren Sie den Indikator neu.
Vielen Dank für Ihre schnelle Antwort und Hilfe. ChartIndicatorGet, CloneAllObjects und andere Funktionen werden in mq4 nicht unterstützt. Im Allgemeinen 9 Fehler beim Kompilieren. Ich bin null in der Programmierung. Bitte helfen Sie mir.

- 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.
Neuer Artikel Synchronisierung mehrerer Charts eines Symbols auf verschiedenen Zeitrahmen :
Häufig muss man während des Handels Charts auf gleichzeitig mehreren Zeitrahmen analysieren, um Handelsentscheidungen zu treffen. Dabei sind häufig Objekte der grafischen Analyse auf diesen Charts vorhanden. Es ist aber unbequem, allen Charts die gleichen Objekte hinzuzufügen. In diesem Artikel schlage ich vor, das "Klonen" von Objekten nach Charts zu automatisieren.
Im Artikel wurde eine Methode zur Erstellung eines Indikators vorgeschlagen, der grafische Objekte automatisch zwischen den Charts des Terminals in Echtzeit kopiert. Dabei wurde der Mechanismus eines gegenseitigen Datenaustauschs zwischen den offenen Charts im Terminal implementiert. Dieser Ansatz beschränkt nicht die Anzahl der zu synchronisierenden Charts. Gleichzeitig kann der Nutzer grafische Objekte auf jedem der zu synchronisierenden Charts erstellen, ändern und löschen. Die Arbeit des Indikators ist im Video dargestellt:
Autor: Dmitriy Gizlyk