![L'algoritmo di generazione dei ticks all'interno del tester di strategia del terminale MetaTrader 5](https://c.mql5.com/i/articles/overlay.png)
L'algoritmo di generazione dei ticks all'interno del tester di strategia del terminale MetaTrader 5
Creazione di Expert Advisors - sistemi di trading automatizzati in MQL5
Il terminale MetaTrader 5 contiene un ambiente di sviluppo integrato per lo sviluppo di strategie completamente automatizzate (robot di trading), che possono eseguire il trading senza alcun intervento umano. Un altro nome per questi robot di trading è Expert Advisors. Gli Expert Advisor e gli indicatori tecnici per il terminale MetaTrader 5 sono scritti utilizzando il linguaggio MQL5, che racchiude tutti i vantaggi dei moderni linguaggi di programmazione.
- velocità di esecuzione;
- supporto della programmazione orientata agli oggetti (OOP);
- possibilità di eseguire il debug.
La possibilità di eseguire il debug dei programmi in MQL5 consente di creare un codice con il massimo livello di sicurezza possibile, ma sebbene necessario, questa non è l'unica condizione richiesta per lo sviluppo di un sistema di trading redditizio. I sistemi di trading, che sono in grado di dimostrare risultati positivi attraverso un ampio intervallo di dati storici, sono chiamati robusti, che deriva dalla parola inglese "robust", che significa tollerante a guasti ed errori.
Prova delle strategie di trading
Prima di affidare il tuo capitale a un Expert Advisor, devi assicurarti che le sue regole per l'apertura e la chiusura delle posizioni, così come le regole di gestione del denaro, consentano l'aspettativa di profitto. Il modo più semplice per testarlo è simulare il lavoro dell'Advisor utilizzando i dati storici disponibili.
Il terminale client MetaTrader 5 ha uno speciale componente integrato, un tester di strategia per ottenere risultati del lavoro dell'Advisor con dati storici. Il processo di esecuzione una tantum dell'Expert Advisor in un intervallo di date è chiamato test dell'Expert Advisor. Questo test una tantum ci fornisce una grande quantità di informazioni utili, necessarie per trarre conclusioni sulla robustezza dell'Expert Advisor.
Ma per essere in grado di fidarsi di questi risultati, il processo di test deve modellare l'ambiente corrente effettivo, in cui viene eseguito l'Expert Advisor, il più vicino possibile. Il tester MetaTrader 5 utilizza un tick by tick modellando i prezzi, utilizzando i valori storici degli spread per ogni strumento, su cui avviene un'operazione di trading.
Un po 'di storia sul tester di strategia
MetaTrader 3
- Modello di quattro prezzi - il prezzo ha attraversato consecutivamente le fasi di Open, Low, High e Close per la candela rialzista, e per la candela ribassista ha attraversato Open, High, Low e Close;
- Il modello "Ogni 1 punto" - utilizza un modello d'onda 3-5-3, in cui il prezzo passa consecutivamente attraverso una onda a tre, poi una a cinque onde e poi un'altra onda a tre, con un incremento di 1 punto;
- Modello "Spread / 2" - utilizza lo stesso modello di "Ogni punto", ma l'incremento del prezzo è la metà dello spread, indicato dall'utente.
La modellazione dei prezzi è sempre stata basata sulle barre del periodo di tempo testato, le informazioni provenienti da intervalli di tempo inferiori non sono state utilizzate. Il tester del terminale MetaTrader 3 aveva molte carenze, tra cui la bassa velocità di test, la bassa precisione e la mancanza di ottimizzazione di Expert Advisor da parte dei parametri di input.
MetaTrader 4
Il terminale MetaTrader 4 ha sostituito il terzo terminale e ha incluso un nuovo linguaggio compilato MQL4 (il precedente MQL-II è stato interpretato), oltre ad aver adottato un approccio assolutamente nuovo ai test. Ora i test potrebbero essere eseguiti in tre modalità:
- Ogni tick (Every Tick) - generazione di tick all'interno della candela, consente una modellazione massima ravvicinata del lavoro di Expert Advisor al trading reale, all'interno dell'ambiente di test;
- Checkpoint (punti di controllo) - un compromesso tra precisione e velocità di test;
- Aprendo i prezzi (Open Price) - il lancio dell'Expert Advisor viene effettuato solo all'apertura della candela, questo consente una valutazione molto rapida della strategia.
Una differenza importante rispetto al tester del terzo terminale era che la strategia di test del terminale MetaTrader 4 utilizzava i dati di prezzo del più giovane intervallo di tempo disponibile per la simulazione di trading. Pertanto, con la presenza della cronologia dei minuti, durante l'intervallo testato, i risultati del test sono massimamente vicini ai risultati ottenuti online. In assenza dei tempi sottostanti, la simulazione dell'andamento dei prezzi all'interno della barra viene generata allo stesso modo del terminale tester di MetaTrader 3.
Inoltre, abbiamo acquisito l'opportunità di eseguire l'ottimizzazione mediante enumerazione diretta dei parametri di input, nonché utilizzando un algoritmo genetico. Questo ci ha dato l'opportunità di accelerare significativamente il processo di ottimizzazione, soprattutto per le strategie con un gran numero di parametri di input. Ora è possibile condurre il test effettivo nel regime visivo. Questo è stato un passo enorme, che è stato apprezzato dai commercianti.
Il nuovo terminale MetaTrader della 5a generazione si basa sull'esperienza acquisita dalla progettazione dei terminali precedenti, e questo vale per il tester di strategia. Ora c'è l'opportunità di condurre test di strategie multi-valuta, cioè strategie che vengono scambiate contemporaneamente su più strumenti.
L'ottimizzazione della strategia può ora essere condotta non solo su tutti i core del processore disponibili, ma anche su agenti remoti, situati su altri computer nella LAN e nella rete Internet globale. Ciò consente di sviluppare le potenze del tester ed eseguire calcoli cloud, che in precedenza erano inaccessibili, direttamente nel linguaggio di MQL5.
Ma per una comprensione di base del processo di test nel terminale MetaTrader 5, è fondamentale essere in grado di capire come avviene la modellazione dei prezzi in un tester strategico.
Algoritmo di generazione dei tick
Strategy Tester del terminale MetaTrader 5 utilizza solo una modalità di modellazione dei prezzi nei test: la generazione di tick sulla base di dati storici esistenti su intervalli di tempo minuti dei simboli utilizzati. Le restanti modalità di simulazione in MetaTrader 4 sono state rimosse perché, nonostante la loro alta velocità, non sono riuscite a fornire un'elevata precisione di test.
L'utilizzo di un intervallo di tempo M1 nel tester, consente una simulazione molto accurata del movimento dei prezzi, con un numero minimo di errori, in contrasto con la simulazione dei tick basata su intervalli di tempo senior. Di conseguenza, gli errori nella modellazione dei prezzi nel tester di strategia MetaTrader 5 sono banali e le differenze tra il prezzo simulato e il prezzo che ha avuto luogo nella realtà, possono essere solo all'interno della scala di una barra dei minuti.
La possibilità di eseguire l'ottimizzazione su agenti locali e remoti, in questo approccio, può compensare l'aumento dei tempi di test. La generazione di tick si basa sulle voci di minuti memorizzate nella cache in un formato intero. Pertanto, la generazione di tick viene effettuata molto rapidamente.
Le barre di tutti gli intervalli di tempo richiesti si formano nel database storico del tester nel solito modo (proprio come nel terminale client) con la ricezione dei tick generate. Il volume 1 del segno di spunta della barra dei minuti non è soggetto ad alcuna generazione - può essere scritto con un valore di Chiudi.
Anche una barra con 2 tick non viene generata: prima il suo valore di tick viene registrato come Open, quindi viene registrato un tick con un valore di Close.
Una barra con 3 tick viene generata secondo uno schema, per le barre a tre tick ci sono solo 4 modelli di sviluppo della barra:
- Andò in una direzione e tornò al livello di Open
- Andò da un lato, cadde indietro e raggiunse un livello Open
- È andato in una direzione, è caduto indietro, ma non ha raggiunto il livello di Open
- Diversi punti in una direzione
Punto di supporto
Se la barra ha più di 3 tick, vengono generati prima i punti di supporto. Il numero di punti di supporto non può essere maggiore del volume del segno di spunta. Il prezzo di apertura non è incluso nel conteggio del numero di punti di supporto, poiché è il punto di partenza. Numero massimo di punti di supporto - 11.
I punti di supporto sono distribuiti tra l'ombra di apertura, la scala della candela e l'ombra della candela di chiusura.
A seconda del numero di tick, la distribuzione dei punti di supporto è la seguente (ombra di apertura - lo scopo della candela - chiusura dell'ombra):
3 - 5 - 3Se la candela non ha una delle ombre, i punti di supporto di queste ombre sono dati alla grandezza delle candele.
2 - 6 - 2
2 - 5 - 2
2 - 4 - 2
2 - 3 - 2
1 - 4 - 1
1 - 3 - 1
1 - 2 - 1
1 - 1 - 1
La portata della candela è generata da un numero dispari di punti di supporto. Se l'ambito ha un numero pari di punti di supporto, il punto "extra" viene assegnato a una delle ombre a condizione che l'ombra abbia già 2 punti. Altrimenti, il punto "extra" semplicemente scompare.
Per un orso (nero) la generazione di punti di supporto della candela sul modello 3-5-3 è simile:
Se la candela è un doji, cioè Chiudi == Apri, allora vengono analizzate le candele precedenti, se la candela precedente stava sorgendo, allora questo doji è considerato una candela verso il basso.
Se l'ombra viene generata utilizzando tre punti di supporto e valori interi 3 / 4 della dimensione dell'ombra e 1 / 2 della dimensione dell'ombra sono uguali (questo accade quando la differenza tra Aperto e Basso o Aperto e Alto non è maggiore di 2 punti), quindi la generazione dell'ombra cambia nel modo seguente:
Se l'ombra è generata da due punti di supporto, i punti di controllo sono disposti nel modo seguente:
Formazione di un terreno di punti di supporto da Basso ad Alto
Lo scopo della candela è generato da onde d'impulso, il numero di onde è calcolato come:
number of waves = (number of support points in the scope + 1) / 2.
Ad esempio, se il numero di punti di supporto nell'ambito della candela è uguale a 5 (Figura 3-5-3), verranno generate 3 onde = (5 +1) / 2.
Ogni onda d'impulso ha un passo di lunghezza in punti, che viene calcolato dalla formula:
step=(High-Low-1)/(quantity of waves)+1
Ad esempio, l'ambito delle candele (High - Low) = (1.3113 - 1.3100) = 0.0013 è 13 punti, mentre il passo della lunghezza d'onda = (13-1) / 3 +1 = 5 punti.
Dopo l'impulso, i punti di passo devono essere ripristinati di 1 punto. Più avanti nel ciclo vengono calcolate le posizioni dei punti di supporto (per una candela toro):
prev=low
cycle
n1=prev+step
n2=prev+step-1
prev=n2
dove:
- n1 - primo punto di appoggio d'impulso
- n2 - secondo punto di supporto - il punto di rollback.
Applichiamo questo algoritmo a una candela toro in uno schema 3-5-3, dove il numero di onde è uguale a 3 e il passo = 5 punti, punto = 0,0001:
- Primo passo. Variabile prec = Bassa = 1.3100, entra nel ciclo.
- Calcola i dati per la prima ondata
- Calcoliamo la posizione del punto n1 = prec + passo = 1,3100 + 5 * 0,0001 = 1,3105.
- Calcoliamo la posizione del punto n2 = prev + step-1 = 1.3100 + 5 * 0.0001-1 * 0.0001 = 1.3104;
- Assegnare il valore n2: prev = 1.3104 alla variabile prev;
- Calcola i dati per la seconda ondata
- Calcola la posizione del punto n1 = prec + passo = 1,3104 + 5 * 0,0001 = 1,3109.
- Calcoliamo la posizione del punto n2 = prev + step-1 + 5 = 1.3104 * 0.0001-1 * 0.0001 = 1.3108;
- Assegna il valore di n2: prev=1.3108 alla variabile prev;
- Calcola i dati per la terza ondata
- Calcoliamo la posizione del punto n1 = prec + passo = 1,3108 + 5 * 0,0001 = 1,3113.
- Esci dal ciclo, prec = n2 = 1.3112
Tutto quanto sopra è dimostrato per chiarezza sull'immagine:
Il calcolo dei punti di supporto per le candele ribassiste viene eseguito nello stesso modo:
prev=high
cycle
n1=prev-step
n2=prev-step+1
prev=n2
La generazione di tick viene effettuata in base ai punti di supporto
I ticks intermedi tra punti di riferimento vengono generati secondo le seguenti regole:- Se il numero di tick è maggiore del numero di punti tra i punti di supporto, viene generata una "sega".
- Se ci sono un numero di punti tra i punti di supporto, viene generata una sequenza lineare di tick.
Controlla la sequenza di tick
In conclusione, confrontiamo la cronologia dei tick, registrata dal server MetaQuotes-Demo il 13 maggio 2010 dalle 13:00 alle 13:30, con la sequenza tick generata dal tester nel terminale client MetaTrader 5. Un Expert Advisor è stato utilizzato per registrare i tick nel registro degli agenti:
//+------------------------------------------------------------------+ //| Write_Ticks.mq5 | //| Copyright Copyright 2010, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ input datetime start=D'2010.05.13 13:00:00'; input datetime end=D'2010.05.13 14:00:00'; //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { MqlTick tick; datetime time=TimeCurrent(); //--- SymbolInfoTick(Symbol(),tick); Print(time,tick.bid); //--- if(time>end) ExpertRemove(); //--- }
La storia dei tick è stata raccolta online, utilizzando l'indicatore descritto nell'articolo Creazione di indicatori di tick.
Entrambe le sequenze di tick - quella del tester e quella memorizzata in un file - sono rappresentate sul grafico. i tick ottenute durante il test sono rappresentate da un colore verde e i tick ottenute sul server di trading MetaQuotes-Demo e registrate nell'indicatore del file sono rappresentate da un colore blu.
Puoi puntare il mouse su qualsiasi punto del grafico e leggere le informazioni su ciascun segno di spunta nelle finestre pop-up:
- origine (Tester o Storia);
- tempo del segno di spunta;
- prezzo del segno di spunta.
Il grafico mostra chiaramente che la qualità dei tick di simulazione nel terminale client MetaTrader 5 del tester consente un adeguato test degli Expert Advisor sui dati storici.
Tradotto dal russo da MetaQuotes Ltd.
Articolo originale: https://www.mql5.com/ru/articles/75
![Come copiare il trading da MetaTrader 5 a MetaTrader 4](https://c.mql5.com/2/0/MetaTrader5_MetaTrader4_MQL5.png)
![Risultati dell’AppStore MetaTrader per il terzo trimestre del 2013](https://c.mql5.com/2/0/avatar3.png)
![Test rapidi delle idee di trading sul grafico](https://c.mql5.com/2/0/avatar__23.png)
![Come guadagnare con l’AppStore MetaTrader e i servizi di segnali di trading se non sei un venditore o un fornitore](https://c.mql5.com/2/0/mql5_share_avatar.png)
![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- 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