Discussione sull’articolo "Velocizza i Calcoli con il Cloud Network MQL5"

 

Il nuovo articolo Velocizza i Calcoli con il Cloud Network MQL5 è stato pubblicato:

Quanti core hai sul tuo computer di casa? Quanti computer puoi utilizzare per ottimizzare una strategia di trading? Qui mostriamo come utilizzare il Cloud Network MQL5 per accelerare i calcoli ricevendo la potenza di calcolo in tutto il mondo con un click del mouse. La frase "Il tempo è denaro" diventa ancora più attuale con il passare degli anni e non possiamo permetterci di aspettare calcoli importanti per decine di ore o addirittura giorni.

Per gli scopi sopra indicati, utilizziamo un computer con Intel Core i7 (8 core, 3,07 GHz) e 12 GB di memoria con sistema operativo Windows 7 64 bit e MetaTrader 5 build 1075.

Viene testato l'Expert Advisor Moving Average.mq5 del pacchetto di consegna standard con le seguenti impostazioni:

  • Simbolo: EURUSD H1
  • Intervallo di test: dal 01.01.2011 al 01.10.2011
  • Modalità di simulazione del prezzo: 1 minute OHLC (vengono utilizzati i prezzi Open, High, Low e Close su barre da 1 minuto)
  • Tipo di ottimizzazione: algoritmo completo lento, totale 14.040 passaggi
Parametri ottimizzati:

Parametri di ottimizzazione


Autore: MetaQuotes

 

E la genetica? Lì, "100 volte" è irraggiungibile. Beh, se si tratta di 20-30 volte, o anche meno.

 
notused:

E la genetica? Lì, "100 volte" è irraggiungibile. Beh, se si tratta di 20-30 volte, o anche meno.


https://www.mql5.com/ru/forum/4927/page114 

stringo 2012.02.02 15:50


Al momento del calcolo dell'algoritmo genetico, l'intera generazione successiva (da 64 a 256 lavori di calcolo) viene data al cloud.

In una ricerca completa, ogni server cloud riceve uno stack di 512 lavori. Poi, quando un certo numero di lavori viene completato, ne viene aggiunto il doppio (ad esempio, se un server cloud segnala 5 lavori completati, ne aggiunge immediatamente 10).

Quindi l'accelerazione in GA non è di 20-30 volte, ma di almeno 64 volte, al massimo 256 volte.

 
Urain:
quindi l'accelerazione del GA non è di 20-30 volte, ma di almeno 64 volte, al massimo 256 volte.
Il GA non può essere più veloce dell'enumerazione di un numero simile di parametri. Il collo di bottiglia di GA è l'attesa dell'agente più lento. E si verifica (in media) da 10240 / 256 a 10240 / 64 volte (da 40 a 160 volte, in base ai dati di stringo). Ed è l'agente più lento a determinare la velocità. Inoltre, nell'articolo Rosh aveva 4 agenti locali propri -> il limite di accelerazione per il GA può essere 256 / 4 = 64 volte (questo per parlare di valori comparabili), ma nella vita è molto meno.
 
notused:
Il GA non può essere più veloce dell'enumerazione di un numero simile di parametri. Il collo di bottiglia di GA è l'attesa dell'agente più lento. E si verifica (in media) da 10240 / 256 a 10240 / 64 volte (da 40 a 160 volte, in base ai dati di stringo). Ed è l'agente più lento a determinare la velocità. Inoltre, nell'articolo Rosh aveva 4 agenti locali propri -> il limite di accelerazione per GA può essere 256 / 4 = 64 volte (questo per parlare di valori comparabili), ma nella vita è molto meno.

Come molti hanno notato, i server cloud rilevano automaticamente gli agenti lenti e ridistribuiscono i passaggi "rallentati" ad altri agenti (sia nell'enumerazione completa che nella genetica).

Inoltre, gli agenti con PR>100 sono accettati in genetica, il che riduce seriamente le conseguenze dell'uso di agenti lenti.

 
Farò come Rosh, ma imposterò più limiti di parametri, in modo che ci sia genetica. Non appena tutto sarà finito, riferirò.
 

Quindi, le condizioni di prova - 4 Intel Core i5-2500 @ 3,3 GHz, 4 GB di RAM, Windows XP 64 bit, terminale x64 bild 581 (PR = 160-180). Durante il test, è stato eseguito un browser e guardato un film. Sono state utilizzate le stesse condizioni dell'articolo (Moving Avarege Expert Advisor, H1, su OHLC a 1 m. + genetica). Impostazioni:Impostazioni

Test su kernel locali:

Nuclei locali

Test su Cloud:

Nuvola

Senza esitazione, vediamo che Cloud ha contato 8,7 volte più velocemente. Questo è tutto. Ma in realtà la rete è ancora più lenta perché è stata utilizzata la cache di calcolo.

Quindi, i core locali hanno eseguito 8704 - 3666 = 5038 passaggi in 30 min. 2 sec = 1802 secondi -> 0,3577 secondi per passaggio in media.

Il cloud ha eseguito 8704 - 4455 = 4249 passaggi in 3 min. 28 sec = 208 secondi -> il tempo di attesa per un passaggio da parte di Cloud è in media di 0,049 secondi.

In totale, Cloud ha accelerato il calcolo di un fattore pari a 0,3577 / 0,049 = 7,3 volte (!).

Le mie ipotesi iniziali, secondo cui la cifra avrebbe probabilmente raggiunto le 20 volte, si sono rivelate un po' ottimistiche. E non possiamo nemmeno parlare di centinaia.

Sì, ho usato core potenti, cioè ho barato un po'. Ma resta il fatto che anche quei 4249 passaggi con la genetica la rete li ha fatti in 208 secondi e 14040 passaggi con la ricerca completa in 164 secondi (il tempo di attesa per un passaggio è di 0,0117 secondi). In totale, la ricerca genetica di un passaggio su Cloud è in media più lenta della forza bruta (sull'esempio dell'EA in questione) di 0,049 / 0,0177 = 2,8 volte.

 

Non sto criticando la rete - certamente Cloud Network è la cosa migliore che sia stata fatta da quando esiste il software di trading. Ed è una cosa molto necessaria (anche se non viene utilizzata molto, ma questo avverrà con il tempo).

Vorrei più correttezza negli slogan pubblicitari. Ok, bygones

 

Se si eseguono test con un tempo di passaggio inferiore al secondo, è necessario tenere conto della latenza di rete, che spesso è maggiore o uguale al tempo di un task "veloce". Abbiamo fatto molti sforzi per eliminare gli overhead del sistema sulla latenza di rete con il batching dei task. Ci siamo riusciti, anche se il problema non può essere completamente sconfitto.

Il vostro esempio dimostra pienamente che avete gareggiato in una lotta a breve termine con un tempo di transito notoriamente inferiore al ritardo della rete. Per valutare davvero la potenza di claud, è necessario allontanarsi dai compiti con tempi di esecuzione inferiori al secondo e passare a quelli più costosi.

Ho eseguito una genetica con un compito simile ma con un tempo di passaggio superiore a 10 secondi su un processore i7. Posterò i risultati del completamento entro un'ora.

 

Durante 3 min. 28 secondi di utilizzo della rete, mi sono stati addebitati 2 o 3 centesimi (nel terminale - 3, sul sito - 2, e 3 congelati). Facciamo 3, o anche per semplicità, l'utilizzo della rete per la genetica costa 1 centesimo per un minuto. In totale, un'ora costa 60 centesimi, 24 ore = 14,4 dollari. Mi sembra molto costoso. I prezzi dovrebbero essere ridotti di almeno tre volte per renderli attraenti per i consumatori (molte persone testano gli EA, ma non tutti sono in grado/volontari di pagare circa 15 dollari al giorno per Cloud, e se fosse di 5 dollari o meno - ci sarebbero più persone disposte).

Inoltre, ho già capito da solo come pre-stimare il costo dell'ottimizzazione di qualsiasi EA (in media, ovviamente). Algoritmo per la genetica (analogamente alla forza bruta):

1) Eseguire Moving Avarage genetics sui core locali (+ si possono anche collegare gli agenti remoti); alla fine, calcolare il tempo di attesa per un passaggio -> T1

2) Calcolare T1 / 0,049 = T2 - quante volte l'ottimizzazione è accelerata dalla genetica nel Cloud.

3) Eseguire l'ottimizzazione sui core locali (+ è possibile collegare anche gli agenti remoti; deve essere configurato come al punto 1) dell'EA richiesto e attendere, ad esempio, 100 passaggi. Calcolare il tempo di un passaggio (attraverso il log - trovare il primo e l'ultimo record) -> T3

4) 10240 * T3 / T2 = T4 -> tempo di test stimato in Cloud.

5) T4 / 60 = costo del test in centesimi.

(si può anche tenere conto dei core, per questo si usa T2' = T2 + 1).

Questa è una stima basata sull'ottimizzazione del Moving Avarage. Forse tra un mese o due saranno disponibili core più potenti e i numeri cambieranno, così come i costi.

Credo che il mio ragionamento sia chiaro

 
Renat:

Il vostro esempio dimostra completamente che stavate gareggiando in una lotta a breve termine con un tempo di passaggio noto per essere inferiore al ritardo della rete.

Sì, lo sospettavo, ma non l'avevo considerato. Aspettiamo i tuoi risultati.

E il mio post precedente, par. 2 dovrà essere corretto dopo i vostri test.