Errori, bug, domande - pagina 432

 
gumgum:

290 in totale e... su)

L'overkill totale fa 290.

Deduco che non c'è nessun passaggio (corsa reale) ma è fisso (se ci sono partite)?

Poiché avete scelto l'algoritmo genetico, esso costruisce il proprio piano di attraversamento e l'uscita della popolazione. L'algoritmo di ottimizzazione genetica è descritto nell'articolo corrispondente.

È irragionevole gestire la genetica con così pochi (290) passaggi. L'algoritmo genetico dovrebbe essere usato con un'enumerazione iniziale di almeno decine di migliaia, preferibilmente milioni/billioni/trilioni, di varianti.

Генетические алгоритмы - это просто!
Генетические алгоритмы - это просто!
  • 2010.05.25
  • Andrey Dik
  • www.mql5.com
В статье автор расскажет об эволюционных вычислениях с использованием генетического алгоритма собственной реализации. Будет показано на примерах функционирование алгоритма, даны практические рекомендации по его использованию.
 

Manuale di riferimento MQL5 - Libreria Standard - Classi per organizzare i dati - CArrayObj (sul sito web e nella guida):

2. Il meccanismo di gestione della memoria è disabilitato.

In questo caso, CArrayObj non è responsabile della liberazione della memoria

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Документация по MQL5
 
Renat:

Sì, non c'è bisogno di testare alla data più recente esistente.

Scegliete una data finale fissa ragionevole sotto forma di 00:00 del giorno lavorativo precedente, o anche la fine della settimana lavorativa precedente. Se si usa sempre l'ultimo giorno, la fine del programma fluttuerà periodicamente, specialmente se il processo di test è lungo usando agenti remoti o claud.


Ho usato domenica come data finale. Dove altro è ragionevole? Non c'è commercio la domenica. Cosa potrebbe galleggiare lì?
 
MoneyJinn:
Ho usato domenica come data finale. Dove altro potrebbe avere senso? Non c'è commercio la domenica. Cosa potrebbe galleggiare lì?

Allora forse il problema è all'altro capo della storia. Di quale lunghezza della storia avete bisogno perché gli indicatori funzionino? All'inizio del test è garantito, a quanto ho capito, un centinaio di barre precedenti.

Se avete bisogno di più, dovreste saltare una parte di storia dopo l'inizio dell'Expert Advisor con una lunghezza maggiore di[numero_necessario_di_barre - 100]. Questo ha risolto i miei problemi con la correlazione dei risultati del tester e dell'ottimizzatore.

 
MetaDriver:

Allora forse il problema è all'altro capo della storia. Di quale lunghezza della storia avete bisogno perché gli indicatori funzionino? All'inizio del test è garantito, a quanto ho capito, un centinaio di barre precedenti.

Se hai bisogno di più, salta un pezzo di storia dopo l'inizio dell'Expert Advisor con una lunghezza maggiore di[numero_necessario_di_barre - 100]. Questo ha risolto i miei problemi con la corrispondenza dei risultati del tester e dell'ottimizzatore.

Grazie, ma dagli screenshot possiamo vedere che la storia di venerdì (24.06.11) viene persa quando si ottimizza attraverso la rete

 

Non è una domanda cruciale, ma comunque. Concatenazione di stringhe. La documentazione descrive due funzioni StringAdd e StringConcatenate.

Il primo dice:"La funzione StringAdd() lavora più velocemente e in modo più economico in memoria rispetto alla concatenazione di stringhe per mezzo di operazioni di addizione.

Il secondo recita:"La funzione StringConcatenate() lavorapiù velocemente e in modo più economico in memoria rispetto al binding di stringhe che usa operazioni di addizione, grazie al fatto che non vengono usate variabili temporanee di tipo stringa.

void OnStart() {
  string string1 = "sdfdsfjssdfads";
  string string2 = "bsadfasdfaaa";
  string string3 = "ssdfsdgasgsaggsda";
  string result;
  uint i, start, stop, length = 10000000;

  start = GetTickCount();
  for(i = 0; i < length; i++)
    result = string1 + string2 + string3;
  stop = GetTickCount();
  Print("№1 ", (stop-start), " milliseconds, i = ", i);
 
  start = GetTickCount();
  for(i = 0; i < length; i++) {
    StringAdd(result, string1);
    StringAdd(result, string2);
    StringAdd(result, string3);
  }
  stop = GetTickCount();
  Print("№2 ", (stop-start), " milliseconds, i = ", i);

  start = GetTickCount();
  for(i = 0; i < length; i++)
    StringConcatenate(result, string1, string2, string3);
  stop = GetTickCount();
  Print("№3 ", (stop-start), " milliseconds, i = ", i);
}

Risultato:

2011.06.26 19:10:55 test (EURUSD,H1)№1 2012 millisecondi, i = 10000000
2011.06.26 19:11:04 test (EURUSD,H1)#2 8269 millisecondi, i = 10000000
2011.06.26 19:11:10 test (EURUSD,H1)#3 6661 millisecondi, i = 10000000

Si scopre, però, che l'addizione abituale è più veloce.

Документация по MQL5: Строковые функции / StringConcatenate
Документация по MQL5: Строковые функции / StringConcatenate
  • www.mql5.com
Строковые функции / StringConcatenate - Документация по MQL5
 
voix_kas:

Si scopre, però, che l'addizione normale è più veloce.

La domanda è già sorta: https://www.mql5.com/ru/forum/58/page13#comment_59630 Date un'occhiata alla discussione più avanti nel testo. Per gli sviluppatori: la conclusione da trarre è che c'è una mancanza di copertura di questo problema nei materiali di riferimento.
Изучаем и пишем вместе на MQL5
Изучаем и пишем вместе на MQL5
  • www.mql5.com
2) вывод всей возможной информации по инструментам, ордерам и др.
 
MoneyJinn:
Ho usato domenica come data di scadenza. Dove altro è ragionevole? Non c'è nessun Torg la domenica. Cosa potrebbe esserci in giro là fuori?

Dato che questo tipo di domanda ha bisogno di dettagli, crea un ticket nel service desk con ulteriori dettagli - cercheremo di risolvere il problema.

Il problema, ovviamente, è la storia e la sua sincronicità.

 
voix_kas:

Non è una domanda cruciale, ma comunque. Concatenazione di stringhe. La documentazione descrive due funzioni StringAdd e StringConcatenate.

Il primo dice:"La funzione StringAdd() lavora più velocemente e in modo più economico in memoria rispetto alla concatenazione di stringhe per mezzo di operazioni di addizione.

Il secondo recita:"La funzione StringConcatenate() lavorapiù velocemente e in modo più economico in memoria rispetto al legame delle stringhe usando operazioni di addizione, grazie al fatto che non vengono usate variabili temporanee di tipo stringa.

Risultato:

2011.06.26 19:10:55 test (EURUSD,H1)№1 2012 millisecondi, i = 10000000
2011.06.26 19:11:04 test (EURUSD,H1)#2 8269 millisecondi, i = 10000000
2011.06.26 19:11:10 test (EURUSD,H1)#3 6661 millisecondi, i = 10000000

Si scopre, però, che l'addizione normale è più veloce.

Questa sembra essere un'ottimizzazione della concatenazione di stringhe con +.

Il compilatore sta subendo delle serie modifiche per quanto riguarda l'inclusione delle modalità di ottimizzazione attese da tempo. Mostreremo i risultati tra un po'.

 
Renat:

Sembra che sia l'ottimizzazione della concatenazione delle stringhe con + a funzionare.

Ora stiamo cambiando seriamente il compilatore in termini di abilitazione delle modalità di ottimizzazione tanto attese. Vi mostreremo i risultati tra un po'.

Capisco. Beh, se è possibile lo descriverai esplicitamente nel forum (cerco di seguire tutti i thread).

Finora nell'algoritmo ho lasciato il lavoro "+".