Il terminale MT5 è stato aggiornato oggi e la finestra "Ottimizzazione" non appare durante il test - pagina 5

 
Texnolog:

Perché rompere un buon vecchio algoritmo e sostituirlo con uno nuovo che è 3 volte più lento?

L'algoritmo del tester genetico non è cambiato. E le dichiarazioni su 3 volte sono assolutamente infondate.

Il metodo di lavoro di una cache di risultati precedenti è cambiato. Ed è diventato molto meglio e più completo del precedente.

Se avete bisogno di introdurre un nuovo approccio al metodo genetico, aggiungete una nuova voce alla scheda "ottimizzazione",

Crea una descrizione e delle tecniche per lavorarci.

Dai un'occhiata ai link qui sopra - tutti questi articoli sono del nostro sito. L'ottimizzatore genetico è stato immediatamente discusso per molti anni.

Cerca "tester di strategia", "ottimizzatore genetico" nella ricerca, per favore.

E prendete il mio consiglio ripetuto - l'ottimizzazione del singolo fattore di recupero nella genetica è controindicato. Hai semplicemente ingannato l'algoritmo con un rapporto"profitto/discesa massima" completamente instabile e ingannevole (per gli automatici), che genera facilmente valori enormi. Pensa a come e perché.


Correggeremo il disegno del grafico di ottimizzazione lunedì.

 
Ci sarà un'esecuzione parziale degli ordini limite, a seconda del volume del mercato?
 
pivomoe:
Ci sarà un'esecuzione parziale degli ordini limite, a seconda dei volumi che passano sul mercato?

Avete mai visto dei volumi in un bicchiere nella storia? Questo non è realistico da attuare senza un'istantanea del mercato.

 
Aleksey Vyazmikin:

Avete mai visto dei volumi in un bicchiere nella storia? È impossibile farlo senza uno stampo del vetro.

Non me lo sognerei mai. Vorrei che Buy Limit con prezzo 90 e lotto 10 si attivasse parzialmente, se, diciamo, ci fosse un tick SELL con prezzo 89 e volume 1. Ora è molto triste. L'ordine verrebbe attivato se ci fosse un tick BUY con il prezzo 90 e il lotto 1... e a tutto volume.

 
Renat Fatkhullin:

L'algoritmo del tester genetico non è cambiato. Le affermazioni sulle 3 volte sono assolutamente infondate.

Ciò che è stato cambiato è il modo in cui funziona la cache dei risultati precedenti. Ed è diventato radicalmente migliore e più completo del precedente.


Ho fatto alcuni test comparativi sulle nuove e vecchie build del tester.

Ecco i risultati. Registri e descrizione nel post #34.

11

 

Ecco il mio test con le condizioni suggerite:

  • impostazioni da https://www.mql5.com/ru/forum/241285/page4#comment_7271206
  • tutte le cache dei file del tester una volta rimosse dal disco prima dell'inizio dei test
  • Windows 10, Intel Xeon E5-2630 v4 @ 2.20GHz, 8 core utilizzati per gli agenti

Passaggio completo fino alla fine, poi riavvio del terminale
con fermata a 1000 (circa) passaggi
Continuare dopo l'arresto
Metatrader 5 build 1755
38 sec, 4780 passaggi
15 sec, 1105 passaggi
25 sec, 3487 passaggi
Metatrader 5 build 180933 sec, 5.549 passaggi
9 sec, 1126 passaggi
36 sec, 5863 passaggi


Metatrader 5 build 1755:

  • Bild 1755 full pass, un totale di 8960 varianti passate, di cui 4780 sono state effettivamente calcolate e 4180 sono state prese dalla cache accumulata nella stessa sessione

    dopo di che il terminale viene riavviato per evitare l'effetto diretto delle cache calde in memoria
    2018.04.30 11:20:46.867	Tester	Best result 3391.17 produced at generation 22. Next generation 33
    2018.04.30 11:20:47.118	Tester	genetic calculation is over
    2018.04.30 11:20:47.126	Tester	4697 records written to file cache C:\Users\sys\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\tester\cache\Moving Average.EURUSD.M5.1.xml
    2018.04.30 11:20:47.338	Tester	result cache used 4180 times
    2018.04.30 11:20:47.338	Tester	genetic optimization finished on pass 8960 (of 49644595)
    2018.04.30 11:20:47.349	Statistics	optimization done in 0 minutes 38 seconds
    2018.04.30 11:20:47.349	Statistics	local 4780 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    

  • costruire 1755 con uno stop a 1337 corse. 216 di esse sono prese dalla cache (216 / 1337 = 16% di cache hit, non molto a causa della casualità di partenza e della piccola dimensione del campione)
    2018.04.30 11:24:15.913	Tester	Best result 3254.53 produced at generation 0. Next generation 4
    2018.04.30 11:24:16.775	Tester	file cache used 19 times
    2018.04.30 11:24:16.775	Tester	result cache used 216 times
    2018.04.30 11:24:16.775	Tester	genetic optimization finished on pass 1337 (of 49644595)
    2018.04.30 11:24:16.775	Statistics	optimization done in 0 minutes 15 seconds
    2018.04.30 11:24:16.775	Statistics	local 1105 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    
  • build 1755 con continuazione dopo un arresto su Stop, il terminale non si è riavviato, continuazione.

    test continua dal punto di arresto e non dall'inizio come nella build 1809, quindi da 10496 passaggi proposti sono stati presi 3487 e 66+3814 presi dalla cache (66+3814 / 10496 = 36% cache hit)
    2018.04.30 11:26:27.931	Tester	Best result 3363.35 produced at generation 15. Next generation 32
    2018.04.30 11:26:28.104	Tester	genetic calculation is over
    2018.04.30 11:26:28.111	Tester	3422 records written to file cache C:\Users\sys\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075\tester\cache\Moving Average.EURUSD.M5.1.xml
    2018.04.30 11:26:28.539	Tester	file cache used 66 times
    2018.04.30 11:26:28.539	Tester	result cache used 3814 times
    2018.04.30 11:26:28.539	Tester	genetic optimization finished on pass 8704 (of 49644595)
    2018.04.30 11:26:28.550	Statistics	optimization done in 0 minutes 25 seconds
    2018.04.30 11:26:28.550	Statistics	local 3487 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    





Metatrader 5 build 1809:

  • costruire 1809 passaggi completi, totale 8960 passaggi, di cui 5549 sono stati effettivamente contati e 3411 presi dalla cache hit accumulata nella stessa sessione

    dopo di che il riavvio del terminale è fatto per evitare l'influenza diretta delle cache calde in memoria.
    2018.04.30 10:50:58.997 Tester  Best result 3391.17 produced at generation 22. Next generation 33
    2018.04.30 10:50:59.485 Tester  genetic calculation is over
    2018.04.30 10:50:59.485 Tester  result cache used 3411 times
    2018.04.30 10:50:59.485 Tester  genetic optimization finished on pass 8960 (of 49644595)
    2018.04.30 10:50:59.495 Statistics      optimization done in 0 minutes 33 seconds
    2018.04.30 10:50:59.495 Statistics      local 5549 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    

  • costruire 1809 con fermata a 1348 passaggi. 222 di loro sono stati presi dalla cache (222 / 1348 = 16% di cache hit, non abbastanza a causa della casualità di partenza e del piccolo campione)
    2018.04.30 11:00:59.532 Tester  Best result 3263.17 produced at generation 0. Next generation 4
    2018.04.30 11:00:59.742 Tester  result cache used 222 times
    2018.04.30 11:00:59.742 Tester  genetic optimization finished on pass 1348 (of 49644595)
    2018.04.30 11:00:59.742 Statistics      optimization done in 0 minutes 09 seconds
    2018.04.30 11:00:59.742 Statistics      local 1126 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    
  • build 1809 con continuazione dopo un arresto su Stop, il terminale non si è riavviato, continuazione.

    come il test è iniziato dall'inizio, dai 10240 passaggi proposti è stato fatto pulito 5863 e 4377 sono stati presi dalla cache (4377 / 10240 = 42% cache hit)
    2018.04.30 11:04:28.046 Tester  Best result 3391.17 produced at generation 27. Next generation 38
    2018.04.30 11:04:28.477 Tester  genetic calculation is over
    2018.04.30 11:04:28.477 Tester  result cache used 4377 times
    2018.04.30 11:04:28.477 Tester  genetic optimization finished on pass 10240 (of 49644595)
    2018.04.30 11:04:28.488 Statistics      optimization done in 0 minutes 36 seconds
    2018.04.30 11:04:28.488 Statistics      local 5863 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
    



Ora le conclusioni:

  1. La tua affermazione su "3 volte più lento" è sbagliata.

  2. Infatti, il tester della build 1809 è diventato più veloce attraverso l'ottimizzazione e la riscrittura dei processi interni.

    Questo può essere visto nel tempo di passaggio completo, è di 33 secondi invece di 38 secondi. E 33 secondi per un numero maggiore di passaggi.

    Se ricalcoliamo il numero di passaggi al secondo, risulta:
    - build 1755 dà 4780 passaggi / 38 sec = 125 passaggi al secondo
    - build 1809 dà 5549 passaggi / 33 sec = 168 passaggi al secondo

  3. Il nuovo schema dell'ottimizzatore genetico "continuazione dopo lo stop" con generazione di un nuovo piano di popolazione è corretto.

    Stiamo rivalutando il concetto di tester e correggendo vecchie decisioni sbagliate.

    Poiché i test genetici devono essere eseguiti più volte per coprire l'area di ricerca in modo più completo, il nostro nuovo modello con la visualizzazione delle esecuzioni precedenti dalla cache permette una migliore comprensione della meccanica del flusso di lavoro della genetica.

    Il nuovo modello di visualizzazione dei risultati di ottimizzazione con tutti i dati delle cache calcolate in precedenza aggiunti alla tabella permette di vedere il quadro in modo più completo. È possibile calcolare la vostra strategia in pezzi e vedere i risultati completi ogni volta, comprese le corse precedenti.

    È a causa delle tabelle dei risultati fusi davvero grandi che abbiamo disabilitato la visualizzazione rieltime della lista dei risultati, e mostriamo il risultato aggregato dopo aver fuso tutti i risultati precedenti.
 

Il mio robot si blocca durante l'inizializzazione, sia in Runtime che in Debug. La compilazione va bene.

C'è una classe con membri statici nel codice, probabilmente a causa loro. Prima tutto funzionava bene. Ma ora riporta un errore durante l'inizializzazione globale.

Rimossi i membri statici dalla classe, funziona bene.

 
Dennis Kirichenko:

Il mio robot si blocca durante l'inizializzazione, sia in Runtime che in Debug. La compilazione va bene.

C'è una classe con membri statici nel codice, probabilmente a causa loro. Prima tutto funzionava bene. Ora scrive un errore durante l'inizializzazione globale.

Rimossi gli elementi statici nella classe, lanciati normalmente.

Scrivi la tua richiesta al Service Desk e allega l'Expert Advisor (può essere un file ex5), per favore.

 
Aleksey Vyazmikin:

Tutto questo è fantastico!

Tuttavia, per favore riporta la scheda "Ottimizzazione" - è impossibile lavorare senza l'analisi operativa! Le tabelle grandi sono lente - facciamo un filtro - mostra i primi 20 per ogni criterio - non è così impegnativo in termini di risorse(?), ma aiuterà a vedere il quadro. E quei miliardi di passaggi, chi li fa? Sono unità con capacità enormi - tu stesso stai parlando della ragionevolezza dell'applicazione della genetica, e lì non ci sono questi portmanteaus. Quindi più di 10k passaggi sono una rarità.


Triste.

Almeno è stato possibile costruire un quadro su dati preliminari, mentre l'ottimizzazione è in corso.

 
Renat Fatkhullin:

Siamo impegnati in un grande aggiornamento delle prestazioni del tester e stiamo ridisegnando le modalità di carico pesante. Sono stati fatti grandi miglioramenti e nuovi metodi di accelerazione saranno presto implementati.

La finestra dell'elenco delle corsie ha deciso di mostrarsi alla fine dell'errore di calcolo, per non sprecare risorse davvero grandi per mantenere, riordinare e visualizzare l'elenco delle corsie in continua evoluzione.

C'è stato davvero un enorme spreco di risorse e rallentamenti. Soprattutto quando si parla di centinaia di migliaia di righe, milioni e decine di milioni di passaggi. Non ha senso guardare con gli occhi un mucchio di dati preliminari.


Facciamo la nostra ottimizzazione ed eseguiamo test con 100 milioni di passaggi completi.

È chiaro che con questi numeri è fuori questione riordinare in tempo reale e visualizzare una tabella di 2-5-10-50 milioni di valori. C'è solo un'opzione: raccogliere tutto in modo rapido ed economico, ordinarlo definitivamente e fornire una visione di qualsiasi profondità.

Raccontaci e basta.