Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 622

 
Come posso aumentare il numero di barre nel tester in MT4 prima di inizializzare l'indicatore? L'indicatore dovrebbe calcolare sulla storia - è necessario controllare se è corretto nel tester.
 
Un'altra domanda, come faccio a controllare l'integrità della storia durante l'inizializzazione in MT4? Ho il sospetto che al momento dell'inizializzazione la storia venga scambiata, il che influisce sul pre-calcolo...
 
-Aleks-:
Un'altra domanda, come faccio a controllare l'integrità della storia durante l'inizializzazione in MT4? Ho il sospetto che al momento dell'inizializzazione la storia venga scambiata, il che influisce sul precalcolo...
Controlla il numero di barre rates_total. Se rates_total > prev_calculated+1 - allora più di 1 barra è stata scambiata e quindi la storia viene scambiata.
 
Alexey Kozitsyn:
Controlla il numero di barre rates_total. Se rates_total > prev_calculated+1 - significa che più di 1 barra è stata scambiata e quindi la storia è stata scambiata.
E controlla la frequenza una volta al secondo, e dopo una lunga pausa continua l'inizializzazione, giusto?
 
-Aleks-:
E la frequenza di controllo è di una volta al secondo, e dopo una lunga pausa continua l'inizializzazione, giusto?

In generale, come mi è stato detto recentemente in SD, negli indicatori è meglio fare a meno del timer.

Basta aggiungere la condizione: if( prev_calculated <= 0 || rates_total > prev_calculated+1 ) come condizione di primo avvio e ricalcolo completo dell'indicatore. Se lo fate in OnCalculate(), non ci saranno problemi.

 
E di quale "lunga pausa" sta parlando?
 
Alexey Kozitsyn:

In generale, come mi è stato detto recentemente in SD, è meglio fare a meno del timer negli indicatori.

Basta aggiungere la condizione: if( prev_calculated <= 0 || rates_total > prev_calculated+1 ) come condizione di primo avvio e ricalcolo completo dell'indicatore. Se lo fate in OnCalculate(), non ci saranno problemi.

Voglio avere un calcolo corretto della classe del tipo di indicatore nel mio Expert Advisor.

Se permettiamo 10 000 barre per grafico, e le abbiamo, allora Bars non restituirà più di 10000 anche se c'è una nuova barra. Allora come faccio a sapere se c'è una nuova barra quando viene caricata la cronologia?

 
E apparentemente il controllo non dovrebbe essere fatto all'inizializzazione, poiché l'EA viene inizializzato quando il terminale viene caricato prima di connettersi a DC....
 
-Aleks-:

Bene, ho bisogno che la classe del tipo di indicatore sia calcolata correttamente nel mio EA.

Quindi sono confuso, se 10000 barre per grafico sono permesse e lo sono, allora Bars non restituirà più di 10000 anche se appaiono nuove barre. Allora come faccio a sapere se c'è una nuova barra quando si carica la storia?

Perché no? Sì, lo farà. E Bars() e rates_total aumenteranno. Controlla il numero in OnCalculate().

Il numero di barre impostato nel terminale non influisce sul numero di barre del tester (un po' meno di 100000).

 
Alexey Kozitsyn:

Perché no? Lo farà. Sia Bars() che rates_total aumenteranno. Controlla il numero in OnCalculate().

Il numero di barre impostato nel terminale non ha influenzato il numero di barre nel tester (poco meno di 100000).

No no, non mi serve nel tester ma quando eseguo il terminale su un grafico reale - lì funziona solo se la storia ha meno del numero massimo di barre, o mi sbaglio?