Errori, bug, domande - pagina 163

 
stringo:
Puoi giustificare praticamente l'espressione x = x++; Cosa vuoi dire? Perché non usare l'incremento senza assegnazione successiva di x++; Come si usa di solito.
È venuto fuori per caso - non capita tutti i giorni di scrivere in linguaggi simili al C, avevo dimenticato che c'è solo x++. Mi aspettavo x = x + 1. Il risultato è divertente...
 
GODZILLA:

No, non lo è! Beh, non ci sono dati, ho chiesto di nuovo... L'ho preso alla quinta richiesta e sono andato, ma è silenzioso e basta!!!

Per gli Expert Advisors e gli indicatori personalizzati è meglio usare ilmodello di elaborazioneevent-driven. Se l'elaborazione degli eventi OnTick() o OnCalculate() non è riuscita a ottenere tutti i dati richiesti, si dovrebbe uscire dal gestore dell'evento, aspettandosi di avere accesso ai dati la prossima volta che il gestore viene chiamato.

Ho letto anche questo e l'ho pensato, ma ecco cosa dà questo codice, per esempio:

int handle;
datetime inittime;
void OnInit(){

  
  handle = iCustom( "GBPUSD", PERIOD_M2, "examples\ATR", 14 );
  Print("Handle=", handle);
  inittime = TimeCurrent();
}
bool isfirst = true;
void OnTick()
  {
    double val[1];
    int start_pos = 1;
    if( isfirst || TimeCurrent()-5*60 > inittime ){
      int n = CopyBuffer( handle, 0, start_pos , 1, val );
      Print("Получено n=", n, 
        (n==-1)?" ошибка при получении данных из индикатора, ":" нет ошибки при получении данных из индикатора",
        " значение ", val[0] );
    }
    isfirst = false; 
  }

Aspetto 5 minuti, dopo di che ottengo il valore dell'indicatore su ogni tick (ho tagliato parte dei log):

2010.10.14 15:47:09 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dal valore indicatore 0.0006792857142856462
2010.10.14 15:47:03 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dal valore indicatore 0.0006792857142856462
2010.10.14 15:47:02 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dal valore indicatore 0.0006792857142856462
2010.10.14 15:47:02 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dal valore indicatore 0.0006792857142856462
2010.10.14 15:47:01 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dal valore indicatore 0.0006792857142856462
2010.10.14 15:47:01 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dal valore indicatore 0.0006792857142856462
2010.10.14 15:46:59 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dall'indicatore valore 0.0006792857142856462
2010.10.14 15:46:59 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dall'indicatore valore 0.0006792857142856462
2010.10.14 15:46:58 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dall'indicatore valore 0.0006792857142856462
2010.10.14 15:46:58 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dall'indicatore valore 0.0006792857142856462
2010.10.14 15:45:11 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dal valore indicatore 0.0006792857142856462
2010.10.14 15:45:11 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dal valore indicatore 0.0006792857142856462
2010.10.14 15:45:10 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dal valore indicatore 0.0006792857142856462
2010.10.14 15:45:05 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dal valore indicatore 0.0006792857142856462
2010.10.14 15:45:03 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dal valore indicatore 0.0006792857142856462
2010.10.14 15:45:03 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dal valore indicatore 0.0006792857142856462
2010.10.14 15:45:02 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dal valore indicatore 0.0006792857142856462
2010.10.14 15:45:01 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dal valore indicatore 0.0006792857142856462
2010.10.14 15:45:00 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dal valore indicatore 0.0006792857142856462
2010.10.14 15:44:58 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dall'indicatore valore 0.0006792857142856462
2010.10.14 15:44:56 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dall'indicatore valore 0.0006792857142856462
2010.10.14 15:44:56 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dall'indicatore valore 0.0006792857142856462
2010.10.14 15:44:54 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dal valore indicatore 0.0006792857142856462
2010.10.14 15:44:08 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dal valore indicatore 0.0006792857142856462
2010.10.14 15:44:05 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dal valore indicatore 0.0006792857142856462
2010.10.14 15:44:05 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dal valore indicatore 0.0006792857142856462
2010.10.14 15:43:27 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dal valore indicatore 0.0006792857142856462
2010.10.14 15:43:25 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dall'indicatore valore 0.0006792857142856462
2010.10.14 15:43:24 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dal valore indicatore 0.0006792857142856462
2010.10.14 15:43:23 23 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dall'indicatore valore 0.0006792857142856462
2010.10.14 15:43:04 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dal valore indicatore 0.0006792857142856462
2010.10.14 15:43:01 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dal valore indicatore 0.0006792857142856462
2010.10.14 15:42:59 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dall'indicatore valore 0.0006792857142856462
2010.10.14 15:42:58 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dall'indicatore valore 0.0006792857142856462
2010.10.14 15:42:58 tstincl (EURJPY,M1) n=1 non ha ricevuto nessun errore durante la ricezione dei dati dal valore dell'indicatore 0.0006792857142856462
2010.10.14 15:42:51 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dal valore indicatore 0.0006792857142856462
2010.10.14 15:42:47 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dal valore indicatore 0.0006792857142856462
2010.10.14 15:42:43 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dal valore indicatore 0.0006792857142856462
2010.10.14 15:42:04 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dal valore indicatore 0.0006792857142856462
2010.10.14 15:41:25 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dall'indicatore valore 0.0007028571428570865
2010.10.14 15:41:22 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dall'indicatore valore 0.0007028571428570865
2010.10.14 15:41:05 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dal valore indicatore 0.0007028571428570865
2010.10.14 15:41:05 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dal valore indicatore 0.0007028571428570865
2010.10.14 15:41:01 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dal valore indicatore 0.0007028571428570865
2010.10.14 15:40:59 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dall'indicatore valore 0.0007028571428570865
2010.10.14 15:40:57 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dall'indicatore valore 0.0007028571428570865
2010.10.14 15:40:54 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dall'indicatore valore 0.0007028571428570865
2010.10.14 15:40:41 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dall'indicatore valore 0.0007028571428570865
2010.10.14 15:40:40 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dall'indicatore valore 0.0007028571428570865
2010.10.14 15:40:38 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dall'indicatore valore 0.0007028571428570865
2010.10.14 15:40:36 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dall'indicatore valore 0.0007028571428570865
2010.10.14 15:40:26 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dal valore indicatore 0.0007028571428570865
2010.10.14 15:40:21 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dall'indicatore valore 0.0007028571428570865
2010.10.14 15:40:21 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dall'indicatore valore 0.0007028571428570865
2010.10.14 15:40:18 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dall'indicatore valore 0.0007364285714285289
2010.10.14 15:40:14 tstincl (EURJPY,M1) n=1 non ha ricevuto alcun errore durante la ricezione dei dati dal valore dell'indicatore 0,0007364285714285289
2010.10.14 15:40:13 tstincl (EURJPY,M1) n=1 non ha ricevuto alcun errore durante la ricezione dei dati dal valore dell'indicatore 0,0007364285714285289
2010.10.14 15:40:07 tstincl (EURJPY,M1) n=1 non ha ricevuto alcun errore durante la ricezione dei dati dal valore dell'indicatore 0,0007364285714285289
2010.10.14 15:40:04 tstincl (EURJPY,M1) n=1 non ha ricevuto alcun errore durante la ricezione dei dati dal valore dell'indicatore 0,0007364285714285289
2010.10.14 15:40:02 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dall'indicatore valore 0.0007364285714285289
2010.10.14 15:40:02 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dall'indicatore valore 0.0007364285714285289
2010.10.14 15:39:59 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dall'indicatore valore 0.0007364285714285289
2010.10.14 15:39:56 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dall'indicatore valore 0.0007364285714285289
2010.10.14 15:39:54 tstincl (EURJPY,M1) n=1 non ha ricevuto nessun errore durante la ricezione dei dati dal valore dell'indicatore 0.0007364285714285289
2010.10.14 15:39:52 tstincl (EURJPY,M1) n=1 non ha ricevuto alcun errore durante la ricezione dei dati dal valore dell'indicatore 0,0007364285714285289
2010.10.14 15:39:51 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dall'indicatore valore 0.0007364285714285289
2010.10.14 15:39:50 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dall'indicatore valore 0.0007364285714285289
2010.10.14 15:39:49 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dall'indicatore valore 0.0007364285714285289
2010.10.14 15:39:46 tstincl (EURJPY,M1) n=1 non ha ricevuto alcun errore durante la ricezione dei dati dal valore dell'indicatore 0,0007364285714285289
2010.10.14 15:39:45 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dall'indicatore valore 0.0007364285714285289
2010.10.14 15:39:45 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dall'indicatore valore 0.0007364285714285289
2010.10.14 15:39:43 tstincl (EURJPY,M1) n=1 non ha ricevuto alcun errore durante la ricezione dei dati dal valore dell'indicatore 0,0007364285714285289
2010.10.14 15:39:42 tstincl (EURJPY,M1) n=1 non ha ricevuto alcun errore durante la ricezione dei dati dal valore dell'indicatore 0,0007364285714285289
2010.10.14 15:39:40 tstincl (EURJPY,M1) n=1 non ha ricevuto alcun errore durante la ricezione dei dati dal valore dell'indicatore 0,0007364285714285289
2010.10.14 15:39:40 tstincl (EURJPY,M1) n=1 non ha ricevuto alcun errore durante la ricezione dei dati dal valore dell'indicatore 0,0007364285714285289
2010.10.14 15:39:39 tstincl (EURJPY,M1) n=1 ricevuto nessun errore quando si ricevono i dati da indicatore il valore 0.0007364285714285289
2010.10.14 15:34:38 tstincl (EURJPY,M1) Ricevuto n=1 nessun errore durante la ricezione dei dati dal valore indicatore 0.0007357142857142544
2010.10.14 15:34:35 tstincl (EURJPY,M1) Handle=10

che dovrebbe cambiare ogni due minuti, come si vede da circa 45 minuti nuove barre su m2 non sono disponibili, né dopo il primo, né dopo il secondo o dopo la decima chiamata a loro.

Forse avete qualcosa di simile?

Domanda agli sviluppatori: come chiamare CopyBuffer correttamente? Ogni volta prima della sua chiamata per sincronizzare le serie temporali? Allora avete bisogno di sapere quale serie temporale e quale carattere si riferisce all'iniziatore della maniglia, per sapere questo, avete bisogno di un posto dove immagazzinare e trasmettere questa informazione a tutti i posti dove chiamate CopyBuffer: il codice diventa complicato e disordinato.

 

Domanda sul tester.

Con quale frequenza vengono memorizzati i risultati dei passaggi dei tester?

Il registro mostra che se i risultati sono memorizzati nella cache, vengono presi da lì senza ricalcolo, risparmiando tempo. Ho affrontato una situazione in cui un computer si è bloccato durante una lunga ottimizzazione (il motivo non è importante). L'ottimizzazione successiva con lo stesso Expert Advisor e gli stessi parametri ha rivelato che non è stato salvato nulla - il tempo è stato sprecato. Naturalmente, c'è una misura di sicurezza - fermare e riavviare l'ottimizzazione di tanto in tanto, ma non è molto conveniente. Costruire 342.

 
Ashes:

Domanda sul tester.

Con quale frequenza vengono memorizzati i risultati dei passaggi dei tester?

Il registro mostra che se i risultati sono memorizzati nella cache, vengono presi da lì senza ricalcolo, risparmiando tempo. Ho affrontato una situazione in cui un computer si è bloccato durante una lunga ottimizzazione (il motivo non è importante). L'ottimizzazione successiva con lo stesso Expert Advisor e gli stessi parametri ha rivelato che non è stato salvato nulla - il tempo è stato sprecato. Naturalmente, c'è una misura di sicurezza - fermare e riavviare l'ottimizzazione di tanto in tanto, ma non è molto conveniente. Costruire 342.

I risultati dell'ottimizzazione vengono scritti nel file al termine dell'ottimizzazione. In caso di arresto di emergenza i risultati non vengono ricordati.

Considereremo cosa si può fare.

Документация по MQL5: Файловые операции / FileWrite
Документация по MQL5: Файловые операции / FileWrite
  • www.mql5.com
Файловые операции / FileWrite - Документация по MQL5
 
stringo:

I risultati dell'ottimizzazione sono scritti in un file quando l'ottimizzazione è completa. I risultati non vengono ricordati in caso di arresto di emergenza.

Considereremo cosa si può fare.

Sarebbe una buona idea.

A proposito, vorrei salvare i risultati dell'ottimizzazione in qualche forma utilizzabile, non solo immagini. O forse non ho trovato il pulsante giusto?

 
Ashes:

Questa sarebbe una buona idea.

A proposito, vorrei salvare i risultati dell'ottimizzazione in qualche forma adatta all'elaborazione, non solo immagini. O forse non ho trovato il pulsante giusto?

tester\cache\<nome_a>.<simbolo>.<periodo>.< modo>.xml
 
Ashes:

Questa sarebbe una buona idea.

A proposito, vorrei salvare i risultati dell'ottimizzazione in qualche forma adatta all'elaborazione, non solo immagini. O forse non ho trovato il pulsante giusto?

E ho anche una domanda, come continuare l'ottimizzazione dopo un arresto forzato, non ho trovato nulla su questo nell'aiuto.
 

sergey1294:
и у меня вопрос тоже есть, как продолжить оптимизацию после принудительного останова, в справке что-то не нашел по этому поводу ни чего.

Basta premere il pulsante di avvio.
 
stringo:
tester\cache\<nome_a>.<simbolo>.<periodo>.<modo>.xml

E un altro articolo di MQL5: Expert Advisor Testing and Optimization Guide:

Dopo che l'ottimizzazione è completa, potete guardare nella cartella "MQL5\Tester\cache" dove troverete il file cci_ma_ea.EURUSD.H1.2.xml che contiene i valori numerici di tutti i parametri e le caratteristiche ottenute come risultato dell'ottimizzazione.

I risultati dell'ottimizzazione sono salvati nel file: ExpertName.SYMBOL.PERIOD.GenerationMode.xml, dove:

  • ExpertName - nome dell'Expert Advisor da ottimizzare;
  • SIMBOLO - simbolo;
  • PERIODO - timeframe (M1,H1,...);
  • GenerationMode - modalità di generazione dei tick (0 - "Ogni tick", 1 - "OHLC su M1", 2 - "Solo prezzi di apertura".

Questo file può essere aperto in Excel per ulteriori analisi.

 
stringo:
Basta premere il pulsante di avvio.
Quindi il tester dovrebbe caricare automaticamente l'elenco delle corse passate nella scheda"Risultati dell'ottimizzazione" e continuare l'ottimizzazione da dove ha lasciato?
Motivazione: