OpenCl e i relativi strumenti. Recensioni e impressioni. - pagina 2

 
Mathemat:

Articul, non devi essere così categorico. Il mondo non sta fermo. Le moderne schede grafiche mostruose, in base alla tua logica, dovrebbero anche essere riconosciute come conseguenza di una mancanza di idee nell'elaborazione delle immagini?

A volte io stesso sono contento di accelerare - solo per evitare di aspettare nel debug del codice per finire i calcoli pesanti, che sono tutti nel mio codice in init() (circa 10 secondi). E tutti gli altri calcoli, che avvengono "al volo", sono molto veloci, quindi non ho bisogno del multithreading.

Credo che questo tipo di potere sia necessario per testare certe idee. Per esempio, sarebbe molto interessante guardare i risultati dei test a termine negli ultimi 10 anni per 32 coppie di valute. E per caricare davvero la macchina, costruiamo il sistema su un piccolo TF. Supponiamo che sia M15. Il periodo di ottimizzazione è di 8 settimane e Out of Sample è di 2 settimane. Anche se sarà più evidente al grafico:

Se l'ottimizzazione richiede 1 minuto, passeremo circa 138 ore. Il numero di passi (ottimizzazioni) è 8320. Questa è una strategia di trading. E se fosse un portafoglio? E se non c'è un sistema e ne stiamo cercando uno? ))) Da questo punto in poi diventa chiaro che non c'è mai abbastanza potere.

 
Mathemat:

Sono felice di accelerare me stesso a volte - solo per evitare di aspettare i calcoli pesanti, che sono tutti nel mio init() (circa 10 secondi), quando si fa il debug del codice. E tutti gli altri calcoli, che avvengono "al volo", sono davvero molto veloci, quindi il multithreading non è necessario.

Probabilmente è possibile calcolarli una volta e metterli in cache?
 
tol64:

Credo che la potenza di questa scala sia necessaria per testare queste o quelle idee {...} Il numero di passi (ottimizzazioni) è 8320.

Bene, e se volete, per esempio, diverse centinaia di migliaia di corse? :-)
 
jartmailru:
Probabilmente è possibile calcolarli una volta e metterli in cache in qualche modo?

Cos'è la "cache" applicata a un semplice MQL4?

Sto solo debuggando il codice dell'indicatore. Quando premo F5 ricompila di nuovo, ma mostra solo informazioni dopo i calcoli, la maggior parte dei quali sono fatti in init().

Naturalmente, potete salvare il codice in un file e leggerlo da lì mentre lo debuggate. Ma questo è un po' macchinoso e nel posto sbagliato.

 

In realtà l'idea non è così assurda, Alexey, l'unica questione è il metodo di attuazione.

Dopo tutto, anche la CPU ha la sua cache per una ragione, e anche più di una)

 

E come proponi di farlo - senza fare riferimento alla codifica esterna a MQL4?

Ho già suggerito - attraverso i file. Ma è lungo e fastidioso.

 

Una cache di solito implica la RAM per un rapido recupero e modifica dei dati successivi.

In sostanza, è un banale database. Chiaramente, questo richiederà una capacità aggiuntiva, ma i guadagni di prestazioni possono essere sostanziali.

 
L'unica "RAM" che sopravviverà alla ricompilazione, usando solo gli strumenti MQL4, è la scrittura delle variabili globali. È questo che intende?
 

Non necessariamente, per esempio, si potrebbe usare la mappatura già implementata da Junko. Non sto nemmeno parlando del tuo compito specifico, solo il principio in sé mi sembra abbastanza razionale.

 
Non so cosa sia la mappatura.