OnDeinit negli indicatori - pagina 3

 

Fate una stampa all'inizio di OnDeinit e dopo aver chiuso il terminale client, guardate il log di Expert e assicuratevi che OnDeinit sia stato chiamato!

Ecco il tuo errore

for(int i=ObjectsTotal()-1;i>=0;i--)

Tu conosci chiaramente gli oggetti che hai creato tu stesso.

Mantenere i loro nomi e cancellarli senza riferimento a ObjectsTotal e ObjectName

PS la nuova build ha aggiunto una funzione per cancellare un gruppo di oggetti per prefisso. Vi aiuterà se nominate i vostri oggetti usando lo stesso prefisso unico nel loro nome

 
stringo:

Fate Print all'inizio di OnDeinit e dopo aver chiuso il terminale client, guardate il log di EA e assicuratevi che OnDeinit sia stato chiamato!

Ecco il tuo errore

È chiaro che conosci gli oggetti che hai creato tu stesso.

Salvare i loro nomi e cancellarli senza riferimento a ObjectsTotal e ObjectName

PS La nuova build ha aggiunto una funzione per cancellare un gruppo di oggetti per prefisso. Vi aiuterà se nominate i vostri oggetti usando lo stesso prefisso unico nel loro nome

Ho già avuto modo di testare come funziona la cancellazione di un gruppo di oggetti per prefisso. Ottimo, ma anche il codice compilato nelle build precedenti non funziona. Di conseguenza, può essere usato, per ora, solo per scopi personali. Non dobbiamo forzare gli utenti ad aggiornare per questo. Molti non sanno nemmeno come aggiornare finché non caricano l'aggiornamento sul server DC.
 
stringo:

In realtà, deinit in tutti i programmi è chiamato quando il terminale è chiuso.

C'è persino un codice speciale per la causa della deinizializzazione. RAGIONE_CHIUSA

E azzera i buffer degli indicatori o no?
 
eevviill:
E azzera i buffer degli indicatori o no?
Cosa significa "resettare i buffer degli indicatori"?
 
eevviill:
E azzera i buffer degli indicatori o no?
Tutto viene resettato. Dopo tutto, il terminale si chiude )))
 
stringo:

La situazione del tuo indicatore è stata risolta.

Ecco il punto - l'indicatore è calcolato non solo sull'arrivo dei tick, ma anche sulla prima estrazione e sull'arrivo della storia mancante.

1. Arriva un nuovo tick - l'indicatore viene calcolato.

2. Arriva la cronologia mancante, che riempie il buco tra i dati dell'ultimo avvio del terminale e l'ultimo tick. L'indicatore è calcolato. Ma allo stesso tempo non c'è una nuova condizione del bar!

Per risolvere questo problema è necessario controllare il numero di barre. Circa come questo

Mettete il blocco di inizializzazione del buffer EMPTY_VALUE in Inite. Il problema rimane.
 

Blocca il blocco di inizializzazione del buffer con un valore vuoto sia in init che in deinit. Il risultato è lo stesso. Cioè non esiste.

Aspettando i commenti degli sviluppatori.

 
Scriptong:
Tutto si azzera. Dopo tutto, il terminale si chiude )))
Sì, sì.
 
eevviill:
Hmm. Il blocco di inizializzazione del buffer EMPTY_VALUE è messo in Inite.

Perché? I buffer inite potrebbero non essere ancora allocati.

E quando il buffer è pesantemente bufferizzato (è arrivato un nuovo lotto di dati storici)?

In questi casi, l'inizializzazione dei buffer è fatta prima del calcolo dell'indicatore, quando è chiaro che l'intero indicatore sarà ricalcolato

 
stringo:

Perché? I buffer inite potrebbero non essere ancora allocati.

E quando il buffer è molto grande (è arrivato un nuovo lotto di dati storici)?

In questi casi, l'inizializzazione dei buffer è fatta prima del calcolo dell'indicatore, quando è chiaro che l'intero indicatore sarà ricalcolato

Ok. L'azzeramento non funziona nemmeno in deinit.