Non dovrebbe essere lento e dipendente dal server di trading.
Velocità di consegna: il terminale memorizza 4096 ultimi tick per ogni simbolo nella cache per un accesso rapido (per i simboli con statistica corrente - 65536 tick), le richieste a questi dati sono più veloci. Quando si richiedono i tick della sessione di trading corrente al di fuori della cache, CopyTicks() accede ai tick già memorizzati nella memoria del terminale, queste richieste richiedono più tempo per essere eseguite. Le più lente sono le richieste di tick per altri giorni, perché in questo caso i dati vengono letti dal disco.
Se i terminali sono sullo stesso disco, avete ragione.
Avete fatto diversi test? Sperimentate costantemente dei ritardi su un certo server? Solo nel caso in cui il disco fosse occupato con qualche altra operazione al momento del test...
Se i terminali sono sulla stessa unità, hai ragione.
Avete eseguito più test? La latenza è costantemente su un server particolare? Solo nel caso in cui l'unità fosse impegnata in qualche altra operazione al momento del test...
È riproducibile al 100%. Il terminale è lo stesso.
Come ottenere i tick nell'indicatore OnDeinit? Voglio ottenere dei tick, che esistono già nei file tkc e che sono dati quasi istantaneamente. Ma come determinare quali zecche ci sono e quali no?
Dietro tutta l'apparente attrattiva della semplicità di CopyTicks, ci sono in realtà delle insidie nascoste, che sono impossibili da evitare a causa della funzionalità limitata per il bene di questo appello esterno di nuovo.
Come ottenere i tick nell'indicatore OnDeinit? Voglio ottenere dei tick, che esistono già nei file tkc e che sono dati quasi istantaneamente. Ma come determinare quali zecche ci sono e quali no?
Dietro tutta l'apparente attrattiva della semplicità di CopyTicks, ci sono in realtà delle insidie nascoste, che sono impossibili da evitare a causa della funzionalità limitata per il bene di questo appello esterno di nuovo.
Alexey Kozitsyn: Perché ottenere i tick in OnDeinit()?
Devi creare un simbolo personalizzato e scriverci tutta la storia dei tick convertiti (da una certa data) che esiste già nei file tkc. Le zecche, che non sono sulla macchina, non sono interessanti. Pertanto, l'indicatore non dovrebbe rallentare in questo compito. Tuttavia, CopyTicks non permette di ricevere tick in questo modo.
MetaTester 5 started on 127.0.0.1:3000
initialization finished
login (build 1653)
template file tester.tpl added. 2398 bytes loaded
38520 bytes of account info loaded
1482 bytes of tester parameters loaded
188 bytes of input parameters loaded
3456 bytes of symbols list loaded
expert file added: Experts\Test4.ex5. 44667 bytes loaded
initial deposit 10000000.00 USD, leverage 1:500
successfully initialized
48 Kb of total initialization data received
Intel Core i7-2700 K @ 3.50 GHz, 16301 MB
EURUSD: symbol to be synchronized
EURUSD: symbol synchronized, 3464 bytes of symbol info received
EURUSD: history synchronization started
EURUSD: load 27 bytes of history data to synchronize in0:00:00.000
EURUSD: history synchronized from2016.01.04 to 2017.10.11
EURUSD: ticks synchronization started
EURUSD: load 34 bytes of tick data to synchronize in0:00:00.000
EURUSD: history ticks synchronized from2017.04.03 to 2017.10.10
EURUSD,M1: history cache allocated for667542 bars and contains 651824 bars from2016.01.0400:00 to 2017.09.2923:59
EURUSD,M1: history begins from2016.01.0400:00
EURUSD,M1 (MetaQuotes-Demo): generating based on real ticks
EURUSD,M1: testing of Experts\Test4.ex5 from2017.10.0100:00 to 2017.10.1100:00 started
EURUSD : real ticks begin from2017.04.0300:00:00
EURUSD : 2017.10.0100:00 - 2017.10.1100:00 last prices absent for7 whole days, bars built by bid prices
NZDUSD: symbol to be synchronized
NZDUSD: symbol synchronized, 3464 bytes of symbol info received
NZDUSD: history synchronization started
NZDUSD: load 27 bytes of history data to synchronize in0:00:00.000
NZDUSD: history synchronized from2016.01.04 to 2017.10.11
NZDUSD: ticks synchronization started
NZDUSD: load 34 bytes of tick data to synchronize in0:00:00.000
NZDUSD: history ticks synchronized from2017.10.02 to 2017.10.102017.10.0101:00:00 instant buy 1.00 NZDUSD at 0.72043 (0.72017 / 0.72043)
2017.10.0101:00:00 deal #2 buy 1.00 NZDUSD at 0.72043 done (based on order #2)
2017.10.0101:00:00 deal performed [#2 buy 1.00 NZDUSD at 0.72043]
2017.10.0101:00:00 order performed buy 1.00 at 0.72043 [#2 buy 1.00 NZDUSD at 0.72043]
2017.10.0101:00:00 CTrade::OrderSend: instant buy 1.00 NZDUSD at 0.72043 [done at 0.72043]
2017.10.0101:00:00true2017.10.0101:00:000
NZDUSD : real ticks begin from2017.10.0200:00:00
NZDUSD : 2017.10.0100:00 - 2017.10.1100:00 last prices absent for7 whole days, bars built by bid prices
Cioè non ci sono dati di spunta all'inizio sul personaggio di qualcun altro. E i tick sono generati nel database quando appare OnTick. È stato progettato in questo modo o le spunte per i personaggi alieni dovrebbero essere disponibili, così come per il simbolo principale del test?
Cosa significa questa citazione della Documentazione?
Примечание
La funzione CopyTicksRange() è progettata per richiedere i tick di un intervallo strettamente specificato, per esempio, per un giorno particolare nella storia. MentreCopyTicks()permette dispecificare solo la data di inizio, per esempio - per ottenere tutti i tick dall'inizio del mese al momento attuale.
[out] Cтатический или динамический массив MqlTick для приема тиков. Если в статический массив не вмещаются все тики из запрошенного интервала времени, то будет получено столько тиков, сколько помещается в массив. При этом функция сгенерирует ошибку ERR_HISTORY_SMALL_BUFFER (4407) . ERR_NOT_ENOUGH_MEMORY – не хватает памяти для получения...
CopyTicks funziona solo con i caratteri che sono inclusi nel Market Review. E questo è sempre stato logico prima dell'avvento dei simboli personalizzati.
I simboli personalizzati hanno un enorme campo di applicazione e non è sempre necessario che questi simboli siano richiesti nel Market Watch. Tuttavia, a volte è necessario ottenere una parte della storia dei tick tramite CopyTicks.
Pertanto, si prega di disabilitare il ritorno di errore CopyTicks per i simboli personalizzati se quello personalizzato non è selezionato in Market Watch.
Per i caratteri personalizzati, per scoprire il numero totale di tick, dovete usare CopyTicksRange(Symb, Ticks) ( più questo) e guardare la dimensione dell'array. Ma questo è molto dispendioso!
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Non dovrebbe essere lento e dipendente dal server di trading.
Se i terminali sono sullo stesso disco, avete ragione.
Avete fatto diversi test? Sperimentate costantemente dei ritardi su un certo server? Solo nel caso in cui il disco fosse occupato con qualche altra operazione al momento del test...
Se i terminali sono sulla stessa unità, hai ragione.
Avete eseguito più test? La latenza è costantemente su un server particolare? Solo nel caso in cui l'unità fosse impegnata in qualche altra operazione al momento del test...
È riproducibile al 100%. Il terminale è lo stesso.
Come ottenere i tick nell'indicatore OnDeinit? Voglio ottenere dei tick, che esistono già nei file tkc e che sono dati quasi istantaneamente. Ma come determinare quali zecche ci sono e quali no?
Dietro tutta l'apparente attrattiva della semplicità di CopyTicks, ci sono in realtà delle insidie nascoste, che sono impossibili da evitare a causa della funzionalità limitata per il bene di questo appello esterno di nuovo.
Come ottenere i tick nell'indicatore OnDeinit? Voglio ottenere dei tick, che esistono già nei file tkc e che sono dati quasi istantaneamente. Ma come determinare quali zecche ci sono e quali no?
Dietro tutta l'apparente attrattiva della semplicità di CopyTicks, ci sono in realtà delle insidie nascoste, che sono impossibili da evitare a causa della funzionalità limitata per il bene di questo appello esterno di nuovo.
Perché ottenere i tick in OnDeinit()?
Devi creare un simbolo personalizzato e scriverci tutta la storia dei tick convertiti (da una certa data) che esiste già nei file tkc. Le zecche, che non sono sulla macchina, non sono interessanti. Pertanto, l'indicatore non dovrebbe rallentare in questo compito. Tuttavia, CopyTicks non permette di ricevere tick in questo modo.
Risultato
Cioè non ci sono dati di spunta all'inizio sul personaggio di qualcun altro. E i tick sono generati nel database quando appare OnTick. È stato progettato in questo modo o le spunte per i personaggi alieni dovrebbero essere disponibili, così come per il simbolo principale del test?
Примечание
La funzione CopyTicksRange() è progettata per richiedere i tick di un intervallo strettamente specificato, per esempio, per un giorno particolare nella storia. Mentre CopyTicks()permette dispecificare solo la data di inizio, per esempio - per ottenere tutti i tick dall'inizio del mese al momento attuale.
CopyTicks funziona solo con i caratteri che sono inclusi nel Market Review. E questo è sempre stato logico prima dell'avvento dei simboli personalizzati.
I simboli personalizzati hanno un enorme campo di applicazione e non è sempre necessario che questi simboli siano richiesti nel Market Watch. Tuttavia, a volte è necessario ottenere una parte della storia dei tick tramite CopyTicks.
Pertanto, si prega di disabilitare il ritorno di errore CopyTicks per i simboli personalizzati se quello personalizzato non è selezionato in Market Watch.