È chiaro che l'azzeramento è stato fatto per compatibilità, ma non è chiaro perché quando enum inutilizzato = WRONG_VALUE è inizializzato correttamente , non funziona correttamente. Questo approccio manca di portabilità e aumenta significativamente la probabilità di errori nascosti.
A100: non è chiaro perché quando l'enum inutilizzato = WRONG_VALUE è inizializzato correttamente, non funziona correttamente.
Ricordate questa regola?
Regola: se a una costante nominata - membro di un'enumerazione non è assegnato esplicitamente un valore specifico, il suo valore sarà generato automaticamente. Se è il primo membro dell'enumerazione, viene assegnato il valore 0. Per tutti i membri successivi, i valori saranno calcolati in base al valore del membro precedente aggiungendo uno.
Molto probabilmente, il controllo della correttezza dei campi della query presuppone che il valore di un membro dell'enumerazione non possa essere negativo. La possibilità di assegnare WRONG_VALUE a un membro dell'enumerazione non è presa in considerazione.
Tuttavia, la possibilità di assegnare WRONG_VALUE a un membro dell'enumerazione non è presa in considerazione.
Penso che questo sia esattamente l'errore qui. Se non si usa un enum concreto, è logico che il suo valore sarà WRONG_VALUE invece che, per esempio, ORDER_TYPE_BUY che effettivamente = 0.
e soprattutto - niente vi impedisce di cambiare la logica di OrderCheck() e OrderSend() mantenendo la compatibilità
A100: Penso che questo sia esattamente l'errore qui. Se non si usa un enum concreto, è logico che il suo valore sarà WRONG_VALUE invece di ORDER_TYPE_BUY che effettivamente = 0.
e soprattutto, nulla vi impedisce di cambiare la logica di OrderCheck() e OrderSend() mantenendo la compatibilità
C'è un modo per capire l'opinione degli sviluppatori - scrivere al Service Desk sull'errore.
Una singola esecuzione nel tester passa senza problemi, ma appena scelgo i parametri con la ricerca completa, il tester comincia a lavorare dieci o dieci volte più lentamente. Non capisco perché la velocità è adeguata durante una corsa e cala notevolmente durante l'ottimizzazione. Inoltre, cala geometricamente. Si può vedere dalla percentuale che tutto va bene all'inizio ma verso la fine la velocità continua a scivolare sempre più lentamente. Ho cercato dei problemi nel mio codice e ho cercato dei loop o qualcosa del genere, ma non li ho trovati. Dopo di che ho sostituito il codice di cui sopra con il mio algoritmo e oh mio Dio! L'ottimizzazione ora funziona a una velocità normale e uniforme. Questo mi porta alla conclusione che il problema è in MQL5, da qualche parte nel corpo della funzione OnTradeTransaction. Chiederò agli sviluppatori di prestare attenzione a questo.
p.s. Non posso postare il codice di Expert Advisor. Prova ad usare il codice di cui sopra in uno qualsiasi dei tuoi EA e guarda la velocità di ottimizzazione in OHLC M5 per il periodo dal 2000 ad oggi.
Una singola esecuzione nel tester passa senza problemi, ma appena scelgo i parametri con la ricerca completa, il tester inizia a lavorare dieci o dieci volte più lentamente. Non capisco perché la velocità è adeguata durante una corsa e cala notevolmente durante l'ottimizzazione. Inoltre, cala geometricamente. Si può vedere dalla percentuale che tutto va bene all'inizio ma verso la fine la velocità continua a scivolare sempre più lentamente. Ho cercato dei problemi nel mio codice e ho cercato dei loop o qualcosa del genere, ma non li ho trovati. Dopo di che ho sostituito il codice di cui sopra con il mio algoritmo e oh mio Dio! L'ottimizzazione ora funziona a una velocità normale e uniforme. Questo mi porta alla conclusione che il problema è in MQL5, da qualche parte nel corpo della funzione OnTradeTransaction. Chiederò agli sviluppatori di prestare attenzione a questo.
p.s. Non posso postare il codice di Expert Advisor. Prova ad usare il codice di cui sopra in uno qualsiasi dei tuoi EA e guarda la velocità di ottimizzazione di OHLC M5 per il periodo dal 2000 ad oggi.
Con diversi parametri l'Expert Advisor può funzionare per tempi diversi
A100: Cioè hanno rinunciato a usare OnTradeTransaction() ? - allora è logico che la velocità sia aumentata - si chiama in ogni occasione
È naturale rifiutarsi di usarlo. È chiaro che si chiama in qualsiasi occasione. Non è chiaro perché la velocità sia adeguata durante una singola esecuzione, mentre cala drasticamente durante l'ottimizzazione. Non ha niente a che vedere con i parametri stessi, come ha scritto un altro amico sopra, l'ho controllato accuratamente dieci volte. Questo mi porta alla conclusione che gli sviluppatori hanno fatto un errore da qualche parte.
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.
È chiaro che l'azzeramento è stato fatto per compatibilità, ma non è chiaro perché quando enum inutilizzato = WRONG_VALUE è inizializzato correttamente , non funziona correttamente. Questo approccio manca di portabilità e aumenta significativamente la probabilità di errori nascosti.
Ricordate questa regola?
Regola: se a una costante nominata - membro di un'enumerazione non è assegnato esplicitamente un valore specifico, il suo valore sarà generato automaticamente. Se è il primo membro dell'enumerazione, viene assegnato il valore 0. Per tutti i membri successivi, i valori saranno calcolati in base al valore del membro precedente aggiungendo uno.
Molto probabilmente, il controllo della correttezza dei campi della query presuppone che il valore di un membro dell'enumerazione non possa essere negativo. La possibilità di assegnare WRONG_VALUE a un membro dell'enumerazione non è presa in considerazione.
Tuttavia, la possibilità di assegnare WRONG_VALUE a un membro dell'enumerazione non è presa in considerazione.
Penso che questo sia esattamente l'errore qui. Se non si usa un enum concreto, è logico che il suo valore sarà WRONG_VALUE invece che, per esempio, ORDER_TYPE_BUY che effettivamente = 0.
e soprattutto - niente vi impedisce di cambiare la logica di OrderCheck() e OrderSend() mantenendo la compatibilità
e soprattutto, nulla vi impedisce di cambiare la logica di OrderCheck() e OrderSend() mantenendo la compatibilità
Ho scoperto uno strano "bug".
Sto usando questo codice nel mio EA:
Una singola esecuzione nel tester passa senza problemi, ma appena scelgo i parametri con la ricerca completa, il tester comincia a lavorare dieci o dieci volte più lentamente. Non capisco perché la velocità è adeguata durante una corsa e cala notevolmente durante l'ottimizzazione. Inoltre, cala geometricamente. Si può vedere dalla percentuale che tutto va bene all'inizio ma verso la fine la velocità continua a scivolare sempre più lentamente. Ho cercato dei problemi nel mio codice e ho cercato dei loop o qualcosa del genere, ma non li ho trovati. Dopo di che ho sostituito il codice di cui sopra con il mio algoritmo e oh mio Dio! L'ottimizzazione ora funziona a una velocità normale e uniforme. Questo mi porta alla conclusione che il problema è in MQL5, da qualche parte nel corpo della funzione OnTradeTransaction. Chiederò agli sviluppatori di prestare attenzione a questo.
p.s. Non posso postare il codice di Expert Advisor. Prova ad usare il codice di cui sopra in uno qualsiasi dei tuoi EA e guarda la velocità di ottimizzazione in OHLC M5 per il periodo dal 2000 ad oggi.
Ho scoperto uno strano "bug".
Sto usando questo codice nel mio EA:
Una singola esecuzione nel tester passa senza problemi, ma appena scelgo i parametri con la ricerca completa, il tester inizia a lavorare dieci o dieci volte più lentamente. Non capisco perché la velocità è adeguata durante una corsa e cala notevolmente durante l'ottimizzazione. Inoltre, cala geometricamente. Si può vedere dalla percentuale che tutto va bene all'inizio ma verso la fine la velocità continua a scivolare sempre più lentamente. Ho cercato dei problemi nel mio codice e ho cercato dei loop o qualcosa del genere, ma non li ho trovati. Dopo di che ho sostituito il codice di cui sopra con il mio algoritmo e oh mio Dio! L'ottimizzazione ora funziona a una velocità normale e uniforme. Questo mi porta alla conclusione che il problema è in MQL5, da qualche parte nel corpo della funzione OnTradeTransaction. Chiederò agli sviluppatori di prestare attenzione a questo.
p.s. Non posso postare il codice di Expert Advisor. Prova ad usare il codice di cui sopra in uno qualsiasi dei tuoi EA e guarda la velocità di ottimizzazione di OHLC M5 per il periodo dal 2000 ad oggi.
Per diversi parametri, l'EA può funzionare per diverse durate
Dopo aver sostituito il codice di cui sopra con il tuo algoritmo
Cioè hanno rinunciato a usare OnTradeTransaction() ? - allora è logico che la velocità sia aumentata - si chiama in ogni occasione
Cosa ti impedisce di fare un caso di test minimo e riferire al service desk?