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

 

Alexander Laur, cioè finché lo script/consigliere è in esecuzione la memoria è riservata e non può essere cancellata - triste conclusione.
È possibile per uno script eseguire un altro script, poi chiudendo lo script in esecuzione dovrebbe causare la cancellazione della memoria, o questo sarebbe considerato come un ambiente di elaborazione complesso?

 
-Aleks-:

Alexander Laur, cioè finché lo script/consigliere è in esecuzione, la memoria è riservata e non può essere pulita - triste conclusione.
È possibile eseguire un altro script, poi chiudendo lo script in esecuzione dovrebbe risultare in una cancellazione della memoria, o sarà considerato come un complesso ambiente di elaborazione dati?

Ho subito suggerito"aprire il grafico con Expert Advisor in esecuzione", si può fare - ChartOpen + ChartApplyTemplate

L'unica questione è se la memoria sarà liberata alla chiusura (eliminando l'Expert Advisor).

Controlla.

 
Andrey Khatimlianskii:

Ho subito suggerito"aprire il grafico con Expert Advisor in esecuzione", si può fare - ChartOpen + ChartApplyTemplate

L'unica questione è se la memoria sarà liberata alla chiusura (eliminando l'Expert Advisor).

Controllare.

Ho provato manualmente, cambiando il template con molti indicatori a quasi vuoto - l'effetto c'è (ma la cache rimane - penso che non sia critico). Ma come fare l'apertura e la chiusura attraverso uno script template - non lo so. Ho capito che il dubbio è che finché lo script è in esecuzione, la memoria non viene cancellata... Andrei, per favore aiutami con questo esperimento.
 

Domanda aggiuntiva, la scelta del tipo di buffer reale per il calcolo all'interno dell'indicatore influenza la dimensione del buffer grafico?

Tipo

Dimensione in byte

Valore minimo positivo

Valore massimo

Accuratezza della rappresentazione

Analogico in C++

float

4

1.175494351e-38

3.402823466e+38

7 cifre significative

float

doppio

8

2.2250738585072014e-308

1.7976931348623158e+308

15 cifre significative

doppio


E un'idea folle, e se invece di un buffer grafico usassimo TextOut - solo che non so come leggere i dati da esso...

 
-Aleks-:

Domanda aggiuntiva, la selezione del tipo di buffer reale per il calcolo all'interno dell'indicatore influenza la dimensione del buffer grafico?

Per "buffer grafico" intendi la visualizzazione grafica di un normale indicatore?
 
Dennis Kirichenko:
Con il termine "buffer grafico" intendete la visualizzazione grafica di un indicatore regolare?

La domanda è se è possibile influenzare la dimensione della memoria allocata al buffer grafico di una barra se si usa float invece di double nel codice dell'indicatore per i calcoli.

//---- buffers

double Vy[];
double bufDirSoft[];

extern int n=3;
extern int BarsN=100;
//----
int ExtCountedBars=0;

 
Inoltre, come si fa a sapere se la memoria si è esaurita, ci sono delle funzioni?
 
-Aleks-:

La domanda è se è possibile influenzare la dimensione della memoria allocata al buffer grafico di una barra se si usa float piuttosto che double nel codice dell'indicatore per i calcoli...

No. C'è una funzione magica che sposta tutti i tentativi:

bool  SetIndexBuffer(
   int                    index,         // индекс буфера
   double                 buffer[],      // массив
   ENUM_INDEXBUFFER_TYPE  data_type      // что будем хранить
   );

Questo meccanismo è incorporato nel linguaggio Terminal stesso. È un'idea interessante, però...

 
-Aleks-:
Inoltre, come si fa a sapere se la memoria si è esaurita, ci sono delle funzioni?

Cosa intendi per "esaurire la memoria"? :-)

C'è qualcosa qui:

https://www.mql5.com/ru/docs/constants/environment_state/terminalstatus#enum_terminal_info_integer

Secondo me, il modo più efficace per gestire la memoria per le risorse dell'indicatore è quello di ridurre al minimo il parametro "Max bars in history" (Settings --> Charts). Per quanto mi ricordo, il minimo per il parametro è 5k.

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Состояние клиентского терминала - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
-Aleks-:
Inoltre, come posso sapere se la memoria è finita, ci sono delle funzioni?

È possibile recuperare informazioni sul terminale

TOTALE_MEMORIA_TERMINALE

Dimensione della memoria, disponibile per il processo terminale (agente), in MB

int

MEMORIA_TERMINALE_DISPONIBILE

La dimensione della memoria disponibile del processo terminale (agente) in MB

int

MEMORIA_TERMINALE_USATA

Dimensione della memoria, usata dal terminale (agente), in MB

int