MT5 e la velocità in azione - pagina 55

 
fxsaber:

Il compito è quello di forzare il terminale a liberare la memoria.

Controllato le mie ipotesi

Non libera la memoria, o meglio non libera la memoria completamente in una volta - libera la memoria per la variabile locale - classe/struttura , ma nella memoria terminale sarà una copia di tick


ogni Sleep(1000) - la memoria viene liberata SEMPRE dopo il 9° slittamento, cioè questa è una restrizione artificiale del salvataggio dei tick nel terminale, non in EA

Apparentemente, non c'è modo - solo se gli sviluppatori cambiano la logica di archiviazione per questi dati

 
fxsaber:
Un esempio di un EA che ucciderà la maggior parte dei VPS.

L'ho eseguito su MetaQuotes-Demo su un tablet Atomic con 4Gb di memoria - il risultato:

2020.10.13 22:43:51.219 0018 (USDJPY,H1)        CopyTicksRange(_Symbol,Ticks,COPY_TICKS_ALL,(long)inFrom*1000) = 1747129
2020.10.13 22:43:51.294 0018 (USDJPY,H1)        TerminalInfoInteger(TERMINAL_MEMORY_USED) = 913
2020.10.13 22:43:51.995 0018 (EURUSD,H1)        CopyTicksRange(_Symbol,Ticks,COPY_TICKS_ALL,(long)inFrom*1000) = 1976814
2020.10.13 22:43:52.071 0018 (EURUSD,H1)        TerminalInfoInteger(TERMINAL_MEMORY_USED) = 1335
2020.10.13 22:43:53.415 0018 (AUDUSD,H1)        CopyTicksRange(_Symbol,Ticks,COPY_TICKS_ALL,(long)inFrom*1000) = 1964168
2020.10.13 22:43:53.452 0018 (AUDUSD,H1)        TerminalInfoInteger(TERMINAL_MEMORY_USED) = 1465
2020.10.13 22:43:54.554 0018 (CHFJPY,H1)        CopyTicksRange(_Symbol,Ticks,COPY_TICKS_ALL,(long)inFrom*1000) = 1784317
2020.10.13 22:43:54.607 0018 (CHFJPY,H1)        TerminalInfoInteger(TERMINAL_MEMORY_USED) = 1483
2020.10.13 22:43:56.546 0018 (EURNZD,H1)        CopyTicksRange(_Symbol,Ticks,COPY_TICKS_ALL,(long)inFrom*1000) = 2729847
2020.10.13 22:43:56.611 0018 (EURNZD,H1)        TerminalInfoInteger(TERMINAL_MEMORY_USED) = 1483
2020.10.13 22:43:58.199 0018 (EURJPY,H1)        CopyTicksRange(_Symbol,Ticks,COPY_TICKS_ALL,(long)inFrom*1000) = 2288326
2020.10.13 22:43:58.278 0018 (EURJPY,H1)        TerminalInfoInteger(TERMINAL_MEMORY_USED) = 1484

Nessun disastro - Opera con più schede ci mette anche più tempo a caricare.

Cosa sto facendo di sbagliato?

 
A100:

L'ho eseguito su MetaQuotes-Demo su un tablet Atomic con 4Gb di memoria - il risultato:

Nessun disastro - Opera con più schede impiega più tempo a caricare.

Cosa sto facendo di sbagliato?

Non ci sono abbastanza zecche. Guarda il numero nei miei registri.

 
fxsaber:

Non ci sono molte zecche. Guarda la quantità nei miei registri.

Qualche strana funzione CopyTicksRange - ha aumentato il periodo di query molte volte, ma non vengono aggiunti tick e non vengono restituiti errori, GetLastError è zero dopo la query

 

Il periodo di interrogazione è stato impostato al 01.06.20 - come risultato, dopo aver riavviato il tablet e il terminale, il risultato è stato il seguente (solo le informazioni rilevanti sono state lasciate in uscita):

2020.10.14 04:03:31.203 0018 (EURGBP,H1)        Тиков=6855538, Памяти=2202
2020.10.14 04:03:35.271 0018 (EURCHF,H1)        Тиков=6385392, Памяти=2225
2020.10.14 04:03:41.031 0018 (EURAUD,H1)        Тиков=9317261, Памяти=2916
2020.10.14 04:03:44.068 0018 (CHFJPY,H1)        Тиков=6586851, Памяти=2528
2020.10.14 04:03:47.109 0018 (AUDUSD,H1)        Тиков=6214303, Памяти=2157
2020.10.14 04:03:50.634 0018 (EURUSD,H1)        Тиков=6946988, Памяти=2157
Il numero di zecche è paragonabile
 
Ho impostato il periodo dal 01.01.20, Sleep(15000). Risultato:
2020.10.14 04:21:30.297 0018 (EURGBP,H1)        Тиков=17354722, Памяти=6523
2020.10.14 04:21:40.916 0018 (AUDUSD,H1)        Тиков=13644101, Памяти=6525
2020.10.14 04:21:57.025 0018 (EURAUD,H1)        Тиков=21763832, Памяти=5520
2020.10.14 04:22:08.628 0018 (CHFJPY,H1)        Тиков=16150733, Памяти=4729
2020.10.14 04:22:19.463 0018 (EURUSD,H1)        Тиков=18471813, Памяти=3462
2020.10.14 04:22:29.411 0018 (EURCHF,H1)        Тиков=16227930, Памяти=2514

Solo un promemoria - ho 4Gb di memoria solo includendo la memoria video, cioè solo 3.9-1.7 è veramente libero e qui ho bisogno di 6.5 solo per il compito - e tutto è lento, ma funziona!

 

Per un lavoro di ticchettio di massa, mettete più memoria.

4gb (prezzo €20) non è neanche lontanamente buono nel 2020 quando si tratta di analisi e ricerca.

 

Rilasciata la beta 2652, di importanza:

  • correzioni nelle espressioni della Watch List del debugger
  • interruzione della compilazione migliorata (del 22%).
  • Accesso drasticamente accelerato a SymbolInfoTick
  • Miglioramenti nel rapporto del profiler
  • divieto di trading quando si lanciano Expert Advisors basati su frame nel tester
  • corretto il reset dei parametri quando si preme il pulsante "Reset" nei parametri dell'indicatore "Ichimoku Kinko Hyo".

 
Renat Fatkhullin:

Rilasciata la beta 2652, di importanza:

  • correzioni nelle espressioni della Watch List del debugger
  • Gli interrupt di compilazione sono migliorati (del 22%).
  • Accesso drasticamente accelerato a SymbolInfoTick
  • Miglioramenti nel rapporto del profiler
  • divieto di trading quando si lanciano Expert Advisors basati su frame nel tester
  • corretto il reset dei parametri quando si preme il pulsante "Reset" nei parametri dell'indicatore "Ichimoku Kinko Hyo".

Le variabili predefinite, per il tick corrente, sarebbero probabilmente migliori.


 
Signori prog...
Leggere prima l'allocazione della memoria nel computer, poi come e con quali mezzi viene fatta, poi come pulire e leggere da e verso non è difficile. Almeno sono possibili suggerimenti più ragionevoli per gli sviluppatori