Teoria dell'accelerazione EA quando si usa un indicatore personalizzato (funzione - iCustom) - pagina 4

 
-Aleks-:

Ho capito, il problema è inventato.

Quando mi troverò di fronte a veri freni indicatori in un progetto reale, sarò pronto a continuare la discussione.

 
-Aleks-:

Un fatto triste per cinque, e gli sviluppatori non spiegano il sacro significato di questo?

A quanto pare, è una questione di architettura. Non ero interessato.

C'è stata una discussione su un argomento correlato qui - https://www.mql5.com/ru/forum/8278

Потребление памяти терминалом
Потребление памяти терминалом
  • www.mql5.com
Для чистоты эксперимента установил голый МТ5 в новую папку, открыл демо-счет на сервере MQ, закрыл все графики, установил "макс. - - Категория: общее обсуждение
 

Il principiante è entrato nel vivo, non avendo capito le basi del lavoro con gli indicatori ... ma le informazioni sono disponibili pubblicamente (articoli + documentazione).

Da qui un sacco di domande sbagliate e indovinelli...

Un altro link all'indicatore creato usando OpenCL. Il carico è sulla scheda video.

È vero, per ottenere una velocità di calcolo comparativa, il compito deve essere veramente "pesante"...

 
komposter:

A proposito, MT4 affronta molto bene il calcolo di solo una parte della storia e non consuma memoria per tutto il buffer, se il ciclo passa attraverso le ultime 1000 barre (anche se ci sono 50000 barre "nella finestra").

Tuttavia, ho riscontrato questo problema in MT5 - alloca la memoria per tutte le 50000 barre anche se vengono contate solo le ultime 100.

Sei sicuro di questo?

In entrambe le piattaforme i buffer degli indicatori sono allocati automaticamente e nello stesso modo per tutta la storia delle barre disponibili.

 
Renat:

Sei sicuro di questo?

In entrambe le piattaforme i buffer degli indicatori sono allocati automaticamente e in modo uguale per tutta la storia delle barre disponibili.

Non ho controllato nell'ultimo semestre, ma lo stesso indicatore con 1000 barre in MT4 e MT5 utilizzava una quantità di memoria molto diversa (quando si visualizza un gran numero di barre nella finestra).

Ora ho dei dubbi. Forse è un problema con la cache degli oggetti di cui abbiamo parlato qui -https://www.mql5.com/ru/forum/8278?

Потребление памяти терминалом
Потребление памяти терминалом
  • www.mql5.com
Для чистоты эксперимента установил голый МТ5 в новую папку, открыл демо-счет на сервере MQ, закрыл все графики, установил "макс. - - Категория: общее обсуждение
 
Renat Fatkhullin:

Sei sicuro di questo?

In entrambe le piattaforme i buffer degli indicatori sono allocati automaticamente e sono gli stessi per tutte le cronologie di barre disponibili.

Ho incontrato un problema in MT4 - c'è uno script che ha il compito di sovrapporre un indicatore su un grafico, raccogliere i dati dal suo buffer e fare il calcolo e l'analisi matematica.

Il funzionamento dello script con gli indicatori incorporati è perfetto, ma le cose non sono così buone con gli indicatori chiamati via iCustom - la memoria, allocata per il terminale (massimo), finisce rapidamente, come risultato lo script inizia a ottenere valori zero del buffer dall'indicatore. C'è la possibilità di cancellare forzatamente la RAM al momento della cancellazione dell'indicatore dal grafico o dopo il suo richiamo, ma con parametri diversi, attraverso iCustom)?

 
-Aleks-:

Ho affrontato un problema con MT4 - c'è uno script che ha il compito di applicare un indicatore a un grafico, raccogliere dati dal suo buffer e fare calcoli e analisi matematiche.

Il funzionamento dello script con gli indicatori incorporati è perfetto, ma le cose non sono così buone con gli indicatori chiamati via iCustom - la memoria, allocata per il terminale (massimo), finisce rapidamente, come risultato lo script inizia a ottenere valori nulli del buffer dall'indicatore. C'è la possibilità di cancellare forzatamente la RAM al momento della rimozione dell'indicatore dal grafico o dopo il suo richiamo, ma con parametri diversi, attraverso iCustom)?

Ed esattamente quanti iCustoms con diversi parametri avete creato?

Se ce ne sono decine e centinaia (sembra così), non si può fare nulla all'interno degli indicatori esterni. È possibile inserirlo solo all'interno del proprio EA come unità di calcolo che non consuma memoria.

In MetaTrader 5 c'è un controllo completo su tutti gli indicatori richiesti, ma anche lì il gioco "creo e cancello centinaia di indicatori" è irto di gravi costi.

 
Renat Fatkhullin:

Ed esattamente quanti iCustoms con diversi parametri avete creato?

Se ce ne sono decine e centinaia (sembra che sia così), non si può fare nulla all'interno degli indicatori esterni. L'unica cosa che puoi fare è incorporarlo all'interno del tuo EA come unità di calcolo che non consuma memoria.

In MetaTrader 5 c'è un controllo completo su tutti gli indicatori richiesti, ma il gioco "creo e cancello centinaia di indicatori" è irto di gravi costi.

Si crea un singolo indicatore, poi si cambiano i suoi parametri. La funzione iCustom è usata nell'indicatore stesso con la richiesta di dati per un altro indicatore - era più facile da fare in questo modo.
Se contiamo tutte le richieste di questo gruppo, otterremo circa 7 buffer.
Altri indicatori con la funzione iCustom, ma più semplici, lo script scricchiola... Il totale si sovrappone a circa diecimila. L'indicatore di corrente scricchiola alla sesta dozzina di passaggi.
Capisco che sto esaurendo la memoria, ma se non stiamo usando i vecchi dati, perché i nuovi dati non si riempiono correttamente?

Perché in MT4 non c'è una funzione per cancellare l'indicatore dalla memoria, è molto difficile da implementare?

 
Se il numero di copie dell'indicatore è alto, integrare nell'EA. Non c'è altra via d'uscita.
 
Renat Fatkhullin:
Se il numero di copie di indicatori è grande, allora integrateli nell'Expert Advisor. Non c'è altra soluzione.

Qui non stiamo parlando di un EA, ma di uno script! Lo script analizza l'indicatore. Esiste una soluzione per liberare la memoria a questo proposito? Se insegniamo allo script a chiudere e aprire il grafico dopo diversi passaggi (cambiando i parametri degli indicatori e la loro analisi), questo permetterà di liberare la memoria?

Alexander Laur:

Perché creare un indicatore nel vostro Expert Advisor che deve essere cancellato in seguito, soprattutto non una volta?

Includi nel codice dell'EA una funzione che esegue un calcolo simile a quello dell'indicatore. In questa funzione, puoi cambiare facilmente i parametri per il calcolo e non ci sarà un eccesso di memoria. Inoltre, si può evitare il calcolo su tutte le barre, che, a quanto ho capito, non vi serve. E non avrete bisogno della funzione iCustom().

Ho solo bisogno di tutte le barre per un periodo. Lo script funziona - è universale per l'analisi degli indicatori di un certo tipo - è costoso scrivere uno script per ogni indicatore. Se solo il compilatore inserisse gli indicatori (secondo un certo comando) negli advisor/script/indicatori, allora la vita sarebbe diversa! Ah, i sogni...

Motivazione: