Errori (build 421, forse qualcosa risolto in 425, nessun aggiornamento a 425 da alpari ancora):
1. Già scritto nel thread sulla visualizzazione 3D: le didascalie dei grafici 3D (nome della scala e valore della scala) non cambiano quando si cambiano i parametri di visualizzazione sul grafico.
2. Durante l'ottimizzazione veloce il grafico è abbinato a circa 10600° passaggio, cioè l'ottimizzazione va avanti per 50,51...60 generazioni e il grafico non si sposta e non vengono visualizzati nuovi passaggi. Allo stesso tempo, la scheda Settings visualizza "Optimization progress:" invece del numero di passaggi, e in alcune circostanze inspiegabili cambia ancora, per esempio, 12420/14400 (le cifre sono approssimative).
3. Gli agenti cancellati possono andare allo stato Busy e rimanere in questo stato, devo spegnerli e riaccenderli, dopo di che l'ottimizzazione continua.
E domanda: sarà possibile cambiare la vista del grafico (1D/2D/3D) durante l'ottimizzazione e non dopo il suo completamento?
Errori (build 421, forse qualcosa risolto in 425, nessun aggiornamento a 425 da alpari ancora):
1. Già scritto nel thread sulla visualizzazione 3D: le didascalie dei grafici 3D (nome della scala e valore della scala) non cambiano quando si cambiano i parametri di visualizzazione sul grafico.
2. Durante l'ottimizzazione veloce il grafico è abbinato a circa 10600° passaggio, cioè l'ottimizzazione va avanti per 50,51...60 generazioni e il grafico non si sposta e non vengono visualizzati nuovi passaggi. Allo stesso tempo, la scheda Settings visualizza "Optimization progress:" invece del numero di passaggi, e in alcune circostanze inspiegabili cambia ancora, per esempio, 12420/14400 (le cifre sono approssimative).
3. Gli agenti cancellati possono andare allo stato Busy e rimanere in questo stato, devo spegnerli e riaccenderli, dopo di che l'ottimizzazione continua.
E una domanda: sarà possibile cambiare la vista grafica (1D/2D/3D) durante l'ottimizzazione e non dopo il suo completamento?
ma anche per poter auto-inizializzarel'array con questo valore. Se l'indicatore non ha assegnato nulla all'ultima barra, allora per default assegna ciò che è stato specificato nel parametro
PLOT_EMPTY_VALUE
o meglio, prima lo inizializzi con un valore vuoto e poi lasci che l'indicatore scriva quello che vuole.
Perché ora il valore di default sarà zero, ma zero in molti indicatori è un numero significativo che dovrebbe essere disegnato.
HZ ha scritto in questo thread come non sono sicuro che questo non è stato risolto, quindi il desiderio può essere considerato come una domanda. Se è così, per favore ditemi come si risolve.
Perché in questo momento il numero di default sarà zero, ma zero in molti indicatori è un numero significativo da disegnare.
In effetti, tutto può esserci, è solo che di solito è una fortuna che sia zero. L'articoloindicatore da indicatore in MQL5 dice direttamente:
È necessario inizializzare i buffer degli indicatori?
Le matrici in MQL5 non sono inizializzate di default con alcun valore, e questo vale certamente per le matrici che sono assegnate ai buffer di indicatori usando SetIndexBuffer(). Se un array è un buffer indicatore, la sua dimensione dipenderà dal parametro rates_total nel gestore OnCalculate().
Ci può essere la tentazione di inizializzare tutti i buffer degli indicatori con un valore vuoto di EMPTY_VALUE usando la funzione ArrayInitialize(), per esempio, una volta all'inizio di OnCalculate()
//--- если это первый вызов OnCalculate() if(prev_calculated==0)
{
ArrayInitialize(TSIBuffer,EMPTY_VALUE);
}
Ma non è consigliabile farlo per il seguente motivo: durante il funzionamento del terminale, si ricevono le quotazioni del simbolo sui cui dati viene calcolato l'indicatore. Così, il numero di barre aumenterà nel tempo, e il terminale assegnerà ulteriore memoria per i buffer degli indicatori.
Ma i valori negli elementi dell'array appena collegati avranno qualsiasi valore, perché quando la memoria viene riallocata per qualsiasi array, non c'è inizializzazione. E l'inizializzazione iniziale può dare una fiducia fuorviante che tutti gli elementi dell'array, a cui non abbiamo esplicitamente assegnato alcun valore, saranno riempiti con lo stesso valore con cui abbiamo inizializzato l'array la prima volta. Questo non è certamente vero, e non dovremmo mai contare sul fatto che il valore di qualche variabile o elemento dell'array sia inizializzato con il valore che vogliamo.
È necessario impostare un valore per ogni elemento del buffer dell'indicatore, e se il valore dell'indicatore per questa barra non è definito (non calcolato, secondo l'algoritmo implementato nell'indicatore), allora per questi casi un valore vuoto dovrebbe essere esplicitamente impostato. Per esempio, il valore del buffer dell'indicatore è calcolato utilizzando l'operazione di divisione, e ad un certo punto potrebbe risultare che il divisore è uguale a zero.
In realtà può esserci di tutto, è solo che di solito è una fortuna che ci sia zero. L'articoloIndicatore da Indicatore in MQL5 lo dice esplicitamente:
Questo è esattamente il problema che vorrei risolvere a livello di linguaggio, perché l'inizializzazione dell'ultimo valore richiederà ulteriori linee di codice dove potrebbero esserci errori.
In questo modo si può essere sicuri che c'è il valore esatto e in base a questo si può costruire un ulteriore algoritmo.
Questo è esattamente il problema che vorrei risolvere a livello di linguaggio, perché l'inizializzazione dell'ultimo valore richiede ulteriori linee di codice che possono contenere errori.
In questo modo si può essere sicuri che c'è un valore esatto e su questa base si può costruire un ulteriore algoritmo.
Anch'io ho affrontato questo problema. Appoggio: fare una soluzione a livello di lingua.
Sono confuso da questa situazione con il tester: l'EA viene eseguito più volte nelle stesse condizioni, ma i risultati delle esecuzioni sono diversi. La differenza è piccola, ma...
Controllato su due macchine, ottengo 2 risultati diversi, con circa la stessa probabilità. Che cosa significherebbe?
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Se c'è una posizione, si otterrà un ciclo infinito perché
è equivalente a
Non c'è modo di uscire dal ciclo nel codice perché non c'è nessuna pausa nel corpo dell'operatore;Errori (build 421, forse qualcosa risolto in 425, nessun aggiornamento a 425 da alpari ancora):
1. Già scritto nel thread sulla visualizzazione 3D: le didascalie dei grafici 3D (nome della scala e valore della scala) non cambiano quando si cambiano i parametri di visualizzazione sul grafico.
2. Durante l'ottimizzazione veloce il grafico è abbinato a circa 10600° passaggio, cioè l'ottimizzazione va avanti per 50,51...60 generazioni e il grafico non si sposta e non vengono visualizzati nuovi passaggi. Allo stesso tempo, la scheda Settings visualizza "Optimization progress:" invece del numero di passaggi, e in alcune circostanze inspiegabili cambia ancora, per esempio, 12420/14400 (le cifre sono approssimative).
3. Gli agenti cancellati possono andare allo stato Busy e rimanere in questo stato, devo spegnerli e riaccenderli, dopo di che l'ottimizzazione continua.
E domanda: sarà possibile cambiare la vista del grafico (1D/2D/3D) durante l'ottimizzazione e non dopo il suo completamento?
Errori (build 421, forse qualcosa risolto in 425, nessun aggiornamento a 425 da alpari ancora):
Errori (build 421, forse qualcosa risolto in 425, nessun aggiornamento a 425 da alpari ancora):
1. Già scritto nel thread sulla visualizzazione 3D: le didascalie dei grafici 3D (nome della scala e valore della scala) non cambiano quando si cambiano i parametri di visualizzazione sul grafico.
2. Durante l'ottimizzazione veloce il grafico è abbinato a circa 10600° passaggio, cioè l'ottimizzazione va avanti per 50,51...60 generazioni e il grafico non si sposta e non vengono visualizzati nuovi passaggi. Allo stesso tempo, la scheda Settings visualizza "Optimization progress:" invece del numero di passaggi, e in alcune circostanze inspiegabili cambia ancora, per esempio, 12420/14400 (le cifre sono approssimative).
3. Gli agenti cancellati possono andare allo stato Busy e rimanere in questo stato, devo spegnerli e riaccenderli, dopo di che l'ottimizzazione continua.
E una domanda: sarà possibile cambiare la vista grafica (1D/2D/3D) durante l'ottimizzazione e non dopo il suo completamento?
1,2 Corretto, ma non incluso nell'ultima build
3 Ci stiamo lavorando.
Non ci sarà nessuna caratteristica di questo tipo
ma anche per poter auto-inizializzarel'array con questo valore. Se l'indicatore non ha assegnato nulla all'ultima barra, allora per default assegna ciò che è stato specificato nel parametro
PLOT_EMPTY_VALUEo meglio, prima lo inizializzi con un valore vuoto e poi lasci che l'indicatore scriva quello che vuole.
Perché ora il valore di default sarà zero, ma zero in molti indicatori è un numero significativo che dovrebbe essere disegnato.
HZ ha scritto in questo thread come non sono sicuro che questo non è stato risolto, quindi il desiderio può essere considerato come una domanda. Se è così, per favore ditemi come si risolve.
Urain:
Perché in questo momento il numero di default sarà zero, ma zero in molti indicatori è un numero significativo da disegnare.
In effetti, tutto può esserci, è solo che di solito è una fortuna che sia zero. L'articoloindicatore da indicatore in MQL5 dice direttamente:
È necessario inizializzare i buffer degli indicatori?
Le matrici in MQL5 non sono inizializzate di default con alcun valore, e questo vale certamente per le matrici che sono assegnate ai buffer di indicatori usando SetIndexBuffer(). Se un array è un buffer indicatore, la sua dimensione dipenderà dal parametro rates_total nel gestore OnCalculate().
Ci può essere la tentazione di inizializzare tutti i buffer degli indicatori con un valore vuoto di EMPTY_VALUE usando la funzione ArrayInitialize(), per esempio, una volta all'inizio di OnCalculate()Ma non è consigliabile farlo per il seguente motivo: durante il funzionamento del terminale, si ricevono le quotazioni del simbolo sui cui dati viene calcolato l'indicatore. Così, il numero di barre aumenterà nel tempo, e il terminale assegnerà ulteriore memoria per i buffer degli indicatori.
Ma i valori negli elementi dell'array appena collegati avranno qualsiasi valore, perché quando la memoria viene riallocata per qualsiasi array, non c'è inizializzazione. E l'inizializzazione iniziale può dare una fiducia fuorviante che tutti gli elementi dell'array, a cui non abbiamo esplicitamente assegnato alcun valore, saranno riempiti con lo stesso valore con cui abbiamo inizializzato l'array la prima volta. Questo non è certamente vero, e non dovremmo mai contare sul fatto che il valore di qualche variabile o elemento dell'array sia inizializzato con il valore che vogliamo.
È necessario impostare un valore per ogni elemento del buffer dell'indicatore, e se il valore dell'indicatore per questa barra non è definito (non calcolato, secondo l'algoritmo implementato nell'indicatore), allora per questi casi un valore vuoto dovrebbe essere esplicitamente impostato. Per esempio, il valore del buffer dell'indicatore è calcolato utilizzando l'operazione di divisione, e ad un certo punto potrebbe risultare che il divisore è uguale a zero.In realtà può esserci di tutto, è solo che di solito è una fortuna che ci sia zero. L'articoloIndicatore da Indicatore in MQL5 lo dice esplicitamente:
Questo è esattamente il problema che vorrei risolvere a livello di linguaggio, perché l'inizializzazione dell'ultimo valore richiederà ulteriori linee di codice dove potrebbero esserci errori.
In questo modo si può essere sicuri che c'è il valore esatto e in base a questo si può costruire un ulteriore algoritmo.
Questo è esattamente il problema che vorrei risolvere a livello di linguaggio, perché l'inizializzazione dell'ultimo valore richiede ulteriori linee di codice che possono contenere errori.
In questo modo si può essere sicuri che c'è un valore esatto e su questa base si può costruire un ulteriore algoritmo.
Ho incontrato anche questo. Appoggio: fare la soluzione a livello di lingua.
Costruire 425
Sono confuso da questa situazione con il tester: l'EA viene eseguito più volte nelle stesse condizioni, ma i risultati delle esecuzioni sono diversi. La differenza è piccola, ma...
Controllato su due macchine, ottengo 2 risultati diversi, con circa la stessa probabilità. Che cosa significherebbe?