und werden Sie Mitglied unserer Fangruppe
Veröffentliche einen Link auf das Skript, damit die anderen ihn auch nutzen können
Bewerten Sie es im Terminal MetaTrader 5
- Ansichten:
- 17
- Rating:
- Veröffentlicht:
-
Benötigen Sie einen Roboter oder Indikator, der auf diesem Code basiert? Bestellen Sie ihn im Freelance-Bereich Zum Freelance
Haben Sie schon einmal einige grafische Objekte zwischen geöffneten Diagrammen kopieren und einfügen müssen? Ich denke, das haben Sie. Überraschenderweise bietet MetaTrader keine "Kopieren & Einfügen"-Funktion für Objekte. Das Einzige, womit Sie einen mehr oder weniger ähnlichen Effekt erzielen können, sind Vorlagen (tpl-Dateien). Aber die Vorlage speichert den kompletten Chart-Status, einschließlich Indikatoren, Einstellungen und vielem anderen, das für die erforderliche Replikationsprozedur irrelevant und unnötig sein kann.
Aus diesem Grund habe ich diesen Indikator ChartObjectsCopyPaste.mq5 entwickelt. Er kopiert ausgewählte Objekte in die Zwischenablage, von wo aus sie in andere Charts eingefügt werden können. Keine Bedingungen.
Der Indikator basiert auf einem anderen Indikator, der im Algotrading-Buch veröffentlicht wurde - ObjectGroupEdit.mq5.
Bitte folgen Sie dem Link, um mehr über die zugrunde liegenden Klassen(ObjectMonitor, MapArray und andere) zu erfahren, die hinter den Kulissen arbeiten.
Dieser Indikator hat keine Puffer. Er sollte mindestens an 2 Charts angehängt werden: den Quell-Chart, aus dem Sie Objekte kopieren möchten, und den Ziel-Chart, in den Sie sie einfügen möchten.
Während er auf einem Chart läuft, verfolgt der Indikator die vorhandenen grafischen Objekte und macht sich Notizen darüber, welche Objekte ausgewählt sind.
Wie üblich arbeiten die Befehle "Kopieren und Einfügen" paarweise:
- Drücken Sie die Tastenkombination Strg+Q, um alle ausgewählten Objekte als Text in die Windows-Zwischenablage zu kopieren (Sie können den Text in einem beliebigen Texteditor speichern und anzeigen, ein Beispiel finden Sie unten).
- Drücken Sie Strg+J auf einem Zieldiagramm, um alle Objekte aus der Zwischenablage einzufügen.
Warum Strg+Q/Strg+J? Dies sind nur 2 freie Tastenkombinationen, die freiwillig aus sehr wenigen ausgewählt wurden. Das liegt daran, dass MetaTrader viele Hotkeys abfängt und nicht an MQL-Programme weitergibt. Dies gilt insbesondere für die Standardtasten Strg+C/Strg+V/Strg+Einfg/Shift+Einfg, die in diesem Zusammenhang nicht funktionieren.
Da der Quellcode zur Verfügung steht, können Sie die Hotkeys auf andere Kombinationen ändern.
Da der Indikator System-DLLs für den Zugriff auf die Windows-Zwischenablage verwendet, sollten Sie DLL-Importe im Eigenschaften-Dialog auf der Registerkarte Abhängigkeiten zulassen.
Da die Codebase keine DLL-Importe zulässt, ist der Code, der sich auf die Zwischenablage bezieht, in die bedingte Präprozessor-Direktive #ifdef DLL_LINK verpackt, so dass Sie bitte die Zeile
#define DLL_LINK
vor der Kompilierung. Andernfalls werden Sie sehen, wie die Zwischenablage-Funktionsstubs Ihnen als Reaktion auf das Drücken von Hotkeys Warnungen anzeigen, ohne dass tatsächliche Aktionen ausgeführt werden!
- MakeAllSelectable - Flag, um alle Objekte auswählbar zu machen (was normalerweise für die programmatisch erstellten Objekte false ist);
- LogDetails - Flagge zur Ausgabe aller Eigenschaften der übertragenen Objekte in das Protokoll;
Hier ist ein Beispiel für einen Text in der Zwischenablage mit 2 Objekten:
OBJ_VLINE H1 Vertical Line 5578 0 0 enum ENUM_OBJECT_PROPERTY_INTEGER 0 OBJPROP_COLOR 55295 1 OBJPROP_STYLE 2 2 OBJPROP_WIDTH 1 3 OBJPROP_BACK 0 4 OBJPROP_SELECTED 1 7 OBJPROP_TYPE 0 8 OBJPROP_TIME 1726739940 10 OBJPROP_SELECTABLE 1 11 OBJPROP_CREATETIME 1726847009 12 OBJPROP_TIMEFRAMES 2097151 200 OBJPROP_LEVELS 0 207 OBJPROP_ZORDER 0 208 OBJPROP_HIDDEN 0 1032 OBJPROP_RAY 1 enum ENUM_OBJECT_PROPERTY_DOUBLE 9 OBJPROP_PRICE 1.11449 enum ENUM_OBJECT_PROPERTY_STRING 5 OBJPROP_NAME H1 Vertical Line 5578 6 OBJPROP_TEXT 206 OBJPROP_TOOLTIP OBJ_CHANNEL H1 Equidistant Channel 40885 5 1 enum ENUM_OBJECT_PROPERTY_INTEGER 0 OBJPROP_COLOR 255 1 OBJPROP_STYLE 0 2 OBJPROP_WIDTH 1 3 OBJPROP_BACK 0 4 OBJPROP_SELECTED 1 7 OBJPROP_TYPE 5 8 OBJPROP_TIME 1726758000 8 OBJPROP_TIME.1 1726797600 8 OBJPROP_TIME.2 1726758000 10 OBJPROP_SELECTABLE 1 11 OBJPROP_CREATETIME 1726847883 12 OBJPROP_TIMEFRAMES 2097151 200 OBJPROP_LEVELS 0 207 OBJPROP_ZORDER 0 208 OBJPROP_HIDDEN 0 1003 OBJPROP_RAY_LEFT 0 1004 OBJPROP_RAY_RIGHT 0 1031 OBJPROP_FILL 0 enum ENUM_OBJECT_PROPERTY_DOUBLE 9 OBJPROP_PRICE -28.113879003558715 9 OBJPROP_PRICE.1 -21.708185053380777 9 OBJPROP_PRICE.2 -48.04270462633452 enum ENUM_OBJECT_PROPERTY_STRING 5 OBJPROP_NAME H1 Equidistant Channel 40885 6 OBJPROP_TEXT 206 OBJPROP_TOOLTIP
Und hier sind diese Objekte auf dem Chart eingefügt:
Übersetzt aus dem Englischen von MetaQuotes Ltd.
Originalpublikation: https://www.mql5.com/en/code/52263

Ermöglicht Ihnen, bullische und bearishe Perioden, die durch den Zickzack-Indikator bestätigt werden, mithilfe von Linien leicht zu visualisieren. Sie können die Anzeige des Zickzacks steuern, indem Sie wählen, ob er vom Anfang des Charts oder von einer bestimmten Anzahl von Balken aus starten soll, sowie die Anzeige von Etiketten, die den Preis der Spitze oder des Trogs, die Richtung der vergangenen Periode und ihre Amplitude in Pips anzeigen. Natürlich funktioniert dies sowohl auf dem Hauptfenster als auch auf Unterfenstern. WARNING!!! Dies ist eine wertvolle Hilfe zum Verständnis und zur Kalibrierung von Indikatoren und zur Entwicklung von Strategien, aber es ist nicht für den direkten Gebrauch bestimmt. Übersetzt mit DeepL.com (kostenlose Version)

- Das Skript durchsucht das aktuelle Diagramm nach allen verfügbaren Diagrammobjekten, - zählt und löscht sie entsprechend - und protokolliert die Namen der Objekte im Diagramm entsprechend.

Der Accumulation/Distribution Indikator wird aus Änderung von Preis und Volumen bestimmt.

Der Acceleration/Deceleration Indikator (AC) misst die Beschleunigung und Verlangsamung des aktuellen Marktimpulses, der Kraft der Kursbewegung.