Errori, bug, domande - pagina 2557

 
Nikolai Semko:

Sì, schiantarsi è molto difficile. Meglio non correre rischi.
È tutta una questione di memoria, ovviamente.
Se si pulisce la memoria con l'aiuto delle mani come queste:

allora non si verifica nemmeno il crash. Almeno non è successo a me.
Ma quando il TF viene cambiato, gli array devono essere puliti automaticamente!

Non capisco, perché dovremmo occuparci della funzione Crash() se non lo fa, perché legge solo informazioni sugli indicatori.
Forse, l'esecuzione di questa funzione rallenta OnDeinit quando si cambia il TF, e quindi MT5 non ha il tempo di cancellare la memoria.
Ci sono problemi con la funzione asincrona OnDeinit per molto tempo. Non è buono! Il sistema non deve bloccarsi a causa dell'asincronia.

1) dovete troncare lo storione con INT_MAX(2 bn) qui:

CopyTicks(_Symbol,ticks,COPY_TICKS_ALL,(TimeCurrent()-Weeks*7*24*60*60)*1000,INT_MAX);

sistemeremo anche questo dalla nostra parte.

2) tutta la memoria deve essere gestita in modo molto rigoroso, nessun GC qui

3) la reinizializzazione dell'indicatore al cambio di timeframe è calda senza la reinizializzazione fisica da zero, quindi è necessario liberare la memoria da soli. soprattutto le risorse a livello globale

4) usate OOP, vi darà almeno la possibilità di descrivere e controllare correttamente le risorse

 

Ed ecco uno screenshot del caricamento del sistema durante lo scorrimento - il GP è quasi in uno stato morto - perché non si carica?


 
Aleksey Vyazmikin:

Sto parlando di un processore FX-8350 e una scheda grafica Radeon HD 7950. Non ho la sensazione che la scheda grafica sia caricata dalla MT5.

Tuttavia, è così. La scheda grafica ha un grande impatto sulla velocità di rendering, poiché è quella utilizzata per il rendering.

La tua domanda manca di informazioni sull'ambiente in cui avviene lo scorrimento.

Per esempio:

  • quanti indicatori, che tipo di indicatori sono - la complessità del rendering è completamente diversa
  • quanti programmi ci sono sul grafico
  • se i programmi reagiscono agli eventi, in particolare ai movimenti, al mouse, ecc - possono creare movimento nei loro thread
  • lo scorrimento verso il bordo sinistro del grafico, che provoca la paginazione automatica e la ricostruzione dei dati
  • numero di oggetti grafici nell'area visibile e in totale sul grafico, compresi quelli nascosti

Se la situazione è stabile, tutti i dati sono calcolati e non ci sono richieste indotte, allora la scheda video e la CPU sono responsabili del carico.


Dato che avete chiaramente detto "saltare al 100% su UN core, non su tutti i core", questa è una situazione perfettamente normale. Il computer fa il suo lavoro - carica il core selezionato e così facendo ha un utilizzo della CPU = 12,5% di tutti gli 8 core, non il 100%.

 
Renat Fatkhullin:

1) dovete troncare lo storione qui con INT_MAX(2 miliardi):

Correggeremo anche questo.

2) Tutta la memoria deve essere gestita in modo molto rigoroso, non c'è GC qui.

3) la reinizializzazione dell'indicatore al cambio di timeframe è calda senza la reinizializzazione fisica da zero, quindi è necessario liberare la memoria da soli. soprattutto le risorse a livello globale

4) usate OOP, vi darà almeno la possibilità di descrivere e controllare correttamente le risorse

Per continuare lo stesso argomento, guarda questo post - non è chiaro da dove vengono questi tick quando la borsa è chiusa - devo contattare il broker o la borsa?

Forum sul trading, sistemi di trading automatico e test di strategie di trading

MQL5 Proprie tempistiche

Aleksey Vyazmikin, 2019.09.07 09:50

Non so cosa fare con loro, non so cosa fare con loro, e non so se sono giusti... E durante la compensazione.



 
Aleksey Vyazmikin:

Ed ecco uno screenshot del carico del sistema durante lo scorrimento - il GP è quasi in uno stato morto - perché non viene caricato?

Quindi niente di serio gli viene trasmesso questa volta.

Ed ecco il mio test, su uno schermo completamente vuoto con scorrimento attivo: si può vedere chiaramente il picco di carico, è il monitoraggio interno di Windows 10


 
Renat Fatkhullin:

Tuttavia, lo fa. La scheda grafica ha una forte influenza sulla velocità di rendering, poiché è quella utilizzata per il rendering.

La tua domanda manca di informazioni sull'ambiente in cui avviene lo scorrimento.

Per esempio:

  • quanti indicatori, che tipo di indicatori - la complessità del rendering è totalmente diversa
  • quanti programmi ci sono sul grafico
  • se i programmi reagiscono agli eventi, in particolare ai movimenti, al mouse, ecc - possono creare movimento nei loro thread
  • lo scorrimento verso il bordo sinistro del grafico, che provoca la paginazione automatica e la ricostruzione dei dati
  • numero di oggetti grafici nell'area visibile e in totale sul grafico, compresi quelli nascosti

Se la situazione è stabile, tutti i dati sono calcolati e non ci sono richieste indotte, allora la scheda video e la CPU sono responsabili del carico.


Dato che avete chiaramente detto "saltare al 100% su UN core, non su tutti i core", questa è una situazione perfettamente normale. Il computer fa il suo lavoro - carica il core selezionato e così facendo ha un utilizzo della CPU = 12,5% di tutti gli 8 core, non il 100%.

Do informazioni sull'ambiente:

- Gli indicatori sono 16, il rendering non è complicato, senza kanvas, barre degli strumenti e altri fronzoli - bastoni/strisce - allego uno screenshot.

- Non ci sono programmi sul grafico, apro una finestra dopo optimizer, è come un esempio - anche i grafici di lavoro sono lenti, ma meno (ci sono meno indicatori).

- No, gli eventi non vengono elaborati.

- La modalità di visualizzazione delle barre illimitata è selezionata, cioè la paginazione è in un certo senso esclusa.

- Non ci sono oggetti grafici, o meglio ho rimosso tutte le frecce e i trattini. È rimasta un'etichetta - è quella dell'indicatore. Oggi ho un giorno libero e non dovrebbe interferire con esso.

Ho postato uno screenshot qui sopra che mostra che la scheda grafica non è inserita, c'è un modo per controllare se è inserita o è normale che il carico sia vicino allo zero e il core sia caricato?

Screenshot della piattaforma MetaTrader

Si Splice, M1, 2019.09.07

JSC '''Otkritie Broker'', MetaTrader 5, Real

Si Splice, M1, 2019.09.07, Broker Otkritie, MetaTrader 5, Reale


 
Renat Fatkhullin:

Quindi niente di serio gli viene trasmesso questa volta.

Ed ecco il mio test, su uno schermo completamente vuoto mentre si scorre attivamente: si può vedere chiaramente il picco di carico, questo è il monitoraggio standard di Windows 10


Quindi forse dovrebbe, ma non lo è - come fai a saperlo?

 

Mi sembra di aver spiegato tutto nei minimi dettagli e nei minimi particolari.

Il computer fa il suo lavoro. Tutto il lavoro costa risorse e si vede il consumo di queste risorse.

Cosa ti fa pensare che secondo te le risorse non dovrebbero essere consumate - non capisco.


Non so esattamente quali caratteristiche della GPU consideri MSI Afterburner. Ci sono molte caratteristiche là fuori e non sono affatto sicuro di quale sia il carico complessivo della GPU, piuttosto che qualche punto particolare.

La mia prova: la prendo e faccio scorrere la finestra del browser:

La situazione è esattamente la stessa quando si scorre un grafico in MetaTrader 5:


L'uso della scheda grafica da parte del terminale è provato.

Considerando il fatto che ho già passato 20 anni su progetti di terminali commerciali e la loro ottimizzazione, è strano non fidarsi delle mie parole.

 
Aleksey Vyazmikin:

Quindi forse dovrebbe, ma non lo è - come fai a saperlo?

Cambia il programma di test o ascolta qualcuno che è direttamente coinvolto nel problema in questione.
 
Renat Fatkhullin:

Mi sembra di aver spiegato tutto nei minimi dettagli e nei minimi particolari.

Il computer fa il suo lavoro. Tutto il lavoro costa risorse e si vede il consumo di queste risorse.

Cosa ti fa pensare che secondo te le risorse non dovrebbero essere consumate - non capisco.


Non so quali siano esattamente le specifiche della GPU giudicate da MSI Afterburner. Ci sono molte caratteristiche là fuori e non sono affatto sicuro di quale sia il carico totale sulla GPU, piuttosto che qualche punto particolare.

La mia prova: la prendo e faccio scorrere la finestra del browser:

La situazione è esattamente la stessa quando si scorre un grafico in MetaTrader 5:


L'uso del grafico da parte del terminale è provato.

Considerando il fatto che ho già passato 20 anni su progetti di terminali commerciali e la loro ottimizzazione, è strano non fidarsi delle mie parole.

Non si tratta di fidarsi di te! Sto solo supponendo che ci sia un problema con i driver o qualcosa del genere, anche se tutti i tipi di giochi 3D funzionano.

Il browser carica la scheda video, beh, non tutte le pagine ovviamente, ma con video clip e qualcosa di simile - ho controllato.

Ho anche controllato. Poi ho lanciato tutti gli indicatori costruiti in MT5 sul grafico di 40 indici e tutto scorre molto velocemente, il carico del nucleo è del 20%-25%.

Quindi il problema è in qualche indicatore che ho? Non capisco, ma è già calcolato. Per molti anni, ho chiesto qualche manager da implementare, che cosa sarebbe l'utente potrebbe vedere quale programma/indicatore/script sul grafico, quanto tempo di CPU sarebbe molto conveniente.

Motivazione: