Guarda come scaricare robot di trading gratuitamente
Ci trovi su Telegram!
Unisciti alla nostra fan page
Script interessante?
Pubblica il link!
lasciare che altri lo valutino
Ti è piaciuto lo script? Provalo nel Terminale MetaTrader 5
Sistemi Esperti

Pannello di controllo della modalità multivaluta "Control panel MCM" - sistema esperto per MetaTrader 5

Konstantin Gruzdev
Konstantin Gruzdev
Research Engineer. Been programming since 1982. Since 2001, I write software for companies operating in the stock and currency markets. With MetaTrader been working since 2006. Since 2010 an active participant MQL5.Community.
My main creative contribution to the MQL5-coding and the community:
| Italian English Русский 中文 Español Deutsch 日本語 Português 한국어 Français Türkçe
Visualizzazioni:
306
Valutazioni:
(45)
Pubblicato:
Aggiornato:
Freelance MQL5 Hai bisogno di un robot o indicatore basato su questo codice? Ordinalo su Freelance Vai a Freelance

Introduzione

Uno dei vantaggi del linguaggio di programmazione MQL5 consiste nella possibilità di creare strumenti per il funzionamento di indicatori e expert advisor in modalità multivaluta in tempo reale. A conferma di ciò, ho pubblicato uno script nella Code Base intitolato “Gestore di tick multivaluta OnTickMarketWatch”.

L’utilizzo diretto della variante proposta nello script comporta una serie di inconvenienti. Ad esempio, un numero elevato di tick in entrata nella funzione OnChartEvent() può causare un “ingombro” della coda degli eventi. Ecco un avviso tratto dalla guida:

Все возникающие события клиентский терминал складывает в общую очередь. Таким образом события обрабатываются одно за другим в порядке поступления. Исключение составляет событие NewTick. Если в очереди уже есть такое событие либо это событие находится в состоянии обработки, то новое событие NewTick в очередь не ставится.
Очередь событий имеет ограниченный размер. При переполнении очереди старые события удаляются без обработки для того, чтобы освободить место для вновь поступающих событий. Поэтому крайне рекомендуется писать эффективные обработчики событий и не рекомендуется использовать бесконечные циклы.

Inoltre, a volte è necessario effettuare operazioni di trading o calcolare gli indicatori solo quando compare una nuova barra. Oppure disattivare urgentemente il trading multivaluta su un determinato strumento senza interromperne il funzionamento, per così dire “al volo”. Oppure modificare, ad esempio, il periodo di un determinato simbolo senza interrompere il funzionamento del sistema multivaluta. O molte altre cose ancora… E questo «molte altre cose ancora» spesso consiste in dati provenienti dall’ambiente esterno in cui opera l’indicatore o l’expert advisor.

Proprio per configurare l’ambiente esterno in cui opera l’indicatore o il sistema di trading multivaluta è stato concepito il pannello di controllo della modalità multivaluta «Control panel MCM» (Control panel the MultiCurrency Mode).

A proposito, questo pannello può essere facilmente utilizzato anche per il trading in valuta singola.


Vantaggi della versione di «Control panel MCM» presentata al concorso

Funzionalità
Nella versione presentata è presente l’intera set minimo necessario per la configurazione della modalità multivaluta degli indicatori e degli expert advisor, ovvero:

  • Attivazione/disattivazione dei simboli dalla finestra "Panoramica del mercato" per il trading o l'analisi.
  • Impostazione della modalità di trading in base ai tick o all’evento “nuova barra” per qualsiasi periodo e per il simbolo selezionato nella “Panoramica di mercato”.
  • Modificare tutte le impostazioni sopra elencate «al volo» senza chiudere, arrestare o accedere alla finestra delle proprietà dell’expert advisor o dell’indicatore.
  • Il pannello può essere posizionato come elemento indipendente sul grafico, dopodiché è possibile "trascinare" sul grafico esperti e indicatori compatibili con il pannello.
  • Il pannello può essere integrato come componente di indicatori o expert advisor. Verrà caricato insieme a essi.
  • Tutto ciò non limita in alcun modo il vostro potenziale creativo nella creazione di indicatori e expert advisor multivaluta. Inoltre, grazie al «Control panel MCM», ora non dovrete più «integrare» nel vostro codice ciò che vi offre questo sviluppo.

Esplorando il menu «Control panel MCM», potrete scoprire un servizio aggiuntivo che è disponibile, ma non è incluso nella versione di concorso.

Una descrizione più dettagliata delle funzionalità del “Control panel MCM” è disponibile più avanti nella sezione “Utilizzo del pannello di controllo della modalità multivaluta”.

Limitazioni funzionali: in questa versione le impostazioni non vengono salvate al riavvio del pannello e non sono stati attivati i moduli aggiuntivi che ampliano le funzionalità di base.


Semplicità di installazione e manutenzione del pannello

Installare il «Control panel MCM» è facile. È possibile farlo in tre modi:

  • Caricare sul grafico desiderato l’indicatore “iControl panel MCM”, che costituisce il “motore” del pannello.
  • Eseguire lo script "scControl panel MCM". Questo script è stato creato solo a titolo di esempio e avvia l’indicatore "iControl panel MCM".
  • Attivare il caricamento del pannello dal proprio indicatore o expert advisor. Un esempio di expert advisor si trova nel file "exControl panel MCM".

In quest’ultimo caso, il pannello verrà caricato insieme al proprio indicatore o expert in un’unica finestra. Nei primi due casi verrà semplicemente installato il pannello stesso. Successivamente, in questa finestra è possibile installare il proprio expert o indicatore, che devono essere compatibili con “Control panel MCM”. L’unico requisito di compatibilità per i vostri programmi MQL è la presenza al loro interno del gestore di eventi standard OnChartEvent().


Design dell’interfaccia

Semplice. Realizzato sotto forma di menu tradizionale. La configurazione dei colori e delle dimensioni avviene tramite le proprietà dell’indicatore. Esteticamente, il pannello e i pulsanti del pannello hanno questo aspetto:

Impostazione dei colori e delle dimensioni dell'indicatore del pannello iControl MCM


Ergonomia nell’uso quotidiano

Anche in questo caso è tutto molto semplice. La barra di controllo serve solo per configurare gli eventi necessari per il gestore multivaluta all’inizio del lavoro. Le dimensioni delle finestre, per quanto possibile, si adattano alle dimensioni della finestra del grafico. Se il menu è abbastanza lungo, compare una barra di scorrimento verticale per scorrere l’elenco delle voci. Una volta configurata, la barra può essere nascosta e rimarrà “inattiva” nell’angolo in basso a sinistra della finestra finché non verrà richiamata. Non ingombra eccessivamente il grafico e non risulta particolarmente fastidiosa.

Pannello di controllo iControl MCM ripiegabile

È possibile modificare le dimensioni della barra cambiando la dimensione del carattere nelle «Proprietà» dell’indicatore. Per impostazione predefinita, la dimensione del carattere è 10:

Impostazioni del carattere del display del pannello di controllo iControl MCM

Ad esempio, per le ragazze cieche e glamour, il pannello potrebbe apparire così:

Configurazione dei colori del pannello di controllo iControl panel MCM

E per i misteriosi EMO onniveggenti, la barra potrebbe apparire, ad esempio, così:

Configurazione dei colori del pannello di controllo iControl panel MCM


Facilità di apprendimento e memorizzazione delle operazioni

Il menu della pannellina è intuitivo. Dato che il menu è composto solo da pochi pulsanti, è difficile confondersi e facile da memorizzare.

Il pulsante del menu «Control panel MCM» contiene strumenti aggiuntivi che ampliano le funzionalità del pannello (in questa versione non sono abilitati):

Strumenti aggiuntivi del pannello di controllo iControl panel MCM

Il pulsante di menu «Grafico» contiene le impostazioni relative al simbolo e al periodo del grafico corrente. Selezionando un altro simbolo o periodo, è possibile modificare i parametri del grafico corrente:

Modifica dei parametri del grafico corrente nel pannello iControl MCM

Il pulsante di menu "Eventi" consente di attivare/disattivare "al volo" (senza disattivare l'expert advisor o l'indicatore) i simboli per il trading o l'analisi, nonché di configurare gli eventi necessari in base ai simboli selezionati. Questi eventi possono essere monitorati tramite la funzione OnChartEvent() in un expert advisor o in un indicatore.

Nel menu vengono visualizzati solo i simboli selezionati nella finestra "Panoramica del mercato". È possibile scegliere un singolo evento "a proprio piacimento" oppure combinare insieme più eventi. Tutti questi eventi verranno inviati al multi-currency. Ora, nei propri indicatori o expert advisor, non è più necessario preoccuparsi, ad esempio, della comparsa di una nuova barra su determinati timeframe: ci penserà questo pannello, che segnalerà l’evento tramite il gestore di eventi OnChartEvent():

Novità: il nuovo pannello iControl di MCM

Il pulsante del menu «Aiuto» è stato creato esclusivamente per motivi di interesse personale: per attestare la mia paternità dell’opera e indirizzarvi, nel senso di «reindirizzarvi», verso questo forum:

Scheda tecnica del pannello iControl MCM


Soluzioni basate sul know-how, o un approccio interessante

In realtà, avevo già rivelato la mia soluzione di know-how in occasione della pubblicazione di “Processore di tick multivaluta OnTickMarketWatch”. Ma questo pannello contiene soluzioni aggiuntive ed elimina tutti gli svantaggi dello script proposto in precedenza:

  • "Control panel MCM" offre un servizio che non è implementato di serie nel terminale. Nello specifico, offre la possibilità di un vero e proprio regime multivaluta tramite il gestore di eventi OnChartEvent() e consente di esternalizzare alcune impostazioni al di fuori degli expert advisor, con la possibilità di modificarle rapidamente “al volo”.
  • Per generare eventi per il gestore di eventi standard OnChartEvent(), il pannello utilizza i propri “agenti”, che forniscono gli eventi corrispondenti per il sistema multivaluta. Ciò consente di “alleggerire” il carico dell’expert multivaluta grazie alla parallelizzazione dei flussi di elaborazione dei dati. Per «agenti» intendo gli indicatori avviati dal «Control panel MCM» sul simbolo selezionato.
  • Il pannello può essere utilizzato sia come strumento indipendente, sia come componente integrato in expert advisor o indicatori. Ciò ne consente un utilizzo piuttosto flessibile.
  • Il “Control panel MCM” non limita in alcun modo il potenziale creativo dei programmatori nella creazione di indicatori e expert advisor multivaluta. Inoltre, grazie al “Control panel MCM”, ora non sarà più necessario “integrare” nel codice ciò che offre questo sviluppo.
  • Crea (o almeno pretende di farlo) un nuovo standard, più semplice, per l’architettura di expert advisor e indicatori. IMHO, ovviamente. Se avrò tempo, pubblicherò un paio di esempi.


Supporto informativo sugli eventi e notifiche per il trader

A tal fine, il pannello dispone di una barra di stato in cui vengono visualizzati tutti gli eventi e le azioni dell’operatore. In realtà esiste un modulo collegabile per il registro degli eventi, ma per puro capriccio non l’ho incluso in questa versione.


Alcune caratteristiche dell’utilizzo del “Control panel MCM”.

Installazione del pannello.

Per installare il pannello è necessario estrarre il file archiviato "Control panel MCM.rar" nella cartella mql5. Una volta estratto, otterrete diversi file:

  • /mql5/experts/exControl panel MCM.mq5 - esempio di expert che utilizza il modello;
  • /mql5/scripts/scControl panel MCM.mq5 - script che carica il pannello di controllo;
  • /mql5/indicators/iControl panel MCM.mq5 - indicatore - motore "Control panel MCM";
  • /mql5/indicators/Spy Control panel MCM.mq5 - indicatore - agente “Control panel MCM”;
  • /mql5/include/Control panel MCM.mqh - raccolta di funzioni e classi di "Control panel MCM".

Compilate l’expert advisor, lo script ed entrambi gli indicatori.

Caricamento del pannello

Il caricamento del pannello è semplice: avviate l'indicatore "iControl panel MCM.mq5" su qualsiasi strumento e timeframe. Tutto qui. A questo punto potete iniziare a sperimentare con il pannello. È possibile aggiungere al grafico gli expert advisor e gli indicatori compatibili con "Control panel MCM".

Per me ha più senso pratico caricare il pannello da un expert advisor. Avviamo l’expert advisor “exControl panel MCM” e otteniamo:

Esempio di utilizzo del pannello iControl MCM

Inoltre, a titolo di esempio, ho aggiunto il mio indicatore multivaluta MultiTrend, sviluppato appositamente per l’uso con il pannello di controllo della modalità multivaluta. L’indicatore mostra l’andamento del dollaro (linea rosa) sulla base dell’analisi dell’andamento di quattro valute.

Di seguito riporto il codice dell’expert advisor:

//+------------------------------------------------------------------+ 
//|                                                   MultiTrend.mq5 | 
//|                                            Copyright 2010, Lizar | 
//|                            https://www.mql5.com/it/users/Lizar | 
//+------------------------------------------------------------------+ 
#define VERSION       "1.00 Build 2 (09 Dec 2010)" 
#property copyright   "Copyright 2010, Lizar"
#property link        "https://www.mql5.com/it/users/Lizar"
#property version     VERSION
#property description "L'esperto mostra il funzionamento del pannello di controllo della modalità multivaluta"
#property description "\Control panel MCM\" (Control panel the MultiCurrency Mode)."
input color bg_color=Gray;        // Colore del menu 
input color font_color=Gainsboro; // Colore del carattere 
input color select_color=Yellow;  // Colore dell'evidenziazione 
input int font_size=10;         // Dimensione del carattere 
#include <Control panel MCM.mqh> //<--- File da includere: Control panel MCM 
//+------------------------------------------------------------------+ 
//| Funzione di inizializzazione di Expert                                   | 
//+------------------------------------------------------------------+ 
int OnInit()
  {    //--- Inizializzazione del pannello di controllo MCA.    
//--- Non è necessario specificare i parametri dei colori (verrà applicata la colorazione predefinita del menu).     
   InitControlPanelMCM(bg_color,font_color,select_color,font_size);
//---   
  return(0);   
  } 
//+------------------------------------------------------------------+ 
//| Funzione di disinizializzazione di Expert                                 | 
//+------------------------------------------------------------------+ 
void OnDeinit(const int reason)
  {
   DeinitControlPanelMCM();   //<--- Deinizializzazione del pannello di controllo MCA: 
  }
//+------------------------------------------------------------------+ 
//| Funzione standard per la gestione degli eventi. Può essere utilizzata  | 
//| secondo la sua destinazione d'uso, come descritto nella documentazione.        | 
//|                                                                  | 
//| Insieme al Pannello di controllo, MCM rappresenta uno strumento pratico per        | 
//| trading multivaluta.                                         | 
//+------------------------------------------------------------------+ 
void OnChartEvent(const int id, // identificativo dell'evento:                                     
                  // se id-CHARTEVENT_CUSTOM==0 - inizializzazione, corrisponde al momento in cui prev_calculated==0
                  // se id-CHARTEVENT_CUSTOM!=0 - posizione del simbolo nella finestra "Panoramica del mercato"                
                  const long&   lparam, // periodo del grafico                
                  const double& dparam, // prezzo                
                  const string& sparam  // strumento                
                  )
  {
   if(id>=CHARTEVENT_CUSTOM)
     {
      Print(TimeToString(TimeCurrent(),TIME_SECONDS)," -> id=", id-CHARTEVENT_CUSTOM,
                         ":  ",sparam," ",EventDescription(lparam)," price=",dparam);
     }
  }
//+------------------------------------------------------------------+ 


Descrizione dei parametri di input di OnChartEvent()

Il pannello di controllo genera eventi personalizzati e li trasmette al grafico impostato, affinché tali eventi possano essere ulteriormente elaborati nell'expert o nell'indicatore tramite la funzione OnChartEvent(). I parametri di input di questa funzione (nel nostro caso) devono essere interpretati come segue:

  • id - identificatore dell'evento:
    se id-CHARTEVENT_CUSTOM != 0 - posizione del simbolo nella finestra "Panoramica del mercato";
  • lparam; - flag dell’evento proveniente dall’agente del pannello. I flag corrispondono all’enumerazione ENUM_CHART_EVENT_SYMBOL, che troverete all’inizio del file da includere Control panel MCM.mqh, mentre la descrizione è riportata poco più avanti nel testo.
  • dparam - il prezzo del tick o il prezzo di apertura di una nuova barra su un determinato timeframe.
  • sparam - nome dello strumento di trading per il quale è stato ricevuto l’evento


Elenco degli eventi forniti da Control panel MCM

Tramite lparam, il pannello di controllo può, a seconda delle impostazioni, trasmettere fino a 64 diversi eventi personalizzati per ogni simbolo. In questa versione, il pannello di controllo MCM può trasmettere i seguenti eventi:

  • Evento "Inizializzazione" (Initialization);
  • Evento "nuovo tick" (tick);
  • Evento "nuova barra" sul grafico a 1 minuto (M1);
  • Evento "nuova barra" sul grafico a 2 minuti (M2);
  • Evento "nuova barra" sul grafico a 3 minuti (M3);
  • Evento "nuova barra" sul grafico a 4 minuti (M4);
  • Evento "nuova barra" sul grafico a 5 minuti (M5);
  • Evento "nuova barra" sul grafico a 6 minuti (M6);
  • Evento "nuova barra" sul grafico a 10 minuti (M10);
  • Evento "nuova barra" sul grafico a 12 minuti (M12);
  • Evento "nuova barra" sul grafico a 15 minuti (M15);
  • Evento "nuova barra" sul grafico a 20 minuti (M20);
  • Evento "nuova barra" sul grafico a 30 minuti (M30);
  • Evento "nuova barra" sul grafico a 1 ora (H1);
  • Evento "nuova barra" sul grafico a 2 ore (H2);
  • Evento "nuova barra" sul grafico a 3 ore (H3);
  • Evento "nuova barra" sul grafico a 4 ore (H4);
  • Evento "nuova barra" sul grafico a 6 ore (H6);
  • Evento "nuova barra" sul grafico a 8 ore (H8);
  • Evento "nuova barra" sul grafico a 12 ore (H12);
  • Evento "nuova barra" sul grafico giornaliero (D1);
  • Evento "nuova barra" sul grafico settimanale (W1);
  • Evento "nuova barra" sul grafico mensile (MN1);

Tra parentesi è riportata la descrizione dell'evento, restituita dalla funzione EventDescription(). La funzione stessa si trova all'inizio del file Control panel MCM.mqh, dopo l'enumerazione ENUM_CHART_EVENT_SYMBOL.

Si noti che l’evento “Inizializzazione” corrisponde al momento in cui si verifica l’azzeramento del parametro di input prev_calculated dell’indicatore sul simbolo da cui proviene l’evento. Di conseguenza, nel nostro indicatore multivaluta o nell’expert è necessario adottare le misure adeguate. Ad esempio, ricalcolare l’indicatore per quel simbolo.


Configurazione degli eventi

La configurazione degli eventi che arriveranno dagli agenti del pannello di controllo avviene tramite il pulsante di menu “Eventi”. Cliccando sul pulsante apparirà un elenco di tutti i simboli attualmente selezionati nella finestra «Panoramica del mercato». Per attivare gli eventi relativi a un simbolo, è necessario cliccarci sopra due volte con il mouse. Meglio farlo lentamente, per godersi appieno l’emozione dell’azione.

Se gli eventi relativi a un simbolo erano già stati attivati in precedenza (il simbolo in questione è evidenziato con un colore vivace), è sufficiente cliccarci sopra una sola volta. Apparirà l’elenco degli eventi. È possibile selezionare uno o più eventi: tutti verranno inviati al vostro multivaluta. Affinché le modifiche abbiano effetto, è necessario cliccare sul pulsante "Attiva/Disattiva eventi". E così via per tutti i simboli desiderati.

Selezione degli eventi nel pannello iControl MCM

Ecco il risultato ottenuto dall’esecuzione dell’esperto dimostrativo in combinazione con il pannello:

Esempio di funzionamento dell'indicatore iControl panel MCM

Tradotto dal russo da MetaQuotes Ltd.
Codice originale https://www.mql5.com/ru/code/215

YURAZ_Crea_file_di_cronologia_CSV_da_MT5_per_MT4 YURAZ_Crea_file_di_cronologia_CSV_da_MT5_per_MT4

Questo script consente di ottenere per MetaTrader 4 una cronologia completa e senza lacune dal database di MetaTrader 5.

ChartReinit ChartReinit

Reinizializzazione del grafico tramite pulsante con ricalcolo di tutti gli indicatori, oltre a un esempio semplice e chiaro di elaborazione orientata agli oggetti di tutti i grafici da un unico expert.

Indicatore di equilibrio di tendenza TrendEQ Indicatore di equilibrio di tendenza TrendEQ

Trend Equilibrium Indicator TrendEQ analizza dinamicamente le tendenze del mercato combinando momentum e volatilità. Misurando il momentum rispetto alle tendenze del mercato, TrendEQ fornisce una misura affidabile della forza e della direzione del trend.

Calendar-Based Backtesting: an Event-Driven Trading EA Calendar-Based Backtesting: an Event-Driven Trading EA

Questo script e EA consente ai codificatori di eseguire il backtest delle loro strategie basate sulle notizie che utilizzano il calendario MQL5.