MetaTrader 5 Python User Group - Come usare Python in Metatrader - pagina 24

 
Maxim Dmitrievsky:

Anche i casi visivamente simili non vengono rilevati male.

Non riusciva a interpretare le immagini.

 
fxsaber:

Non riusciva a interpretare le immagini.

articolo in arrivo

è interessante come i cicli e gli obiettivi a volte coincidano nella testa di alcune persone ))
 
fxsaber:

Ho pubblicato un calcolo sul blog che è perfettamente parallelo. Sfortunatamente, le informazioni su OpenCL sono di un livello tale da richiedere una competenza molto più alta di quella che ho io.

Mi piacerebbe vedere un semplice esempio (come nel blog) di implementazione di OpenCL e il risultato dell'accelerazione.

Perché parlare senza un collegamento, anche se c'è un obbligo?
 
Renat Fatkhullin:
Perché non c'è un link, anche se c'è un requisito?

Non c'è nessuna rivendicazione. Non ho fornito un link al post del blog per non dare adito ad accuse di autopromozione.

https://www.mql5.com/ru/blogs/post/731774

Research03: находим простые связи между движениями цены в разных частях суток
Research03: находим простые связи между движениями цены в разных частях суток
  • 2019.12.04
  • www.mql5.com
Как это ни парадоксально, но именно при активной алготоровле много времени уходит на вглядывание в монитор. Иногда возникают иллюзии, будто что-то полезное уловил глазом. Так произошло и в этот раз. Давно была гипотеза, что какие-то движения внтури дня имеют связь с движениями после в этом же дне. Например, может показаться, что микрогепы в...
 
Renat Fatkhullin:

Io (e tutti gli altri) non sono stati in grado di vedere l'uso di questo parametro in Visual Studio negli ultimi 10 anni. Anche avendo attivato tutte le bandiere di segnalazione del loop sweep.

Semplicemente non ha funzionato e non funziona nemmeno su grandi progetti dove ci sono molte possibilità di parallelizzazione. Solo OpenMP diretto con il partizionamento manuale dei cicli funziona.

In MQL5, i cicli non sono parallelizzati.

Sono d'accordo con fxsaber che OpenCL richiede un'alta soglia di ingresso.
Il fatto che ci sia è buono, ma solo pochi sono bravi a farlo.

Il fatto che i cicli in mql5 non siano paralleli, questo era il suggerimento per una possibile implementazione.
Ora la piattaforma è in Clang, forse c'è un buon parallelismo lì, non lo so.
Il punto della proposta è di tirarlo nella direttiva mql.

 
Renat Fatkhullin:

Ho ragione nel supporre che se imposto questo compito per cercare movimenti simili a quelli dell'ottimizzatore, allora la genetica non funzionerà?

Allo stesso tempo, il Tester non sarà abilitato per un'enumerazione completa, poiché ci sono molti passaggi da fare.

Cioè l'unico modo per risolvere questo problema è eseguire lo script in Terminale.

 
Lyuk:

Ho deciso di controllare su un progetto reale - forse python usa sempre il compilatore jit? Ho ranger https://github.com/ranger/ranger, progetto con 122 file (26368 linee), ping per @njit.

$ grep '@njit' $(xbps-query -f ranger)

Risultato: neanche una scoperta. Ho paura che l'uso attivo di questa funzione trasformi l'avvio in una ricerca di più minuti.

 
Lyuk:

Con tutto il rispetto, semplicemente non sai come cucinarlo. Rielabora il tuo esempio:

In Python:


Ecco un confronto in Python 3.8 e MQL5 in modalità single thread/OpenCL: tempo in secondi, meno è meglio è

pi-single.py
pi-multi.py
Velocità PI.mq5 singolo
Velocità PI.mq5 OpenCL
4.1743
0.2101
4.1836
0.1025

Python in modalità JIT tramite numba, il ferro è:

  • Windows 10 x64, Intel Xeon E5-2690 v3 @ 2.60GHz
  • GeForce RTX 2080

L'esempio di utilizzo di OpenCL è molto semplice e non richiede alcun fronzolo per l'ottimizzazione. Anche se il compito non è massiccio per OpenCL e ha innescato overheads nella preparazione, ha comunque dato un risultato molto migliore.

Calcoli paralleli molto grandi possono essere eseguiti di routine con OpenCL. La soglia di ingresso non è alta e ci vuole solo un giorno per capire come usarlo.

File per la riproduzione in allegato.

File:
 
Renat Fatkhullin:

Anche se il compito non è massiccio per OpenCL e ha innescato overheads nella preparazione, ha comunque dato un risultato molto migliore.

Come hai debuggato la parte OpenCL del codice?

 
Renat Fatkhullin:

L'esempio di utilizzo di OpenCL è molto semplice e senza alcun fronzolo per l'ottimizzazione. Anche se il compito non è massiccio per OpenCL e ha innescato overheads nella preparazione, ha comunque dato un risultato molto migliore.


Renat, potresti specificare in quali casi OpenCL avrà un vantaggio, lavorando con un gran numero di array o se c'è un grande insieme di simboli e indicatori in un EA?

Non sono un programmatore professionista, le cose semplici a livello di programmazione sono probabilmente difficili per me