Errori, bug, domande - pagina 504

 
Vigor:

L'ottimizzatore di codice ha delle limitazioni sulla dimensione dell'albero degli oggetti?

Ottengo un "errore di ottimizzazione dell'albero" in fase di compilazione quando il numero di oggetti è aumentato.

P.S. In modalità debug compila.

Puoi allegare un esempio del codice sorgente nel ticket di servicedesk? Il codice sarà rimosso dopo la verifica.

Molto probabilmente, è a causa delle funzioni lunghe, ma è meglio che ci mandi il codice in modo che possiamo controllare noi stessi e risolvere l'errore. Aiuterà molti commercianti.

 
Valmars:

In primo luogo, che senso ha scaricare forzatamente la storia nel tester? Il tester stesso scaricherà la storia necessaria e accessibile dal server, se ci sono richieste nel codice o operazioni commerciali per i simboli necessari. Dato che il vostro codice è vuoto, il tester non ha bisogno di simulare tick per altri simboli, tranne che per il simbolo su cui viene eseguito il test. Ed è quello che il tester ha scaricato la sua storia. E poiché non c'è storia (nel tester), ci ritroviamo con 0.

In secondo luogo, anche se si aumenta il codice chiamando l'intera cronologia per tutti i simboli, è improbabile che il download di tutta la cronologia disponibile per tutti i simboli abbia successo, e da qualche parte fallirà. Poiché il tester utilizza la base delle citazioni del terminale, ha bisogno di scaricare la storia necessaria.
Il fatto è che quando il tester cerca di simulare tick per altri simboli, il log comincia a inondarsi di messaggi come contiene 0 record M1, perché non c'è storia in questa data e il log cresce a volumi inimmaginabili, e per evitare questi errori, ho bisogno di sapere la data di inizio della storia, e quando viene richiesto, la funzione SeriesInfoInteger(symbol,0,SERIES_SERVER_FIRSTDATE) ritorna 0
 

Potete dirmi cosa significano i valori nella colonna Risultato quando si seleziona la funzione obiettivo Saldo + min Drawdown?

 
tol64:

Potete dirmi cosa significano i valori nella colonna Risultato quando è selezionata la funzione obiettivo Saldo + min Drawdown?

Se guardate l'Aiuto nel terminale, molte domande spariranno perché è tutto scritto lì

Criterio di ottimizzazione

Un criterio di ottimizzazione è un certo fattore, il cui valore definisce la qualità dell'insieme di parametri di input testati. Più alto è il valore del criterio di ottimizzazione, migliore è considerato il risultato del test con il dato set di parametri. Questo parametro può essere selezionato nella scheda "Impostazioni" a destra del campo "Ottimizzazione".

Il criterio di ottimizzazione è richiesto solo per l'algoritmo genetico.

Sono disponibili i seguenti criteri di ottimizzazione:

  • Saldo massimo - l'indicatore di ottimizzazione è il valore massimo del saldo;
  • Equilibrio + massima redditività - il valore massimo dell'equilibrio moltiplicato per la redditività è il criterio ottimizzato;
  • Saldo +Massimo payoff atteso - il prodotto del saldo per il payoff atteso è considerato come un indicatore;
  • Saldo + prelievo minimo - livello di prelievo (100% - Drawdown)*Il saldo viene preso in considerazione oltre al valore del saldo;
  • Saldo + fattore di recupero massimo - il valore è il prodotto del saldo per il fattore di recupero;
  • Saldo + massimoSharpe Ratio - l'indice è il prodotto del saldo per lo Sharpe ratio;
  • Criterio di ottimizzazione personalizzato - quando si seleziona questa opzione, il valore di OnTester() nell'Expert Advisor sarà considerato come criterio di ottimizzazione. Questa opzione permette all'utente di utilizzare qualsiasi indicatore personalizzato per l'ottimizzazione.


 
sergey1294:

Grazie. )) Per qualche motivo stavo pensando al criterio di Drawdown minimo, non al Saldo + Drawdown minimo. ))

 
sergey1294:
Il fatto è che quando il tester cerca di simulare tick per altri simboli, il log comincia a riempirsi di messaggi come contiene 0 record M1 perché non c'è storia in questa data e il log cresce a quantità inimmaginabili e ho bisogno di sapere la data della storia per evitare questi errori, ma quando si richiede la funzione SeriesInfoInteger(symbol,0,SERIES_SERVER_FIRSTDATE) ritorna 0

Per quanto ho capito, prima del test, il tester crea un ambiente di mercato per il conto collegato (l'ultimo collegato se non c'è connessione al server), controlla la sincronizzazione dei dati con il server (di nuovo, se c'è una connessione), carica le quotazioni mancanti dalla data di inizio del test (se c'è una connessione), crea una sequenza di test delle quotazioni per tutti i simboli necessari, e solo allora inizia il test. Cosa succede se non riesce a scaricare la cronologia necessaria (per esempio, a causa della mancanza di cronologia sul server o a causa dell'assenza di connessione con il server) ? Ti dice onestamente. No, non è necessario.

Poi, si vuole ottenere la data di inizio della storia sul server (nel tester). Sembra che questa proprietà non sia inclusa nell'ambiente di mercato del tester, anche se potrebbe essere stata salvata dal server. È un errore? Non credo. Dopo l'inizio del test, il tester non può accedere al server (attraverso il terminale) per scaricare le citazioni di cui avete bisogno. Tutto ciò che è disponibile, è già caricato dal tester durante la fase di inizializzazione del processo di test e la sequenza di test è già stata formata e non può essere modificata. Invece di SeriesInfoInteger(symbol,0,SERIES_SERVER_FIRSTDATE), nel tuo caso, penso che tu possa usare SeriesInfoInteger(symbol,0,SERIES_FIRSTDATE), dovrebbe funzionare nel tester.

 
Renat:

Puoi allegare un esempio del codice sorgente nel ticket di servicedesk? Il codice sarà rimosso dopo la verifica.

Molto probabilmente, si tratta di funzioni lunghe, ma è meglio che ci mandi il codice in modo che possiamo esaminarlo e risolvere l'errore. Aiuterà molti commercianti.

Ok, allegato 2 opzioni con "errore di generazione del codice" e "errore di ottimizzazione dell'albero". La funzione onInit è molto lunga (~1000 righe di codice generato).

Biglietto #217917.

Документация по MQL5: Основы языка / Функции / Функции обработки событий
Документация по MQL5: Основы языка / Функции / Функции обработки событий
  • www.mql5.com
Основы языка / Функции / Функции обработки событий - Документация по MQL5
 
Vigor:

Ok, allegato 2 varianti con "errore di generazione del codice" e "errore di ottimizzazione dell'albero". La funzione onInit è molto lunga (~1000 righe di codice generato).

Biglietto #217917

Grazie, lo esamineremo lunedì.
 
Valmars:

Per quanto ho capito, prima del test, il tester crea un ambiente di mercato per il conto collegato (l'ultimo collegato se non c'è connessione al server), controlla la sincronizzazione dei dati con il server (di nuovo, se c'è una connessione), carica le quotazioni mancanti dalla data di inizio del test (se c'è una connessione), crea una sequenza di test delle quotazioni per tutti i simboli necessari, e solo allora inizia il test. Cosa succede se non riesce a scaricare la cronologia necessaria (per esempio, a causa della mancanza di cronologia sul server o a causa dell'assenza di connessione con il server) ? Ti dice onestamente. No, non è necessario.

Poi, volete ottenere la data di inizio della storia sul server (nel tester). Sembra che questa proprietà non sia inclusa nell'ambiente di mercato del tester, anche se potrebbe essere stata salvata dal server. È un errore? Non credo. Dopo l'inizio del test, il tester non può accedere al server (attraverso il terminale) per scaricare le citazioni di cui avete bisogno. Tutto ciò che è disponibile, è già caricato dal tester durante la fase di inizializzazione del processo di test e la sequenza di test è già stata formata e non può essere modificata. Invece di SeriesInfoInteger(symbol,0,SERIES_SERVER_FIRSTDATE), nel tuo caso, penso che tu possa usare SeriesInfoInteger(symbol,0,SERIES_FIRSTDATE), dovrebbe funzionare nel tester.


La stessa funzione restituisce zero. Ho provato ancheSERIES_TERMINAL_FIRSTDATE . La conclusione è che la funzione SeriesInfoInteger non funziona nel tester. Funziona solo per lo strumento su cui il test è in esecuzione. Forse avete qualche idea su come eseguire il test per strumenti con diverse date di inizio della storia quando si seleziona l'intervallo "Tutta la storia".
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Информация об исторических данных по инструменту
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Информация об исторических данных по инструменту
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Информация об исторических данных по инструменту - Документация по MQL5
 
Di nuovo l'ora sul terminale è saltata a GMT+0 e dovrebbe essere GMT+1, è già stato discusso. Per favore, correggetelo.
Motivazione: