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

Gestore di eventi multivaluta OnTick(string symbol) - 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:
236
Valutazioni:
(45)
Pubblicato:
Aggiornato:
onmultitick.zip (24.14 KB)
Freelance MQL5 Hai bisogno di un robot o indicatore basato su questo codice? Ordinalo su Freelance Vai a Freelance

Descrizione:

Questa è un'altra versione di come è possibile implementare una modalità multivaluta completa in MetaTrader 5. È realizzata sulla falsariga del gestore di tick standard OnTick(string symbol).

Vantaggi:

  • Vera funzionalità multivaluta sia in conto demo che in conto reale.
  • Configurazione semplice.
  • È possibile configurare quali eventi ricevere in OnTick(string symbol): NewTick e/o NewBar.
  • È possibile configurare il sistema in modo da ricevere eventi relativi agli strumenti presenti nella finestra “Panoramica del mercato” o presenti nel proprio elenco di simboli.
  • Quando si lavora con i simboli dalla finestra "Panoramica del mercato", è possibile gestire "al volo" per quali simboli ricevere gli eventi in OnTick(string symbol).
  • Non è necessario approfondire il funzionamento di questa funzionalità. Tutto il codice è contenuto in un file di inclusione e non interferisce con la scrittura del proprio codice.
  • Funziona nel tester.

Il modello dell’expert ha questo aspetto:

//+------------------------------------------------------------------+
//|                                        OnTick(string symbol).mq5 |
//|                                            Copyright 2010, Lizar |
//|                            https://www.mql5.com/it/users/Lizar |
//+------------------------------------------------------------------+
#define VERSION       "1.00 Build 1 (01 Fab 2011)"

#property copyright   "Copyright 2010, Lizar"
#property link        "https://www.mql5.com/it/users/Lizar"
#property version     VERSION
#property description "Modello degli esperti durante l'utilizzo"
#property description "elaboratore multivaluta OnTick(string symbol)"

//+------------------------------------------------------------------+
//|                IMPOSTAZIONI DELLA MODALITÀ MULTIVALUTA                  |
//|          per il gestore di eventi OnTick(string symbol)           |
//|                                                                  |
//| 1.1 Elenco dei simboli per i quali è necessario ricevere gli eventi:     |
#define  SYMBOLS_TRADING    "EURUSD","GBPUSD","USDJPY","USDCHF"
//| 1.2 Ricevere gli eventi relativi a tutti i simboli dalla finestra "Panoramica del mercato":    |
//#define  SYMBOLS_TRADING    "MARKET_WATCH"
//|     Nota: occorre selezionare o il punto 1.1 o il punto 1.2.     |
//|                                                                  |
//| 2.  Tipo di evento per OnTick(string symbol):                       |
#define  CHART_EVENT_SYMBOL CHARTEVENT_TICK 
//|     Nota: il tipo di evento deve corrispondere all'enumerazione  |
//|                 ENUM_CHART_EVENT_SYMBOL.                         |
//|                                                                  |
//| 3.  File da includere contenente tutte le funzionalità:                 |
#include <OnTick(string symbol).mqh>
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//| Funzione di inizializzazione di Expert                                   |
//| Questa funzione deve essere necessariamente presente nel codice dell'esperto,   |
//| anche se è vuota                                             |
//+------------------------------------------------------------------+
int OnInit()
  {
   //--- Qui va il tuo codice...  
   return(0);
  }
  
//+------------------------------------------------------------------+
//| Funzione multi-tick avanzata                                       |
//| Questa funzione sostituisce la funzione standard OnTick()                          |
//+------------------------------------------------------------------+
void OnTick(string symbol)
  {
   //--- Qui va il tuo codice...
   Print("Nuovo evento per simbolo: ",symbol);
  }
  
//+------------------------------------------------------------------+
//| Funzione ChartEvent                                              |
//| Questa funzione deve essere necessariamente presente nel codice dell'esperto,   |
//| anche se è vuota                                             |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,         // identificativo dell'evento 
                  const long& lparam,   // parametro di evento di tipo long
                  const double& dparam, // parametro di evento di tipo double
                  const string& sparam) // parametro dell'evento di tipo stringa
  {
   //--- Qui va il tuo codice...  
  }
  
//+------------------------------------------------------------------+
//| Funzione di disinizializzazione di Expert                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   //--- Qui va il tuo codice...  
  }

//+------------------------------ fine -------------------------------+

Alcune caratteristiche:

  1. Impostazioni.
Tutte le impostazioni vengono effettuate tramite le direttive del preprocessore #define. Per il corretto funzionamento di OnTick(string symbol) è necessario impostare solo due parametri: SYMBOLS_TRADING e CHART_EVENT_SYMBOL. Il parametro SYMBOLS_TRADING specifica i simboli per i quali verranno ricevuti gli eventi. Il parametro CHART_EVENT_SYMBOL specifica i tipi di eventi per tutti i simboli.

SYMBOLS_TRADING può essere specificato sotto forma di elenco di simboli, ad esempio:

#define  SYMBOLS_TRADING    "EURUSD","GBPUSD","USDJPY","USDCHF"

L'elenco deve essere formattato come costanti di stringa separate da virgola. L'elenco termina con la fine della riga e non può essere riportato sulla riga successiva.

In alternativa, SYMBOLS_TRADING può essere specificato in questo modo:

#define  SYMBOLS_TRADING    "MARKET_WATCH"

Questo metodo implica che si intende utilizzare i simboli presenti nella finestra "Panoramica del mercato" al posto dell’elenco. Questo metodo è pratico in quanto, durante il funzionamento dell’expert, è possibile modificare “al volo” i simboli per i quali verranno ricevuti gli eventi in OnTick(string symbol). A tal fine è sufficiente aggiungere o rimuovere strumenti di trading nella finestra “Panoramica del mercato”.

Il tipo di evento CHART_EVENT_SYMBOL viene specificato tramite un flag o una combinazione di flag dell’enumerazione ENUM_CHART_EVENT_SYMBOL. Maggiori informazioni su questa enumerazione sono disponibili qui. Esempi di impostazione del tipo di evento:

//--- Esempio 1. Gli eventi arrivano ad ogni tick:
#define  CHART_EVENT_SYMBOL CHARTEVENT_TICK 
//--- Esempio 2. Gli eventi relativi ai simboli vengono ricevuti ogni minuto e ogni ora:
#define  CHART_EVENT_SYMBOL CHARTEVENT_NEWBAR_H1|CHARTEVENT_NEWBAR_M1

2. File da includere.

La direttiva #include con il file OnTick(string symbol).mqh, che contiene tutte le funzionalità per la funzione OnTick(string symbol), deve essere inserita dopo le impostazioni e prima degli altri gestori di eventi standard. Il file è strutturato in modo da nascondere alla vista tutto il codice di supporto per OnTick(string symbol). Per questo motivo, la presenza di alcune funzioni standard nel modello sopra riportato è contrassegnata come obbligatoria.

3. Iltester.

Come è noto, al momento della pubblicazione il tester non supporta il funzionamento del gestore di eventi OnChartEvent. Per consentire il test degli expert, nel codice è stato implementato il passaggio degli eventi tramite le variabili globali del terminale. Ciò è stato fatto esclusivamente per il tester delle strategie; nel trading reale e in quello demo gli eventi vengono trasmessi tramite OnChartEvent. Naturalmente, tali integrazioni hanno reso il codice meno elegante, ma ora è possibile utilizzare il tester.

C’è però una sfumatura. Nel tester , la funzione `OnTick(string symbol)` opera sui tick del simbolo specificato nelle impostazioni del tester. In sintesi, funziona quasi come OnTick(), solo che gli eventi per ogni tick arrivano dagli strumenti di trading selezionati. Per funzionare nel tester, i simboli nel parametro SYMBOLS_TRADING devono essere specificati in un elenco.

4. Spie.

Gli indicatori “spia” vengono utilizzati. Pertanto, la presenza nella cartella \MQL5\Indicators\ dello spy Spy Control panel MCM.ex5 è importante. Nel file allegato è presente una nuova versione di Spy Control panel MCM.mq5. In essa è stata aggiunta la trasmissione degli eventi tramite variabili globali per il tester.

5. L'archivio allegato deve essere decompresso nella cartella \MQL5. I file saranno collocati come segue:

    • /mql5/experts/OnTick(string symbol).mq5 - esempio di expert, codice sorgente del modello;
    • /mql5/experts/OnTick(string symbol).ex5 - esempio di expert, file eseguibile;
    • /mql5/indicators/Spy Control panel MCM.mq5 - indicatore - agente, codice sorgente;
    • /mql5/indicators/Spy Control panel MCM.ex5 - indicatore - agente, file eseguibile;
    • /mql5/include/OnTick(string symbol).mqh - file di inclusione contenente tutte le funzionalità di OnTick(string symbol).

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

Zig Zag non parametrico, modelli alla Clyde Lee Zig Zag non parametrico, modelli alla Clyde Lee

Zigzag non parametrico ispirato ai modelli di Clyde Lee.

Round Levels MT5 Round Levels MT5

Indicatore Round Levels MetaTrader - un indicatore MT4/MT5 in grado di visualizzare livelli rotondi e zone vicine ad essi in base alla configurazione. Può essere utile per fare trading sulle zone di supporto e resistenza psicologiche naturali. Può anche emettere avvisi quando il prezzo si trova in una zona di supporto o di resistenza.

eKeyboardTrader eKeyboardTrader

Uno strumento che consente di eseguire le principali operazioni di trading tramite la tastiera.

Recent High/Low Alert MT5 Recent High/Low Alert MT5

Indicatore MetaTrader Recent High/Low Alert - visualizza due bande di livelli massimi e minimi su N candele recenti. Per impostazione predefinita, la banda massima viene visualizzata con una linea blu; la banda minima viene visualizzata con una linea gialla. Inoltre, può richiamare un avviso a comparsa, inviare un avviso via e-mail o emettere un avviso di notifica quando il prezzo corrente (Bid) rompe il livello alto o basso recente. Tutti gli avvisi possono essere disattivati. Se si utilizza la funzione di avviso via e-mail, non bisogna dimenticare di impostare le impostazioni dell'e-mail nella finestra delle opzioni della piattaforma MetaTrader. Lo stesso vale per le notifiche push. L'indicatore è disponibile sia per MT4 che per MT5.