Errori, bug, domande - pagina 1395

 
Anatoli Kazharski:

Prova così:

Non importa quale sia il valore vuoto lì, o se ci sono ancora valori casuali all'inizio del grafico. Ciò che è importante è che ci sono valori da 0 a -5 nel buffer2 che non vengono visualizzati sul grafico perché è DRAW_NONE ed è impostato il valore minimo di scala di 0.

MT4 in questa situazione scala correttamente il grafico da 0 al valore massimo del buffer nella finestra mentre MT5 scala dal minimo (-5, non 0) al massimo come 0.0605 e aggiunge qualcosa come il 10% dall'alto che rompe completamente la scala.

 
Ilya Malev:

Non importa quale sia il valore vuoto o se ci sono valori casuali all'inizio del grafico. Ciò che è importante è che ci sono valori da 0 a -5 nel buffer1 che non vengono visualizzati sul grafico poiché è DRAW_NONE e il valore di scala minimo di 0 è impostato.

MT4 in questa situazione scala correttamente il grafico da 0 al valore massimo del buffer nella finestra mentre MT5 scala dal minimo (-5, non 0) al massimo come 0.0605 e aggiunge qualcosa come il 10% dall'alto che rompe completamente la scala.

Niente affatto. Un valore vuoto non è zero. Potrebbe essere qualsiasi cosa e chiunque.
 
Ilya Malev:

Non importa quale sia il valore vuoto o se ci sono valori casuali rimasti all'inizio del grafico. Ciò che è importante è che ci sono valori da 0 a -5 nel buffer2 che non vengono visualizzati sul grafico poiché è DRAW_NONE ed è impostato il valore minimo di scala di 0.

MT4 in questa situazione scala correttamente il grafico da 0 al valore massimo del buffer nella finestra mentre MT5 scala dal minimo (-5, non 0) al massimo come 0.0605 e aggiunge qualcosa come il 10% dall'alto che rompe completamente la scala.

A proposito, perché scalare il grafico per valori di buffer che non vengono visualizzati?
 
Karputov Vladimir:
Niente affatto. Un valore vuoto non è zero. Potrebbe essere qualsiasi cosa e chiunque.

Provate a cambiare la linea in"buffer2[i]=-MathRand()%5*Punto(); " E vedrete come cambierà la scala nell'esempio. Ciò dimostra che, in questo caso, il riempimento dei primi elementi della storia non ha alcun effetto sulla scalatura. Perché se si moltiplica per Punto, si allinea.

 
Anatoli Kazharski:
A proposito, perché dovremmo scalare il grafico in base ai valori del buffer che non viene visualizzato?

Bella domanda! È esattamente quello che chiedevo. Perché MT dovrebbe fare tale scalatura se il buffer è dichiarato come DRAW_NONE

Lo era anche in MT4, ma solo se i valori di tale buffer erano all'interno della gamma di visualizzazione limitata da indicator_maximum e minimim. E in MT5 i valori al di fuori dei vincoli sono inclusi nella formula di scalatura.

 
Ilya Malev:

Provate a cambiare la linea in"buffer2[i]=-MathRand()%5*Punto();" e vedrete come cambierà la scala in questo esempio. Ciò dimostra che, in questo caso, il riempimento dei primi elementi della storia non ha alcun effetto sulla scalatura. Perché se si moltiplica per Punto, si allinea.

Il tuo esempio è storto e non vuoi aggiustarlo. Lo controllerò quando lo correggerai.
 
Ilya Malev:
Bella domanda! È esattamente quello che chiedevo.

È nel suo codice, vero?

buffer2[i]=-MathRand()%5;

Quello che c'è scritto è quello che si ottiene. Che senso ha fare questo per un buffer che non viene visualizzato. Questo è quello che chiedevo. ))

 
Anatoli Kazharski:

Ciò che è scritto è ciò che otteniamo. Che senso ha fare questo per un buffer che non viene visualizzato. Questo è quello che chiedevo. ))

Sì, quindi quando il terminale lo fa, è OK (scala per valori con DRAW_NONE ed è anche più basso della soglia di visualizzazione indicator_minimum - almeno in MT4 era adeguato), ma quando un utente imposta i propri valori arbitrari nel buffer senza visualizzazione (DRAW_NONE), non è OK (come tenere e non lasciare, a chi importa perché l'utente ha bisogno?)

La ragione è banale - questi attributi mostrano importanti attributi numerici delle barre nel grafico, di cui il trader ha bisogno per l'analisi. Cioè, sono usati dal trader e usati dagli Expert Advisors.

 
Ilya Malev:

Sì, cioè, quando il terminale lo fa, è OK (scala per valori con DRAW_NONE, e anche meno della soglia indicator_minimum - almeno era adeguato in MT4), ma quando l'utente imposta i suoi valori arbitrari nel buffer senza visualizzazione (DRAW_NONE), non è OK (come tenere e non lasciare, che importa perché l'utente ne ha bisogno?)

La ragione è banale - questi attributi mostrano importanti attributi numerici delle barre nella finestra dei dati, di cui il trader ha bisogno per l'analisi.

Beh, non ho parlato di normale o anormale. Mi sono solo chiesto perché farlo. )

Penso che i buffer che non sono visualizzati (DRAW_NONE) non dovrebbero essere coinvolti nel calcolo della scala.

Potresti provare a segnalare questo errore a servicedesk e aspettare una risposta lì.

 
Anatoli Kazharski:

Beh, non stavo parlando di normale o anormale. Mi chiedevo solo perché avresti fatto una cosa del genere. )

Penso che i buffer che non sono visualizzati (DRAW_NONE) non dovrebbero essere coinvolti nel calcolo della scala.

Nell'esempio ho fatto MathRand solo per dimostrare come funziona la scala. Nell'originale c'era il calcolo dei livelli numerici usando la metodologia di qualche autore di trader. All'inizio, volevamo farli da 1 a 5, ma anche MT4 non è riuscito a raggiungere la scala adeguata anche con tali valori nel buffer con DRAW_NONE. Dopo averli resi negativi e aver fissato il minimo a 0, il problema è stato risolto. Durante il porting dell'indicatore su MT5 sembrava che anche questa soluzione non avrebbe funzionato. Ho dovuto moltiplicare per Punto come ha detto Voldemar.