![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Dopo una chiamata riuscita a CopyTicks offline, GetLastError restituisce 4403.
Lo farò tramite CopyTicksRange, ma il comportamento di CopyTicks sembra giusto da cambiare.
CopyTicks (build 1881) restituisce dati più vecchi di quelli richiesti, se non vengono richiesti tick freschi. Cioè restituisce dati più vecchi del parametro. Il bug è fluttuante - appare in momenti diversi, così ho scritto del piccolo codice che lo riproduce. L'ho eseguito nel tester su EURUSD H1, 2017.08.01 - 2018.08.01.
Ecco l'output:
2018.10.17 21:31:26.221 2017.08.01 12:00:00 dt[0]=2017.08.01 03:00:00
2018.10.17 21:31:26.221 2017.08.01 12:00:00 cnt=2000
2018.10.17 21:31:26.221 2017.08.01 12:00:00 ERROR: i=0, ticks[i].time_msc=1501552175606 (2017.08.01 01:49:35)
Cioè abbiamo richiesto dalle 03:00 e ricevuto dalle 01:49. In condizioni reali, la differenza era più di un mese.
Ecco una domanda per gli esperti. Quali potenziali errori possono esserci con questo metodo per ottenere zecche fresche?
L'ordine delle zecche con lo stesso tempo non è garantito, sembra.
Forum sul trading, sistemi di trading automatico e test di strategie di trading
Ticchettii in tempo reale
Andrey Khatimlianskii, 2020.01.31 14:40
A proposito, c'èun eccellente articolo di Vasily Sokolov sulla corretta raccolta delle zecche. Lì in dettaglio è il processo di sincronizzazione analogica (che non ho, per cui a volte vengono stampati gli stessi tick):
Ma la funzione CopyTiks non permette di richiedere N ultimi tick. Invece fornisce tutti i tick, che provengono dal momento specificato. Questo complica il compito. Dovremmo eseguire una query, ottenere un array di tick e confrontarlo con un array di tick, ricevuto nell'aggiornamento precedente. Allo stesso tempo, scopriremo quali zecche appena arrivate non fanno parte della "fornitura precedente", cioè sono nuove. Ma è impossibile confrontare direttamente le zecche tra di loro, semplicemente perché non ci possono essere differenze visibili tra di loro. Per esempio, guardiamo la tabella delle offerte qui sotto:
Figura 5. Tabella di tutti gli accordi con un esempio di accordi identici.
Vediamo immediatamente due gruppi di zecche assolutamente identiche. Sono contrassegnati da cornici rosse, hanno lo stesso tempo, volume, direzione e prezzo. Così, vediamo che è impossibile confrontare le singole zecche tra loro.
Ma è possibile confrontareun gruppo di zecche. Se due gruppi di tick sono uguali tra loro, possiamo concludere che questi tick e i successivi sono già stati analizzati durante il precedente aggiornamento del prezzo.
L'ordine delle zecche con lo stesso tempo non è garantito, sembra.
Se stai parlando di gruppi di zecche, non sembra esserci nulla di sbagliato nel codice.
Risultato (eseguito a freddo - subito dopo l'avvio del terminale).
È possibile spegnere l'Expert Advisor, nulla cambierà in termini di consumo del terminale.