Heb je ooit grafische objecten tussen open grafieken willen kopiëren?
Je bent zeker niet de enige! Het is verrassend dat MetaTrader geen directe "Kopiëren & Plakken" functie biedt voor objecten. De enige manier om een vergelijkbaar resultaat te bereiken, is door gebruik te maken van templates (tpl-bestanden). Maar een template slaat de volledige staat van de grafiek op, inclusief indicatoren, instellingen en allerlei extra's die vaak niet relevant zijn voor wat je wilt kopiëren.
Daarom heb ik de indicator ChartObjectsCopyPaste.mq5 ontwikkeld. Deze indicator kopieert geselecteerde objecten naar het klembord, waar ze vervolgens op andere grafieken geplakt kunnen worden. Geen extra gedoe!
Hoe werkt het?
De indicator is gebaseerd op een andere indicator die gepubliceerd is in het algoritmisch handelsboek - ObjectGroupEdit.mq5.
Wil je meer weten over de achterliggende klassen zoals ObjectMonitor, MapArray en anderen? Volg dan zeker de link!
Gebruik van de indicator
Deze indicator heeft geen buffers en moet aan minstens twee grafieken worden gekoppeld: de bron-grafiek waarvan je de objecten wilt kopiëren, en de doel-grafiek waar je ze wilt plakken.
Terwijl de indicator draait op een grafiek, houdt hij de bestaande grafische objecten in de gaten en noteert hij welke objecten zijn geselecteerd.
Hoe kopiëren en plakken?
Zoals gebruikelijk werken de "Kopiëren & Plakken" commando's in paren:
- Druk op de toetsencombinatie Ctrl+Q om alle geselecteerde objecten naar het Windows-klembord te kopiëren als tekst (je kunt dit bekijken in elke teksteditor, en hieronder is een voorbeeld).
- Op de doel-grafiek druk je op Ctrl+J om alle objecten van het klembord te plakken.
Waarom Ctrl+Q/Ctrl+J?
Deze twee toetsencombinaties zijn gekozen omdat MetaTrader veel andere sneltoetsen niet doorgeeft aan MQL-programma's. Dit geldt vooral voor de standaard toetsen zoals Ctrl+C/Ctrl+V/Ctrl+Ins/Shift+Ins, die in deze context niet werken.
Aangezien de broncode beschikbaar is, kun je de sneltoetsen aanpassen naar andere combinaties.
Let op: omdat de indicator systeem-DLL's gebruikt om toegang te krijgen tot het Windows-klembord, moet je DLL-imports toestaan in het Eigenschappen dialoogvenster, op het Afhankelijkheden tabblad.
Vanwege de beperkingen van de Codebase met DLL-imports, is de gerelateerde code rondom het klembord ingepakt in een voorwaardelijke preprocessor-directief #ifdef DLL_LINK, dus zorg ervoor dat je deze regel ontcommentarieert:
#define DLL_LINK
voordat je compileert. Anders krijg je meldingen te zien bij het indrukken van de sneltoetsen, zonder dat er daadwerkelijk iets gebeurt!
Instellingen
- MakeAllSelectable - vlag om alle objecten selecteerbaar te maken (standaard is dit niet het geval voor objecten die programmatisch zijn aangemaakt);
- LogDetails - vlag om alle eigenschappen van de overgedragen objecten naar de log te sturen;
De indicator controleert niet of de geplakte objecten passen bij de doel-grafiek, zoals symbool, prijsrange, aantal subvensters, enzovoort - dat moet je zelf doen.
Voorbeeld van klembordtekst
Hier is een voorbeeld van klembordtekst met twee objecten:
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.1 1726797600 8.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.1 -21.708185053380777 9.2 -48.04270462633452 enum ENUM_OBJECT_PROPERTY_STRING 5 OBJPROP_NAME H1 Equidistant Channel 40885 6 OBJPROP_TEXT 206 OBJPROP_TOOLTIP
En hier zijn deze objecten geplakt op de grafiek:

Gerelateerde berichten
- PCA Synthetics: Automatische Coëfficiëntselectie voor MetaTrader 5
- iExposure Indicator: Beheer je Handelsposities Efficiënt met MetaTrader 5
- Efficiëntie Ratio (ER) Berekenen met de CEROnRingBuffer voor MetaTrader 5
- Verbeter je Handelsstrategieën met de ColorXADX Indicator voor MetaTrader 5
- Correlatiecoëfficiënt: Een Onmisbare Indicator voor MetaTrader 5