Errori, bug, domande - pagina 1985

 
Alexey Kozitsyn:
Sì, certo.
Beh, se sì e il valore è impostato su 0, allora ovviamente c'è qualcosa che non va... Potete vedere dall'immagine che ogni barra ha una freccia con un valore di 0.
 
Alexey Viktorov:
Se lo è e il valore è 0, allora c'è certamente qualcosa di sbagliato... Potete vedere dall'immagine che ogni barra ha una freccia con un valore di 0.
Il trucco è che empty = EMPTY_VALUE.
 
Alexey Kozitsyn:
Il trucco è che empty = EMPTY_VALUE.
Empty è vuoto, ma a PLOT_EMPTY_VALUE è assegnato un valore che non sarà mostrato nel grafico e nella finestra dei dati. Prova a cambiare EMPTY_VALUE a 0
PlotIndexSetDouble(plot_index, PLOT_EMPTY_VALUE, 0);
 

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

EA non va sul mercato. Errore 130.

fxsaber, 2017.09.04 17:19

void OnStart()
{
  Print(0.99872);
}

Risultato

0.9987200000000001
(stringa)NormalizeDouble(0.99872, 5) - risultato molto lungo.
 
Alexey Viktorov:
Empty è vuoto, ma a PLOT_EMPTY_VALUE è assegnato un valore che non sarà mostrato nel grafico e nella finestra dei dati. Prova a cambiare EMPTY_VALUE a 0
No, c'è ancora un incidente. Ora ho sostituito EMPTY_VALUE con la costante EMPTY = EMPTY_VALUE. Ora va meglio. Ma c'è ancora della spazzatura sul grafico quando si cambia il TF. Ho impostato EMPTY = 0. È anche meglio, ma di nuovo, quando il TF viene cambiato frequentemente, il grafico contiene spazzatura. In generale, devo scrivere un'applicazione sul CD.
 
Alexey Kozitsyn:
No, c'è ancora un bug. Ora ho sostituito EMPTY_VALUE con la costante EMPTY = EMPTY_VALUE in tutto il codice. Ora va meglio. Ma c'è ancora della spazzatura sul grafico quando si cambia il TF. Ho impostato EMPTY = 0. È anche meglio, ma di nuovo, quando il TF viene cambiato frequentemente, il grafico contiene spazzatura. In generale, devo scrivere un'applicazione sul CD.

Di cosa si trattava? Stavo parlando di tutt'altro. Beh, in un pizzico, invece di resettare il buffer.

ArrayInitialize(массив, 0);

si potrebbe impostare su...

ArrayInitialize(массив, EMPTY_VALUE);
 
Alexey Viktorov:

Di cosa si trattava? Stavo parlando di tutt'altro. Beh, in un pizzico, invece di resettare il buffer.

si potrebbe mettere

Si tratta di cambiare tutte le inizializzazioni nel codice in una volta sola. Il codice che hai scritto è inizializzato ovunque tu ne abbia bisogno. ArrayInitialize() viene eseguito in OnDeinit(), ma ho già descritto il risultato sopra.
 

Alexey Kozitsyn:
...

ArrayInitialize() viene eseguito in OnDeinit(), ma ho già descritto il risultato sopra.

Prova OnInit().
 
Anatoli Kazharski:
Prova in OnInit().

C'è un'inizializzazione in OnCalculate() alla prima esecuzione (prev_calculated == 0). Pensi che spostarlo in OnInit() cambierà qualcosa? Beh, ci proverò, certo, ma questa è una cosa fuori dal regno della fantasia...

Tagliare. Come ho detto, in OnDeinit() si inizializzano gli array, che non sono più utilizzati al prossimo avvio (cambiando i parametri di input). Se questo (inizializzare un array che non è usato come buffer) aiuta - sarebbe anche un bug di MT. Si scoprirà che non solo gli array non sono utilizzati, ma che essi (non contrassegnati) possono ancora essere inizializzati e ciò influenzerà la visualizzazione...

 
fxsaber:
(stringa)NormalizeDouble(0.99872, 5) è un risultato molto lungo.

Buon pomeriggio!

Grazie per il suo messaggio, controlleremo