Velocizza i Calcoli con il Cloud Network MQL5
Test multithread in MetaTrader 5
Puoi elencare a lungo tutti i vantaggi della nuova piattaforma di trading MetaTrader 5 e sostenere che è migliore di altri programmi per l'analisi tecnica e il trading nei mercati finanziari. C'è un altro argomento indiscutibile a favore della piattaforma. E quest'ultimo argomento è he Strategy Tester nel Client Terminal MetaTrader 5. In questo articolo, descriviamo le sue grandi caratteristiche e spieghiamo perché gli sviluppatori di MetaQuotes Software Corp. ne sono così orgogliosi.
Il client terminal di quinta generazione ha non solo un nuovo linguaggio MQL5 potente e veloce per la programmazione delle strategie di trading, ma anche uno Strategy Tester assolutamente nuovo che è stato progettato da zero. Il Tester serve non solo per ricevere i risultati delle strategie di trading testate su dati storici, ma permette anche di ottimizzarlo, cioè di trovare i parametri ottimali.
L'ottimizzazione della strategia è un'esecuzione multipla di una strategia di trading sullo stesso periodo storico con diversi set di parametri da cui dipende. Questo è un compito standard di calcoli di massa, che può essere parallelizzato e, come avrai intuito, il tester in MetaTrader 5 è multithread! Che cosa questo significhi effettivamente, lo vedremo ora in un esempio di ottimizzazione di un Expert Advisor dal pacchetto di distribuzione standard.
Condizioni del Test
Per gli scopi sopra indicati, utilizziamo un computer con Intel Core i7 (8 core, 3,07 GHz) e 12 GB di memoria con sistema operativo Windows 7 64 bit e MetaTrader 5 build 1075.
Viene testato l'Expert Advisor Moving Average.mq5 del pacchetto di consegna standard con le seguenti impostazioni:
- Simbolo: EURUSD H1
- Intervallo di test: dal 01.01.2011 al 01.10.2011
- Modalità di simulazione del prezzo: 1 minute OHLC (vengono utilizzati i prezzi Open, High, Low e Close su barre da 1 minuto)
- Tipo di ottimizzazione: algoritmo completo lento, totale 14.040 passaggi
Ottimizzazione su Agenti Locali
Innanzitutto, eseguiamo l'ottimizzazione sugli agenti locali. Abbiamo otto agenti di test: il numero ottimale per il numero di core. Disabilitare l'utilizzo degli agenti remoti dalla rete locale e degli agenti della MQL5 Cloud Network:
Al termine dell'ottimizzazione, vai su the Journal: 14.040 passaggi su 8 agenti locali sono durati 1 ora, 3 minuti e 44 secondi.
2015.02.05 16:44:38 Statistics locals 14040 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%) 2015.02.05 16:44:38 Statistics optimization passed in 1 hours 03 minutes 46 seconds 2015.02.05 16:44:38 Tester optimization finished, total passes 14040
Ottimizzazione utilizzando una local farm di agent.
Come eseguire più attività in parallelo? Naturalmente, puoi acquistare un processore con un numero elevato di core. Tuttavia, questo non ti consente di moltiplicare il numero di attività simultanee. Strategy Tester risolve questo problema. Puoi creare la tua farm di agenti di elaborazione nella tua rete locale.
Come creare una farm di agenti?
Gli agenti dovrebbero essere installati su ogni computer della rete locale. Se MetaTrader 5 è installato su un computer, apri il gestore degli agenti di prova utilizzando il comando corrispondente dal menu "Strumenti". .
Altrimenti, scarica l'applicazione separata per gestire gli agenti MetaTrader 5 Strategy Tester Agent ed effettua il semplice processo di installazione.
Nel manager, apri il tab Agents:
- Seleziona il numero di agenti da installare. Gli agenti sono installati in base al numero di core logici.
- Immettere la password che verrà utilizzata per connettere gli agenti per l'uso.
- Seleziona un range di porte per la connessione.
- Fare click su Aggiungi.
Questo è tutto. Gli agenti sono pronti per essere utilizzati da altri computer sulla rete locale.
Come collegare i tuoi agenti?
Gli agenti vengono collegati con pochi click. Apri lo strategy tester nel terminale e vai al tab "Agents". Selezionare "Local Network Farm" e fare click su "Aggiungi" nel menu contestuale.
Il modo più semplice e veloce è quello di scansionare automaticamente la rete locale per un range di indirizzi IP e porte. Selezionarli ed immettere la password di connessione all'agente specificata durante l'installazione.
Fai click su "Fine" e tutti gli agenti trovati diventano disponibili per il testing.
Test della Velocità
Abbiamo aggiunto 20 agenti remoti a 8 locali. Quindi abbiamo 28 agenti in totale, ovvero 3,5 volte di più di quanto avessimo originariamente. Ottimizziamo il nostro Expert Advisor e vediamo quanto velocemente verrà eseguito.
05.02.2015 15:14:44 Ottimizzazione delle statistiche passata in 15 minuti e 47 secondi
05.02.2015 15:14:44 Ottimizzazione del tester terminata, passaggi totali 14040
Tre quarti delle attività sono state eseguite da agenti remoti. Il tempo di ottimizzazione è stato ridotto a 15 minuti e 47 secondi, ovvero quasi 4 volte più veloce.
Una crescita impressionante della velocità, ma questa soluzione non è alla portata di tutti. Non preoccuparti. C'è un'opportunità per ottimizzare l'EA ancora più velocemente: proviamo a utilizzare gli agenti del Cloud Network MQL5!
Come Accelerare l'Ottimizzazione Utilizzando il Cloud Network MQL5
Questa volta non utilizziamo agenti locali, ma utilizziamo solo agenti MQL5 Cloud Network. Fare click sul pulsante "Start" e osservare l'avanzamento dell'ottimizzazione. Il video mostra il processo in tempo reale.
Con MQL5 Cloud Network il processo di ottimizzazione è 150 volte più veloce!
Durante l'ottimizzazione, ogni nodo del Cloud Network MQL5 distribuisce le attività (singole esecuzioni) agli agenti disponibili. L'ottimizzazione ha richiesto solo 26 secondi, dando l'accelerazione nei 147 (!) tempi. I trader possono avere bisogno di eseguire centinaia di migliaia di passaggi di ottimizzazione in un tempo ragionevole. Con il tester MetaTrader 5, ti basta solo un'ora per i calcoli nel Cloud Network MQL5, mentre senza la rete ci vorrebbe qualche giorno. Ora con un click puoi coinvolgere migliaia di core per risolvere un compito. Ed è a disposizione di tutti! Ma come funziona?
Il Cloud Network MQL5 Include Migliaia di Computer
Il Cloud Network MQL5 è composta da nodi - server dedicati, a cui gli agenti di test si collegano per eseguire attività. Questi nodi sono gestori (pooler), poiché combinano agenti in tutto il mondo in pool più grandi in base alla loro posizione geografica. Essendo in modalità inattiva, ogni agente invia un messaggio che notifica che è pronto per eseguire un'attività. L'intervallo tra tali messaggi dipende dal carico corrente del Cloud Network MQL5.
Ogni nodo della rete è allo stesso tempo trattato da MetaTrader 5 come un punto di accesso al Cloud Network MQL5; un terminale si connette a loro utilizzando i dettagli dell'account MQL5.com. L'elenco dei server del Cloud Network MQL5 e il numero di agenti cloud disponibili tramite gli stessi è disponibile nel terminale, nella finestra Tester, tab"Agenti ".
Un agente è libero, cioè in modalità inattiva, nel caso non sia impegnato a svolgere le proprie attività locali ricevute da un computer locale o da una rete locale. Mentre un agente è occupato, non tenta di eseguire attività dal Cloud Network MQL5. Entro alcuni minuti dopo aver completato i calcoli locali, l'agente si mette in contatto con il nodo MQL5 Cloud Network più vicino e offre i suoi servizi. Pertanto, i tuoi agenti di test stanno lavorando sulla rete solo se non ne hai bisogno. E, naturalmente, gli agenti lavorano in rete secondo il set schedule.
Grazie a, la facilità di installazione e le impostazioni minime necessarie di MetaTrader 5 Agents Manager, migliaia di agenti di test sono disponibili nella rete in qualsiasi momento. Le statistiche generali degli agenti di MQL5 Cloud Network e delle attività completate sono disponibili nella pagina principale del progetto all'indirizzo https://cloud.mql5.com.
Eseguire il calcolo distribuito utilizzando gli agenti Cloud Network MQL5
Come per un'ottimizzazione convenzionale, è necessario impostare tutte le opzioni di testing ed i parametri di input dell'Expert Advisor. Prima di ciò, non dimenticare di specificare il tuo login MQL5.community nelle impostazioni del terminale e consentire l'utilizzo del Cloud Network MQL5. I quattro passaggi necessari sono mostrati nella figura seguente.
Fare click sul pulsante "Start" e il processo di ottimizzazione si avvia. Il terminale prepara un'attività per gli agenti di test, che include:
- un file Expert Advisor compilato con l'estensione EX5
- indicatori e librerie EX5 che sono abilitate utilizzando le direttive #property tester_indicator e #property tester_library (le DLL non sono assolutamente consentite nel cloud)
- file di dati necessari per il test, abilitati utilizzando la direttiva #property tester_file
- condizioni di test/ottimizzazione (nome dello strumento finanziario, intervallo di test, modalità di simulazione, ecc.)
- ambiente di trading (proprietà dei simboli, condizioni di trading, ecc.)
- l'insieme di parametri degli Expert Advisor che formano l'intero set di passaggi richiesti, ovvero le attività
Il terminale MetaTrader 5 comunica con i nodi del Cloud Network MQL5 e assegna a ciascun nodo un pacchetto separato di attività per eseguire passaggi specifici. Ogni nodo è in realtà un server proxy, poiché riceve un'attività e un pacchetto di passaggi e, quindi, inizia a distribuire tali attività agli agenti ad esso collegati. In questo caso, i file degli Expert Advisor, indicatori, librerie e file di dati non vengono memorizzati sugli hard disk dei server del Cloud Network MQL5.
Inoltre, i file EX5 non vengono memorizzati sui dischi rigidi degli agenti cloud per motivi di riservatezza. I file di dati vengono salvati su un disco, ma dopo l'ottimizzazione i file di dati vengono eliminati.
Questa è l'intera procedura di comunicazione tra il tuo client terminal e il Cloud Network MQL5 - in realtà, invia pacchetti di attività alla rete e attende i risultati.
Sincronizzazione nel Cloud e Distribuzione della Cronologia agli Agenti
Ogni nodo del Cloud Network MQL5 conserva lo storico dei simboli richiesti e lo invia agli agenti ad esso collegati su richiesta. Se non ha una cronologia del simbolo XYZ del broker ABC, il nodo scarica automaticamente i dati della cronologia necessari dal tuo terminale. Pertanto, il tuo terminale dovrebbe essere pronto a fornire una storia del genere.
Ti consigliamo di eseguire un test singolo preliminare di una strategia sul tuo computer prima di inviarla al Cloud Network MQL5. Questo approccio fornisce automaticamente il download e la sincronizzazione di tutta la cronologia richiesta da un server di trading.
Di norma, su un computer moderno sono installati da 4 a 8 agenti, ma i dati cronologici sono archiviati in un'unica cartella nella directory di installazione MQL5 Strategy Tester Agent. Tutti gli agenti cloud installati da un gestore di agenti Strategy Tester MQL5 ricevono la cronologia da questa cartella. Se sono installati 8 agenti e sono tutti disponibili per il Cloud Network MQL5, la cronologia richiesta viene scaricata una sola volta. Ciò consente di risparmiare traffico e spazio sul disco rigido. Inoltre, è conveniente effettuare la sincronizzazione tra agenti cloud e nodi della rete informatica distribuita.
Pertanto, tutti gli agenti che eseguono l'ottimizzazione di una strategia di trading in un dato intervallo e su un dato simbolo sono automaticamente dotati della stessa cronologia sincronizzata e dello stesso ambiente di mercato.
Warming up
Come funziona l'ottimizzazione su un computer locale? Se hai 8 core, di solito sono disponibili 8 agenti locali predefiniti. Quando fai click su "Avvia", le attività vengono distribuite agli agenti locali, ciò che è richiesto viene scaricato (se necessario) e il processo ha inizio. In questo caso, l'ottimizzazione inizia quasi subito. Ma se distribuisci le attività al Cloud Network MQL5, la procedura cambia leggermente.
Gli agenti cloud non sono collegati in modo permanente ai gestori di rete; è tecnicamente ingiustificato e costoso per tutte le ragioni. Invece, gli agenti chiedono periodicamente ai server Cloud Network MQL5 se ci sono nuove attività per loro. Ciò accade abbastanza spesso da garantire la rapida mobilitazione del numero richiesto di agenti e abbastanza raro da non sovraccaricare il traffico di rete con tali messaggi. Quindi, quando esegui l'ottimizzazione, puoi vedere la crescita del numero di agenti che si collegano all'adempimento delle tue attività. Questo è il processo in tempo reale di come gli agenti cloud accedono al Cloud Network MQL5 e ricevono attività per determinati passaggi.
Se non ci sono attività, gli agenti contattano i manager molto raramente. Tuttavia, se arriva un ordine per calcolare migliaia (decine di migliaia) di attività, la situazione cambia. Possiamo dire che l'attività del Cloud Network MQL5 aumenta, e dopo aver completato l'attività, si riduce il numero di applicazioni degli agenti per le nuove attività. E se dopo aver completato un'attività, ad esempio dall'Europa, un ordine per altre attività arriva dall'Asia, la rete sarà pronta per un rapido avvio. Puoi chiamare questo comportamento della rete "warming up".
Così, il Cloud Network MQL5 è di nuovo pronta ad accettare nuovi compiti per eseguirli nel più breve tempo possibile.
Usa il Cloud Network MQL5!
La frase "Il tempo è denaro" diventa ancora più attuale con il passare degli anni e non possiamo permetterci di aspettare calcoli importanti per decine di ore o addirittura giorni. Al momento della stesura di questo articolo, il Cloud Network MQL5 fornisce un aumento dei calcoli di cento volte. Con il suo ulteriore aumento, il guadagno nel tempo può crescere fino a mille volte o anche più. Inoltre, la rete di calcolo distribuito consente di risolvere non solo le attività di ottimizzazione della strategia.
Puoi sviluppare un programma in MQL5 che implementa enormi calcoli matematici e richiede molte risorse della CPU. Il linguaggio MQL5, in cui sono scritti i programmi per il terminale MetaTrader 5, è molto vicino al C++ e permette di tradurre facilmente algoritmi scritti in altri linguaggi di alto livello.
Una caratteristica importante del tester del terminale MetaTrader 5 è che i compiti matematici difficili volti a trovare soluzioni con ampi set di variabili di input sono facilmente parallelizzati tra gli agenti di test. E non è necessario scrivere alcun codice speciale per questo: basta connettersi al Cloud Network MQL5 di calcolo distribuito!
Tradotto dal russo da MetaQuotes Ltd.
Articolo originale: https://www.mql5.com/ru/articles/341
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso