Home Indicatore tecnico Post

ChartObjectsCopyPaste: L'indicatore per MetaTrader 5 che semplifica il tuo trading

Allegato
52263.zip (7.43 KB, Scarica 0 volte)

Hai mai desiderato copiare e incollare oggetti grafici tra grafici aperti? Scommetto di sì! Sorprendentemente, MetaTrader non offre una funzione di "Copia & Incolla" per gli oggetti. L'unica opzione simile è quella dei template (file .tpl), ma questi memorizzano l'intero stato del grafico, inclusi indicatori, impostazioni e tanta altra roba che potrebbe non essere necessaria per il tuo lavoro.

Ed ecco perché ho sviluppato l'indicatore ChartObjectsCopyPaste.mq5. Questo strumento ti permette di copiare oggetti selezionati negli appunti, da dove possono essere incollati su altri grafici. Niente di più semplice!

L'indicatore si basa su un altro indicatore pubblicato nel libro di algotrading - ObjectGroupEdit.mq5. Se vuoi approfondire, segui il link per scoprire di più sulle classi sottostanti (ObjectMonitor, MapArray e altre) che lavorano in background.

Questo indicatore non ha buffer. Deve essere applicato a almeno 2 grafici: il grafico sorgente da cui desideri copiare gli oggetti e il grafico target dove prevedi di incollarli.

Mentre è attivo su un grafico, l'indicatore tiene traccia degli oggetti grafici esistenti e annota quali sono stati selezionati.

Come di consueto, i comandi "Copia & Incolla" funzionano in coppia:

  • Premi il tasto Ctrl+Q per copiare tutti gli oggetti selezionati negli appunti di Windows come testo (puoi salvarlo e visualizzarlo in qualsiasi editor di testo, di seguito trovi un esempio).
  • Su un grafico target, premi Ctrl+J per incollare tutti gli oggetti dagli appunti.

Perché Ctrl+Q/Ctrl+J? Queste sono semplicemente 2 combinazioni di tasti vacanti scelte tra le poche disponibili. Questo perché MetaTrader intercetta e non propaga molte scorciatoie a programmi MQL. In particolare, i classici Ctrl+C/Ctrl+V/Ctrl+Ins/Shift+Ins non funzionano in questo contesto.

Essendo il codice sorgente disponibile, puoi cambiare le combinazioni di tasti a tuo piacimento.

Poiché l'indicatore utilizza le DLL di sistema per accedere agli appunti di Windows, devi abilitare gli import delle DLL nella finestra di dialogo Proprietà, nella scheda Dipendenze.

Dato che il Codebase non consente import delle DLL, il codice relativo agli appunti è avvolto in una direttiva del preprocessore condizionale #ifdef DLL_LINK, quindi assicurati di decommentare la seguente riga:

#define DLL_LINK

prima della compilazione. Altrimenti, vedrai come le funzioni degli appunti ti mostreranno avvisi in risposta alla pressione delle scorciatoie, senza che vengano eseguite azioni reali!

Le opzioni di input sono:

  • MakeAllSelectable - flag per rendere tutti gli oggetti selezionabili (che normalmente è falso per quegli oggetti creati programmaticamente);
  • LogDetails - flag per stampare tutte le proprietà degli oggetti trasferiti nel log;

L'indicatore non verifica se gli oggetti incollati corrispondono effettivamente al grafico target, come simbolo, intervallo di prezzo, numero di finestre secondarie, ecc. - dovrai farlo tu stesso.

Ecco un esempio del testo degli appunti con 2 oggetti:

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 

Ecco invece come appaiono questi oggetti incollati sul grafico:

2 oggetti grafici incollati sul grafico tramite appunti

Post correlati

Commento (0)