Seconds Tick and Range Charts MT5
- Utilità
-
Quoc Dat Quach
Software engineer with 8 years in fintech and mobile, writing MQL4/MQL5 since 2017. I build Expert Advisors, indicators, trade and risk-management panels and utilities for MT4/MT5, and I trade forex and gold on MT5 myself. - Versione: 1.0
- Attivazioni: 10
Barre di secondi (da 1 a 30 secondi), barre di tick e barre di range per MetaTrader 5, costruite dallo storico dei tick reali del broker come simbolo personalizzato e aggiornate a ogni tick. Sul grafico può girare qualsiasi indicatore, template o EA. Un aiuto visivo sul grafico mostra l'ora reale di ogni barra. L'EA non fa mai trading su un grafico.
Cosa fa
Applica l'EA al grafico di un simbolo del broker. L'EA:
- crea un simbolo personalizzato, per esempio EURUSD_S5, con le specifiche del simbolo sorgente
- costruisce il suo storico dai tick reali del broker, per impostazione predefinita gli ultimi 3 giorni, a blocchi (nei test 3 giorni di BTCUSDm, 376.095 tick, hanno richiesto 2,0 s)
- apre il grafico personalizzato, con il tuo template se ne indichi uno
- aggiunge al grafico personalizzato ogni nuovo tick della sorgente appena arriva
- rilegge dal terminale ogni nuova barra alcune volte al secondo (misurato in MetaTrader 5 build 6230: le barre che il terminale costruisce dai tick live possono andare perse quando nessun grafico o programma le legge; letture regolari lo impediscono)
- controlla le barre rispetto allo storico dei tick del broker ogni 60 secondi e conta i tick che il simbolo personalizzato contiene per esse
- quando riparte su un grafico personalizzato esistente (per esempio dopo un riavvio del terminale), verifica che le barre dell'ultima parte dello storico ci siano tutte prima di continuare
- se una barra resta errata, ricostruisce l'intero simbolo personalizzato dallo storico dei tick, dallo stesso primo tick: l'unica riparazione che è stata esatta in ogni test (misurato in build 6230: scrivere singole barre o cancellare parte di un simbolo personalizzato che riceve tick live può far perdere al terminale altre barre o tick)
Tipi di grafico
- Barre di secondi (Seconds bars): 1, 2, 3, 4, 5, 6, 10, 12, 15, 20 o 30 secondi. Una barra contiene i tick di un intervallo. Un intervallo senza tick non ha barra, così come un minuto senza tick non ha barra su M1.
- Barre di tick (Tick bars): una nuova barra ogni N tick.
- Barre di range (Range bars): una nuova barra si apre quando il prezzo successivo renderebbe l'escursione massimo-minimo della barra maggiore di N punti, quindi nessuna barra supera N punti. Quando il prezzo salta, la nuova barra si apre al nuovo prezzo; per il salto non vengono disegnate barre di riempimento.
Le barre sono disegnate dal prezzo Bid. Il volume tick di una barra è il numero di tick che contiene.
Più copie possono girare contemporaneamente, un EA per simbolo personalizzato: per esempio barre di 5 secondi di EURUSD su un grafico e barre di range di 200 punti di XAUUSD su un altro. Un secondo EA per lo stesso simbolo personalizzato non si avvia e ne indica il motivo sul suo pannello.
Ogni tick in esattamente una barra
Il simbolo personalizzato riceve i tick stessi del broker, non una copia delle barre. Nei test le barre sono state confrontate con una ricostruzione indipendente dallo storico dei tick del broker:
- la somma dei volumi tick è uguale al numero dei tick sorgente
- ogni barra (apertura, massimo, minimo, chiusura e volume tick) è uguale alla ricostruzione
- per le barre di secondi, nessun intervallo senza barra conteneva tick sorgente
In un test di 75 minuti con 10 simboli personalizzati contemporaneamente (barre di 1, 2 e 5 secondi, barre di 20, 50 e 100 tick, barre di range di 200 e 1000 punti; 2.537.558 tick in tutto), tutte e tre le condizioni sono state rispettate per ogni simbolo, anche per i simboli ricostruiti dopo che il terminale era rimasto bloccato per 2 minuti.
Vuoti sui grafici a secondi: su BTCUSDm (circa un tick al secondo di sabato) il grafico a 1 secondo aveva 81.920 barre per 121.859 tick. Ogni intervallo di 1 secondo senza barra è stato controllato rispetto ai tick del broker e non ne conteneva nessuno. Un vuoto su un grafico a secondi è un periodo in cui il broker non ha inviato alcun tick, non una barra persa.
La scala temporale (da leggere)
MetaTrader 5 non ha timeframe inferiori a un minuto, e un grafico personalizzato è sempre disegnato sulla scala temporale M1. Quindi ogni barra del grafico personalizzato occupa uno slot di un minuto, e le date sotto il grafico contano questi slot a partire da gennaio 1971: non sono l'ora dell'orologio. È l'unico modo in cui barre più brevi di un minuto possono esistere su un grafico MetaTrader 5.
L'EA aggiunge al grafico personalizzato un piccolo aiuto visivo che mostra l'ora reale (ovunque in questa descrizione, ora reale significa l'ora del server del broker, come sul grafico del simbolo del broker stesso):
- Last bar: (ultima barra) ora di inizio al millisecondo, durata e numero di tick
- Cursor bar: (barra sotto il cursore) le stesse informazioni per la barra sotto il mouse
- una seconda scala temporale con le ore reali, sopra quella del grafico
- se il grafico viene aggiornato: "Live: updated on every tick of EURUSD", "Building history from real ticks: 40.0%", "Waiting for the connection to the trade server", "Checking the bars after the start (up to 60 s)", "Not updating for 12 s: check the EA on the EURUSD chart" o "Not updating: no EA builds EURUSD_S5 now"
Tieni il grafico personalizzato su M1: una barra M1 corrisponde a una barra di secondi, di tick o di range. Un timeframe superiore unisce più barre.
Velocità
Misurato in un test di 75 minuti con 10 EA e 8 grafici personalizzati contemporaneamente in un solo terminale: il tempo dal momento in cui un indicatore sul grafico sorgente ha visto un tick al momento in cui un indicatore sul grafico personalizzato lo ha visto. BTCUSDm era live su un conto demo. L'oro e l'indice Nasdaq erano chiusi (sabato), quindi i loro grafici sono stati alimentati con i tick reali del venerdì al loro ritmo reale, fino a 61 tick al secondo.
| Grafico personalizzato | Tick al secondo | Mediana | 99% dei tick entro | Più lento |
|---|---|---|---|---|
| BTCUSDm, barre di 5 secondi (live) | 1 | 0,2 ms | 30 ms | 262 ms |
| BTCUSDm, barre di 1 secondo (live) | 0,9 | 0,3 ms | 35 ms | 262 ms |
| BTCUSDm, barre di 50 tick (live) | 1 | 0,2 ms | 32 ms | 281 ms |
| Oro, barre di 1 secondo (replay) | 12 | 0,4 ms | 65 ms | 173 ms |
| Oro, barre di 100 tick (replay) | 12 | 0,3 ms | 111 ms | 140 ms |
| Nasdaq, barre di 5 secondi (replay) | 61 | 0,6 ms | 40 ms | 1,7 s (*) |
| Nasdaq, barre di range di 1000 punti (replay) | 61 | 0,8 ms | 41 ms | 2,5 s (*) |
(*) Nei 2 minuti successivi al blocco del terminale per 2 minuti: i tick ritardati sono arrivati tutti insieme e l'EA ha ricostruito il simbolo. In tutti gli altri momenti il tick più lento ha impiegato 142 ms e 156 ms. Nei 75 minuti il terminale ha usato in totale circa un core di CPU e da 680 a 703 MB di memoria, senza rallentamenti tra i primi e gli ultimi 10 minuti.
Il pannello sul grafico sorgente mostra, mentre l'EA è in esecuzione, il tempo di scrittura dell'EA stesso per evento tick, mediana e 99° percentile (mediana di 0,03 ms nel test).
Perdita di connessione, riavvio e modifiche
Misurato nello stesso test di 75 minuti, nei riavvii del terminale che lo hanno seguito e in un test separato di modifiche dei parametri:
- Terminale bloccato per 2 minuti: alla ripresa ha segnalato la perdita e il ripristino della connessione al server di trading. Entro 15 secondi gli EA hanno trovato 4 simboli personalizzati con barre o tick mancanti e li hanno ricostruiti (da 0,2 a 2,4 s ciascuno). Dopo, tutti i 10 simboli hanno superato il controllo descritto sopra. Un'interruzione di rete di diversi minuti non è stata testata.
- Timeframe del grafico sorgente modificato (da M1 a M5 e ritorno): l'EA ha continuato dall'ultima barra, senza ricostruzione.
- Parametri modificati tramite un template con altri parametri: l'EA ha continuato dall'ultima barra.
- Tipo di grafico modificato con l'EA in esecuzione (da barre di 5 secondi a barre di 50 tick e ritorno): ha costruito il nuovo simbolo personalizzato e ha lasciato al suo posto il vecchio grafico; tornato alle barre di 5 secondi dopo 91 s, ha continuato il vecchio simbolo e aggiunto i tick di quei 91 s. Entrambi i simboli hanno superato il controllo descritto sopra.
- Grafico sorgente chiuso per 3 minuti: l'aiuto visivo mostrava "Not updating: no EA builds BTCUSDm_S1 now". Quando il grafico è stato riaperto con l'EA, questo ha continuato dall'ultima barra e i tick di quei 3 minuti erano sul grafico 0,34 s dopo.
- Terminale chiuso e riavviato 7 volte (chiuso da 3 secondi a circa 1,5 minuti): 40 dei 51 avvii dell'EA hanno continuato dalle loro ultime barre. 11 hanno trovato barre mancanti (scartate dal terminale, vedi i limiti), hanno atteso i 60 secondi (con la versione finale l'aiuto visivo nel frattempo mostra "Checking the bars after the start") e hanno ricostruito i loro simboli (da 0,2 a 1,3 s ciascuno). Dopo 5 dei 7 avvii il terminale ha scartato, qualche minuto più tardi, barre del simbolo senza grafico aperto; l'EA se n'è accorto al controllo successivo e ha ricostruito il simbolo (in 2 test il test è terminato prima di quel controllo).
- Un secondo EA per lo stesso simbolo personalizzato non si è avviato, nemmeno in 7 avvii del terminale, quando tutti gli EA del terminale si avviano insieme.
Rimuovendo l'EA, il simbolo personalizzato e il suo grafico restano al loro posto. Applicalo di nuovo con le stesse impostazioni e continuerà dall'ultima barra, dopo aver verificato che le barre precedenti ci siano tutte (in caso contrario, ricostruisce lo storico da solo).
Parametri di input
| Parametro | Predefinito | Significato |
|---|---|---|
| Chart type | Seconds bars | Seconds bars, Tick bars, Range bars |
| Seconds bars: seconds per bar | 5 seconds | 1, 2, 3, 4, 5, 6, 10, 12, 15, 20 o 30 |
| Tick bars: ticks per bar | 100 | Da 1 a 100.000 |
| Range bars: range of a bar in points | 100 | Punti del simbolo sorgente |
| Source symbol | vuoto | Vuoto = il simbolo del grafico a cui è applicato l'EA |
| Days of real tick history to build | 3 | Da 0,01 a 60, usato quando viene costruito il simbolo personalizzato. Lo storico dei tick del broker può essere più breve. Un nuovo valore non ricostruisce un simbolo personalizzato esistente: per farlo, imposta una volta su true il parametro successivo |
| Build the history again at start | false | Altrimenti continua dall'ultima barra quando il tipo di grafico, la sua impostazione e la sorgente sono gli stessi |
| Custom symbol name | vuoto | Vuoto = automatico, per esempio EURUSD_S5, EURUSD_T100, EURUSD_R100 |
| Open the custom chart | true | |
| Template for the custom chart | vuoto | Un template da MQL5\Profiles\Templates, applicato all'apertura del grafico |
| Show the real time of the bars on the custom chart | true | L'aiuto visivo descritto sopra |
| Close the custom chart when the EA is removed | false | |
| Tester only: open and close sample positions | true | Vedi sotto |
Tester di Strategia
MetaTrader 5 non consente simboli personalizzati né nuovi grafici nel Tester di Strategia (misurato: entrambi vengono rifiutati con l'errore 4014). Nel tester l'EA costruisce quindi le stesse barre in memoria, con lo stesso codice, dai tick che il tester gli fornisce, e in modalità visuale le disegna in una sottofinestra sotto il grafico del tester. Alla fine di un'esecuzione scrive quante barre ha costruito e che ogni tick è in esattamente una barra. Usa "Every tick based on real ticks" per vedere le barre costruite dai tick reali del broker.
Solo nel Tester di Strategia l'EA apre e chiude anche una breve serie di posizioni di esempio, perché il Market verifica che un Expert Advisor faccia trading:
- volume minimo, una posizione alla volta, fino a 30 posizioni
- il margine libero viene controllato prima di ogni nuova posizione; con denaro insufficiente scrive una nota e non invia nulla
Le posizioni di esempio non sono una strategia di trading e i loro risultati non dicono nulla sul profitto. Su un grafico live o demo l'EA non invia, non modifica e non chiude mai alcun ordine.
Limiti (da leggere prima dell'acquisto)
- La scala temporale conta slot, non l'ora dell'orologio. Vedi "La scala temporale" sopra. Gli indicatori che usano l'ora di una barra (sessioni, pivot giornalieri, filtri orari) vedono sul grafico personalizzato gli orari degli slot, non gli orari reali.
- La quotazione del simbolo personalizzato è indietro di un tick. Misurato: quando un indicatore o EA sul grafico personalizzato viene chiamato per un nuovo tick, le barre e lo storico dei tick del simbolo personalizzato lo contengono già, ma la quotazione del simbolo personalizzato (Osservatorio del mercato (Market Watch), SymbolInfoTick, la linea Bid sul grafico) mostra il tick precedente finché non viene aggiunto il successivo. Sono stati provati sette modi per aggirarlo in MetaTrader 5 build 6230 e nessuno ha funzionato. Un indicatore o EA sul grafico personalizzato dovrebbe leggere i prezzi dalle barre (la chiusura dell'ultima barra è il tick più recente).
- I simboli personalizzati non si possono negoziare. Un EA che gira sul grafico personalizzato deve inviare i suoi ordini per il simbolo del broker.
- Solo grafici Bid. I simboli che il broker disegna in base al prezzo Last (azioni e future di borsa) vengono rifiutati con un messaggio sul pannello.
- La profondità dello storico dipende dal broker. La prima costruzione scarica lo storico dei tick del broker; i broker lo conservano per un tempo limitato. Uno storico lungo di barre brevi può superare l'impostazione "Max bars in chart" del terminale (Strumenti, Opzioni, Grafici); il grafico mostra allora solo le barre più recenti. I controlli dell'EA rileggono al massimo metà di quell'impostazione, quindi un valore basso fa solo sì che esaminino meno barre (testato con 5.000 e un grafico a 1 secondo di circa 80.000 barre: nessuna ricostruzione in più in 8 minuti).
- Le barre di secondi hanno spazio per un tempo limitato. Gli slot devono restare nel passato: un grafico a 1 secondo ha spazio per circa 339 giorni di barre dal suo inizio, un grafico a 5 secondi per circa 4,6 anni. Quando lo spazio è esaurito, l'EA ricostruisce lo storico da solo.
- Tieni l'EA in esecuzione mentre usi il grafico personalizzato. Misurato in build 6230: quando l'EA veniva rimosso o il terminale riavviato, il terminale a volte scartava le barre della parte più recente di un simbolo personalizzato (fino a un giorno di slot, 1.440 barre) pur conservando i tick. Un grafico lasciato aperto senza l'EA mostra allora un vuoto. Quando l'EA riparte, se ne accorge e ricostruisce il simbolo. Dopo un riavvio il grafico può mostrare un vuoto simile fino a circa un minuto: l'EA attende fino a 60 secondi che il terminale carichi le barre (l'aiuto visivo mostra allora "Checking the bars after the start") e, se mancano ancora barre, ricostruisce il simbolo (da 0,2 a 1,3 s nei test). Nei test il terminale ha anche scartato barre qualche minuto dopo un riavvio, con l'EA in esecuzione: l'EA se n'è accorto con i suoi controlli (ogni 60 secondi; in tre test la riparazione è arrivata 74 secondi dopo che il verificatore del test stesso aveva visto il vuoto) e ha ricostruito il simbolo; un simbolo senza grafico aperto può mantenere il vuoto fino a quel controllo o fino all'avvio successivo. È successo soprattutto su un simbolo personalizzato senza grafico aperto.
- Una riparazione svuota e riempie di nuovo l'intero simbolo personalizzato. Quando un controllo trova una barra errata o mancante, l'EA cancella i tick e le barre del simbolo personalizzato e li riscrive dallo stesso primo tick (da 0,2 a 2,4 s nei test). Indicatori ed EA sul grafico personalizzato vedono lo storico sparire e ricomparire durante quel tempo.
- Un EA per simbolo personalizzato, e occupa lo slot EA del suo grafico: applicalo a un grafico libero del simbolo sorgente, non al grafico di un EA di trading.
- Niente Tester di Strategia sul simbolo personalizzato. Misurato in build 6230: il tester fornisce i tick del simbolo personalizzato ma costruisce solo una parte delle sue barre o nessuna (1.324 e 0 su 4.316 barre M1 in due test), quindi un EA che ha bisogno delle barre non può essere testato su di esso. Testa un EA di questo tipo sul simbolo del broker.
- Ambiente testato:
- solo MetaTrader 5 build 6230, Windows 10, uno schermo 3840 x 2160 a 288 dpi
- un conto demo presso un broker CFD retail: BTCUSDm ed ETHUSDm live, tick del venerdì di XAUUSDm e USTECm riprodotti al loro ritmo reale (test del sabato); storico di EURUSDm, XAUUSDm e USTECm per gli screenshot
- Tester di Strategia: conti demo netting e hedging del server demo della piattaforma, EURUSD, GBPUSD, XAUUSD
- test più lungo 75 minuti; non testato su altri broker, conti con denaro reale o MQL5 VPS
- Provalo prima con la demo gratuita nel Tester di Strategia. La demo mostra le barre solo in una sottofinestra del tester (vedi "Tester di Strategia" sopra); il grafico personalizzato su un conto live o demo richiede la versione completa.
