English Русский 中文 Español Deutsch 日本語 Português 한국어 Français Türkçe
preview
Tuffo veloce in MQL5

Tuffo veloce in MQL5

MetaTrader 5Esempi | 9 dicembre 2021, 14:48
425 0
MetaQuotes
MetaQuotes

Perché Hai Bisogno di MQL5?

Ci possono essere molte ragioni per cui hai deciso di studiare il linguaggio di programmazione delle moderne strategie di trading MQL5 e accogliamo con favore la tua decisione! Gli utenti esperti possono facilmente navigare nella documentazione del linguaggio, nonché nell’enorme varietà di articoli e servizi presentati qui. Ma, se hai appena scoperto il client terminal MetaTrader 5, molte cose possono sembrare insolite e confuse all'inizio.

Quindi, quali vantaggi ci sono nel conoscere MQL5? Forse, hai deciso di studiare un linguaggio OOP (programmazione orientata agli oggetti) attuale. Dopo aver studiato MQL5, puoi facilmente padroneggiare altri linguaggi di alto livello, come C ++, С #, Java e così via. Naturalmente, ciò non significa che siano molto simili, ma le loro basi hanno molto in comune.

O forse, conosci già una di questi linguaggi e hai un'idea per creare il tuo robot di trading o sistema analitico di informazioni per lavorare sui mercati finanziari. In questo caso, imparerai facilmente il linguaggio MQL5 specializzato creato appositamente per questo scopo.

O forse, conosci già MQL4 utilizzato attivamente per creare vari robot di trading e indicatori per il popolare trading terminal MetaTrader 4? Quindi, devi solo fare un leggero sforzo per vedere tutta la potenza del nuovo linguaggio MQL5 e tutti i vantaggi del nuovo ambiente di sviluppo MetaEditor 5.

Ci possono essere molte ragioni per studiare MQL5 e vogliamo darti alcuni consigli su dove iniziare e a cosa prestare attenzione. Quindi, cominciamo.

Tuffo veloce in MQL5

Le Possibilità e le Caratteristiche del Linguaggio

MetaQuotes Language 5 (MQL5) è sviluppato da MetaQuotes Software Corp. sulla base della loro lunga esperienza nella creazione di piattaforme di trading online di diverse generazioni. Di seguito, sono riportati i principali vantaggi del linguaggio.

  • La sintassi è il più vicino possibile a C++. Ciò consente a MQL5 di adottare facilmente applicazioni scritte in altri linguaggi.
  • La velocità operativa dei programmi MQL5 è quasi uguale a quella dei programmi С ++.
  • Ricche funzionalità integrate per la creazione di indicatori tecnici, oggetti grafici e interfacce utente.
  • Supporto OpenCL integrato.
  • Una grande libreria standard e un sacco di esempi nella Code Base .
  • Parallelizzare compiti di ottimizzazione matematica per decine e migliaia di thread individuali senza dover scrivere un codice speciale.

Per i Principianti della Programmazione

Se non hai esperienza di programmazione in linguaggi di alto livello, puoi prendere qualsiasi manuale C ++ e usarlo come esempio quando si studiano le basi del linguaggio MQL5 (sintassi, tipi di dati, variabili, operatori, funzioni, OOP e così via). Gli sviluppatori di MQL5 hanno cercato di garantire la massima compatibilità delle sue funzionalità con il linguaggio C ++ molto popolare.

L'esperienza dimostra che è possibile imparare MQL5 da zero in un paio di mesi, mentre meno di un anno può essere sufficiente per alcuni utenti per studiare e scoprire tutte le sue caratteristiche. Vedi Opportunità senza Limiti con, MetaTrader 5 e MQL5 e forse ti ispirerà a creare qualcosa di veramente grande.

Per gli Utenti MQL4

All'inizio, potresti trovare scomodo il nuovo approccio alla creazione di indicatori. Molte nuove funzioni di gestione degli eventi potrebbero stupirti, mentre la sintassi simile a C e i nuovi tipi di dati potrebbero inizialmente sembrare insoliti.

Ma, dopo un po’, apprezzerai tutti i vantaggi di MQL5 rispetto a MQL4. E come ti piacciono le ricche possibilità di lavorare con grafici e oggetti grafici e la possibilità di disegnare qualsiasi immagine come sulla tela? Sarai in grado di provare tutto questo dopo aver familiarizzato con MQL5.

Per Programmatori Professionisti

Se codifichi in uno dei linguaggi attuali, sarà abbastanza facile per te avere una rapida padronanza di MQL5. Conosci già ООP e il modello di evento. Ora, devi solo imparare le seguenti funzioni specifiche deliberatamente pensate per il trading algoritmico.

Ci sono anche le seguenti lievi differenze nella sintassi del linguaggio implementata per motivi di scrittura sicura del codice e tempo di funzionamento ottimale dell'applicazione.

  • Nessun puntatore aritmetico. I puntatori MQL5 sono, infatti, descrittori.
  • Nessuna eccezione.
  • Gli array di qualsiasi tipo vengono sempre passate per riferimento.
  • Gli array non possono avere più di quattro dimensioni.
  • Gli array e gli oggetti non possono essere restituiti dalle funzioni, ma è possibile restituire un puntatore dell’oggetto.
  • Nessun operatore goto;

Se non hai mai eseguito operazioni di trading prima d’ora, potresti avere alcune domande riguardanti i termini di trading e lo strategy tester quando scrivi il tuo robot di trading. La sezione articoli contiene pubblicazioni utili per aiutarti in questo, come le seguenti pubblicazioni.

Pertanto, il linguaggio MQL5 non è un problema per un programmatore professionista. Il problema principale è la conoscenza del trading e dei concetti ad esso correlati.


Installazione del Terminale MetaTrader 5

Il programma di installazione web del terminale MetaTrader 5 può essere scaricato dal sito Web ufficiale tramite il link https://download.mql5.com/cdn/web/metaquotes.software.corp/mt5/mt5setup.exe. L'installazione del terminale MetaTrader 5 è abbastanza semplice. Avviene tutto in pochi semplici click. Tuttavia, si consiglia di installare il terminale su qualsiasi unità tranne quella in cui è installato il sistema operativo Windows. Il motivo è che Microsoft ha implementato il nuovo sistema per il controllo delle azioni utente a partire da Windows Vista, UAC.

Pertanto, se non sei esperto nell'amministrazione del sistema o non vuoi navigare tra molte cartelle nascoste, specifica la cartella di installazione del terminale lontano da Programmi per consentire al terminale dati di essere memorizzato nella stessa directory del terminale MetaTrader 5. Ad esempio, installare il terminale sull'unità D:\, se il sistema operativo è installato sull'unità C:\.

Ulteriori informazioni sulle differenze nelle modalità di funzionamento di MetaTrader 5 che dipendono dal percorso di installazione sono disponibili in Guida introduttiva → For Advanced User → Platform Start nella guida per l'utente integrata.


Indicatori, Script ed Expert Advisor

Il linguaggio MQL5 realizza tre tipi di programmi di base. Ogni tipo è più adatto per risolvere i suoi compiti specifici, come i seguenti.

  • Uno script è un programma progettato per un singolo lancio su un grafico dei prezzi. Una volta che l'esecuzione raggiunge la fine dell’handler OnStart() predefinito, lo script viene completato e scaricato dal grafico. La funzione OnStart() è progettata solo per gli script. Questo è l'unico punto di avvio in cui deve trovarsi il codice eseguibile. Uno script può contenere un ciclo infinito con brevi pause tra le iterazioni e quindi operare su un grafico fino a quando non viene arrestato forzatamente. È possibile eseguire un solo script alla volta su ciascun grafico.

  • Un indicatore è un programma per il calcolo di array di valore sulla base dei dati di prezzo. Gli array speciali per la memorizzazione dei valori degli indicatori sono chiamate buffer degli indicatori. Il numero di buffer consentiti in un indicatore è praticamente illimitato.
    Ogni grafico può avere contemporaneamente più indicatori, tra cui alcune copie dello stesso indicatore. Le funzioni per lavorare con le proprietà degli indicatori sono disponibili solo dagli indicatori. Non sono disponibili da script o Expert Advisor. Un programma è considerato un indicatore, se l’handler OnCalculate() è stato rilevato in esso. La durata dell'indicatore è illimitata. Viene eseguito fino a quando non viene rimosso dal grafico. La funzione OnCalculate() può essere chiamata solo negli indicatori.

  • Un Expert Advisor è un altro tipo di programma con una durata illimitata. Può anche essere posizionato su un grafico per tutto il tempo necessario. Gli Expert Advisor di solito hanno il gestore eventi OnTick() che indica chiaramente che abbiamo a che fare con un codice sorgente di un Expert Advisor. Può essere localizzato un solo Expert Advisor alla volta e, quindi, eseguito su un grafico.
    L'obiettivo primario di Expert Advisors è l'automazione dei sistemi di trading. Ma possono anche avere esclusivamente funzioni di servizio, come l'implementazione di un'interfaccia grafica per il trading manuale, e/o l'attuale analisi della situazione di mercato e la rappresentazione visiva e così via.

Campioni di indicatori MetaTrader 5

Sarebbe meglio iniziare a imparare le basi di MQL5 dalla scrittura di script, usando esempi dalla documentazione MQL5 o dalla Code Base. Quindi, puoi iniziare a lavorare con le funzioni degli oggetti e sperimentare operazioni di trading su un account demo.

La fase successiva è scrivere i propri indicatori personalizzati e analizzare esempi dal code case e dagli articoli. Nel momento in cui hai padronanza degli indicatori, sarai pronto per l'apprendimento delle funzioni di gestione degli eventi.

L'obiettivo finale è la creazione di semplici Expert Advisor e la loro prova rispetto ai dati storici utilizzando lo Strategy Tester nel terminale MetaTrader 5. Ci sono molti articoli in Expert Tester e Sistemi di trading dedicati a questo argomento.

E, naturalmente, dovremmo menzionare la caratteristica più eccitante riguardante la programmazione MQL5, lo sviluppo di moduli personalizzati per Expert Advisors tramite il MQL5 Wizard. Puoi trovare molti articoli su questo argomento e la Code Base contiene una varietà di moduli QL5 Wizard già pronti .


Modello di Evento

Un programma MQL5 funziona solo quando si verificano alcuni eventi. Possono rappresentare il download e l'inizializzazione di un programma MQL5, l'arrivo di un nuovo tick (modifica del prezzo del simbolo), la modifica delle proprietà del grafico, la modifica di un simbolo o di un intervallo di tempo su un grafico, l'attuazione dell'ordine in sospeso e così via.

Pertanto, il modello di eventi consente di scrivere programmi interattivi nel modo più semplice. Ci sono grandi possibilità per scrivere pannelli grafici personalizzati e creare una comoda interfaccia utente in grado di soddisfare le tue esigenze. Le funzioni integrate per lavorare con la grafica consentono la creazione di applicazioni complete e ben progettate.

Un semplice esempio di gestione degli eventi nel programma MQL5


La possibilità di generare eventi personalizzati utilizzando la funzione EventChartCustom() per qualsiasi grafico attivo in MetaTrader 5 consente la creazione di sistemi interattivi complessi. L'intercettazione e la gestione degli eventi vengono eseguite dalla funzione OnChartEvent(). Le funzionalità menzionate sono mostrate nell'esempio di funzione Il Giocatore di Trading Basato sulla Storia delle Operazioni e EventChartCustom().


Debug e Guida dell'Utente

Il terminale MetaTrader 5 e MetaEditor 5 contengono guide utente integrate ben documentate a cui è possibile accedere premendo F1. Tutta la documentazione viene aggiornata automaticamente tramite LiveUpdate. Inoltre, questa guida per l'utente è disponibile online in diverse lingue sul sito ufficiale della piattaforma di trading MetaTrader 5.

La fonte di apprendimento più importante è la documentazione MQL5, che è rappresentata non solo online su https://www.mql5.com/it/docs ma è anche disponibile per il download in formato CHM e PDF in più lingue.

Il client terminal e MetaEditor 5 sono strettamente integrati tra loro. Puoi sempre passare a un'altra applicazione premendo F4. Questa è una funzione molto comoda quando si modifica il codice, soprattutto se lavori con più terminali contemporaneamente.

Qualsiasi programma MQL5 può essere debuggato nel terminale direttamente dall'editor premendo F5. Il grafico verrà aperto automaticamente e il tuo programma (uno script, un indicatore o un Expert Advisor) verrà avviato su di esso. Quando si esegue il debug degli script, è inoltre necessario considerare che vengono caricati da soli dopo il completamento dell'operazione OnStart(). Di conseguenza, il processo di debug viene completato automaticamente in quella fase e il grafico di "debug" viene chiuso senza salvare tutti gli oggetti grafici realizzati dallo script. Pertanto, inserire un breakpoint o Sleep() con un valore molto grande prima dell'operatore return() alla fine di uno script.

La modalità di debug è necessaria sia per rilevare errori nel programma che per studiare e apprendere MQL5. Oltre a utilizzare i breakpoint nel codice, esiste una speciale funzione DebugBreak() che funziona solo se un programma è in modalità di debug.

E, naturalmente, dovremmo menzionare il potente motore di ricerca integrato in MetaTrader 5 che consente di cercare tutti i dati necessari non solo in un file sorgente o in una cartella, ma anche sul sito Web MQL5.community (Articoli, Forum e Code Base).

Impostazione dei parametri di ricerca in MetaEditor 5

I risultati ottenuti possono essere filtrati in base alle categorie necessarie. Pertanto, l'ambiente di sviluppo fornisce non solo la guida utente integrata all'editor e al linguaggio MQL5, ma anche la possibilità di trovare materiali utili sul sito web mql5.com.


Profiling del Codice

L'ambiente di sviluppo MetaEditor 5 offre ai programmatori molte comode funzionalità per semplificare la scrittura e il debug del codice. Di cos'altro hanno bisogno i programmatori oltre alla funzione di debug? Profilazione del codice, naturalmente. La profilazione sta raccogliendo le funzionalità dell'applicazione, come il tempo di esecuzione dei suoi singoli frammenti (funzioni, linee), in una forma conveniente.

La profilazione consente di rilevare rapidamente le parti più dispendiose in termini di tempo nell'applicazione. È possibile valutare le modifiche implementate in termini di velocità operativa per scegliere gli algoritmi più efficienti. Gli sviluppatori professionisti sono ben consapevoli di ciò che possono fare utilizzando questa funzione, mentre i nuovi arrivati possono esaminare i loro programmi sotto una nuova luce. 

Profilazione del codice in MetaTrader 5

Lo screenshot qui sopra mostra la profilazione del codice mostrato al forum (https://www.mql5.com/en/forum/7134). Prova la profilazione del codice scaricando il codice dal thread del forum menzionato.


MQL5 Storage Archivia e Gestisci il Tuo Lavoro in Modo Uniforme

Un'altra caratteristica interessante e conveniente per la programmazione MQL5 è la tua personale archiviazione dei codici sorgente MQL5 . Usandolo, avrai sempre accesso diretto ai tuoi file tramite MetaEditor 5 da qualsiasi parte del mondo. È possibile memorizzare non solo i programmi MQL5 ma anche le sorgenti C ++ (cpp, h), nonché i file sorgente BMP e WAV.

Aggiunta del file allo Storage MQL5

Puoi aggiungere ed estrarre i tuoi codici, annullare le modifiche - in breve, puoi fare tutto ciò che i moderni sistemi hanno da offrire. Oltre a lavorare con MQL5 Storage direttamente da MetaEditor 5, è possibile utilizzare qualsiasi client esterno che supporti Subversion 1.7, come Tortoise SVN.


La Vita degli Indicatori, Grafici e Oggetti Grafici

Tutta l'esperienza precedente è stata presa in considerazione durante lo sviluppo di MetaTrader 5. Pertanto, alcune funzionalità possono sembrare insolite all'inizio. Ad esempio, il modello efficiente viene utilizzato per il calcolo dell'indicatore: un indicatore rappresenta una parte di calcolo. Molti Expert Advisor, script e altri indicatori possono utilizzare i risultati di un indicatore. Significa anche che se un indicatore è impostato su più grafici con lo stesso simbolo e lo stesso intervallo di tempo, il calcolo verrà eseguito in un'unica entità di calcolo. Questo approccio consente di risparmiare tempo e memoria.

Inoltre, i valori di un indicatore possono essere calcolati utilizzando i valori di un altro o utilizzando i valori degli array in MQL5. Ciò consente di ottenere calcoli di indicatori complessi in modo unificato e semplice. Come è stato detto prima, le possibilità di rappresentazione grafica dei valori degli indicatori in linguaggio MQL5 sono davvero immense.

Tutte le operazioni riguardanti le proprietà dei grafici e la gestione degli oggetti grafici sono asincrone. Ciò impedisce agli utenti di perdere tempo in attesa che il sistema video del terminale visualizzi i cambiamenti di colori, dimensioni e così via. Se si desidera ottenere risultati immediati dell'esecuzione delle funzioni dalle funzioni dell’Oggetto o dalle operazioni del Grafico chiama ChartRedraw() per il ridisegno forzato del grafico. In caso contrario, il grafico verrà ridisegnato automaticamente dal terminale alla prima occasione.


Operazioni di Trading

Il trading in MQL5 viene eseguito inviando richieste utilizzando la funzione OrderSend(). Una richiesta è una speciale struttura MqlTradeRequest piena di valori necessari a seconda di un'azione di trading necessaria.

È possibile acquistare o vendere, effettuare ordini in sospeso per acquistare/vendere in determinati termini o eliminare un ordine in sospeso esistente. Se OrderSend() è stato eseguito correttamente, il risultato dell'esecuzione della richiesta di trading viene fissato nella struttura MqlTradeResult.

All'inizio, non è necessario verificare la correttezza del riempimento della struttura MqlTradeRequest quando si studia MQL5. La libreria standard ha una classe CTrade speciale per l'esecuzione di operazioni di trading. Questa classe è stata progettata per semplificare il lavoro dei programmatori MQL5.

Lavorare con gli ordini

OrderOpen

Inserisce l'ordine in sospeso con i parametri impostati.

OrderModify

Modifica i parametri dell'ordine in sospeso.

OrderDelete

Cancella l’ordine in sospeso.

Lavorare con le posizioni

PositionOpen

Apre la posizione con i parametri impostati.

PositionModify

Modifica i parametri di posizione.

PositionClose

Chiude la posizione da

Metodi aggiuntivi

Buy

Apre una posizione lunga con parametri specificati.

Sell

Apre una posizione corta con parametri specificati.

BuyLimit

Inserisce l'ordine in sospeso di tipo Buy Limit (acquista al prezzo inferiore al prezzo di mercato corrente) con i parametri specificati.

BuyStop

Posiziona l'ordine in sospeso di tipo Buy Stop (acquista al prezzo superiore al prezzo di mercato corrente) con parametri specificati.

SellLimit

Inserisce l'ordine in sospeso di tipo Sell Limit (vendi al prezzo superiore al prezzo di mercato corrente) con parametri specificati.

SellStop

Posiziona l'ordine in sospeso di tipo Buy Stop (vendi al prezzo inferiore al prezzo di mercato corrente) con i parametri specificati


Un esempio di applicazione della classe CTrade può essere trovato nel MACD Sample training Expert Advisor dalla consegna standard del terminale. L'Expert Advisor è disponibile all'indirizzo <terminal_directory>\MQL5\Experts\Examples\MACD. Alcune altre classi utili per lavorare con ordini, posizioni, operazioni e così via possono essere trovate nella sezione Classi di trading insieme a CTrade.


Strategy Tester MetaTrader 5

MetaTrader 5 non solo consente il trading su vari mercati finanziari utilizzando robot di trading, ma offre anche la possibilità di verificare la loro redditività e stabilità su diverse parti della cronologia. Per raggiungere questo obiettivo, lo Strategy Tester è stato implementato nel terminale.

Va considerato che il terminale agisce come un gestore di esecuzione, distribuendo attività a singoli servizi chiamati agente durante il test/ottimizzazione di un Expert Advisor. Pertanto, i test vengono eseguiti come sessioni di comunicazione tra il terminale e gli agenti. Il tester invia attività agli agenti e ottiene in cambio i risultati dell'esecuzione.

Ottimizzazione del sistema di trading nel tester del terminale MetaTrader 5

I messaggi del tester e degli agenti vengono inseriti nel journal. Durante il test, gli agenti possono inviare un numero molto elevato di messaggi generati in un Expert Advisor dalle funzioni Print() e Alert(). Pertanto, non tutti i messaggi degli agenti vengono visualizzati nel journal, alcuni di essi possono essere ignorati. Questo viene fatto per evitare il rallentamento dei test a causa della necessità di visualizzare tutti i messaggi.

Di conseguenza, il journal viene archiviato separatamente in <terminal_folder>\tester\logs\, mentre i log dettagliati con tutti i messaggi vengono salvati nelle relative cartelle degli agenti tester. Tienilo a mente quando cerchi registri dettagliati per l'analisi dei test. Fortunatamente, il tester ha uno speciale log viewerin cui è possibile trovare i registri per un intervallo definito.

Oltre ai test, c'è anche la modalità di ottimizzazione dei parametri di input di un Expert Advisor, in cui il tester può utilizzare decine, centinaia o addirittura migliaia di agenti tester (ad esempio, da MQL5 Cloud Network). In questo caso, l'invio e la visualizzazione dei messaggi tramite le funzioni Print() e Alert() vengono completamente soppressi per non aumentare il volume del traffico in uscita in direzione del tester e per risparmiare spazio su un disco rigido del PC in cui si trovano gli agenti tester. L'unica eccezione è fatta per la funzione OnInit(). La funzione può utilizzare Print() per inviare il messaggio che può chiarire un motivo per l'inizializzazione non riuscita o il rifiuto di eseguire un test utilizzando la funzione ExpertRemove() per motivi tecnici.

Puoi trovare informazioni più interessanti in Tester. Crediamo che apprezzerai le possibilità dello Strategy Tester nel client terminal MetaTrader 5.


Spingere i Limiti

Chiunque tu sia, scoprirai nuove opportunità dopo aver studiato MQL5. Ciò può includere una migliore comprensione dei linguaggi di programmazione, nuove conoscenze sul trading o la conoscenza di nuove tecnologie. Il nuovo terminale MetaTrader 5 include così tante nuove funzionalità che probabilmente non saremo in grado di trovare nemmeno un singolo sviluppatore che sia riuscito a raggiungere tutto il suo potenziale fino ad ora.

In questo articolo, non abbiamo ancora menzionato molte cose interessanti tra cui il comodo lavoro con le DLL, il download di programmi dalla code base nell'editor, il loro avvio con un click nel terminale e molto altro. Se non hai paura di leggere il lungo elenco delle funzionalità del terminale, allora sei il benvenuto a farlo in MetaTrader 5: Più di Quanto Tu Possa immaginare!

Auguriamo a tutti voi ogni bene e speriamo di vedervi tra i membri permanenti di MQL5.community!

Tradotto dal russo da MetaQuotes Ltd.
Articolo originale: https://www.mql5.com/ru/articles/447

Operazioni di Trading in MQL5 - È Facile Operazioni di Trading in MQL5 - È Facile
Quasi tutti i trader vengono sul mercato per fare soldi, ma alcuni trader apprezzano anche il processo in sé. Tuttavia, non è solo il trading manuale che ti può offrire un'esperienza entusiasmante. Anche lo sviluppo automatizzato dei sistemi di trading può essere piuttosto coinvolgente. Creare un robot di trading può essere interessante quanto leggere un buon romanzo giallo.
Come Creare un Robot di Trading in Pochissimo Tempo Come Creare un Robot di Trading in Pochissimo Tempo
Il trading sui mercati finanziari comporta molti rischi, incluso il più critico: il rischio di prendere una decisione di trading sbagliata. Il sogno di ogni trader è quello di trovare un robot di trading, che sia sempre in buona forma e non soggetto alle debolezze umane: paura, avidità e impazienza.
Strategie d'Ordine. Expert Advisor Multiuso Strategie d'Ordine. Expert Advisor Multiuso
Questo articolo è incentrato sulle strategie che utilizzano attivamente gli ordini in sospeso, un metalinguaggio che può essere creato per descrivere formalmente tali strategie e l'uso di un Expert Advisor multiuso il cui funzionamento si basa su tali descrizioni
Algoritmi per Fare Soldi che Impiegano il Trailing Stop Algoritmi per Fare Soldi che Impiegano il Trailing Stop
L'obiettivo di questo articolo è studiare la redditività degli algoritmi con diverse entrate nei trade e nelle uscite utilizzando il trailing stop. I tipi di voce da utilizzare sono l'entrata casuale e l'entrata inversa. Gli ordini di stop da utilizzare sono trailing stop e trailing take. L'articolo dimostra algoritmi per fare soldi con una redditività di circa il 30% all'anno.