Ecco cosa si può fare con OpenCL direttamente in MetaTrader 5 senza alcuna DLL - pagina 16

 

Controllerò la resa.

Senza la doppia matematica non c'è niente da fare nel nostro campo. Tanto più nel 2020.

Mentre nei primi giorni di OpenCL si poteva ancora cercare dei compromessi ed essere ingannati dalla nozione "beh, si può calcolare qualcosa in float", oggi non è così.

Qualsiasi tentativo di convertire doppio -> int -> doppio uccide completamente le prestazioni e il profitto, specialmente su grandi dimensioni.

L'opzione corretta è usare formati nativi e schede più moderne con nuovi driver.

 

Il supporto c'è:

OpenCL device name: GeForce GTX 1050 Ti with Max-Q Design
OpenCL device ext: cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_fp64
                   cl_khr_byte_addressable_store cl_khr_icd cl_khr_gl_sharing cl_nv_compiler_options cl_nv_device_attribute_query cl_nv_pragma_unroll cl_nv_d3d10_sharing
                   cl_khr_d3d10_sharing cl_nv_d3d11_sharing cl_nv_copy_opts cl_nv_create_buffer cl_khr_int64_base_atomics cl_khr_int64_extended_atomics


OpenCL device name: Intel(R) UHD Graphics 630
OpenCL device ext: cl_khr_byte_addressable_store cl_khr_fp16 cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_icd cl_khr_local_int32_base_atomics 
                   cl_khr_local_int32_extended_atomics cl_intel_subgroups cl_intel_required_subgroup_size cl_intel_subgroups_short cl_khr_spir cl_intel_accelerator 
                   cl_intel_driver_diagnostics cl_khr_priority_hints cl_khr_throttle_hints cl_khr_create_command_queue cl_intel_subgroups_char cl_intel_subgroups_long
                   cl_khr_fp64 cl_khr_subgroups cl_khr_il_progr
 
Non voglio discutere del moderno modello di monetizzazione nell'IT. L'acquisto di un nuovo hardware che lavora al 25% dell'efficienza possibile rispetto all'utilizzo di algoritmi ottimizzati non causerà ovviamente il riscaldamento globale :)

Rimanderemo l'argomento OpenCL e MT5 per una data successiva, quando ci sarà qualche soldo in più per un computer desktop nel budget familiare.

Ho un favore da chiederti, Renat. Nel manuale di MQL5 (sezione OpenCL) aggiungere un disclaimer che dica che prima di usare dati e calcoli doppi nelle schede grafiche/coprocessori grafici, bisogna essere sicuri che siano supportati da questi dispositivi. In modo che i neofiti di MQL5 non si facciano illusioni sul vecchio hardware.

Grazie per il vostro tempo.
 
aim-1:

Una richiesta a te Renat. Si prega di aggiungere nel manuale MQL5 (sezione OpenCL) un disclaimer che affermi che prima di usare dati e calcoli doppi nelle schede grafiche/coprocessori grafici, si dovrebbe verificare che siano supportati da questi dispositivi. In modo che i neofiti di MQL5 non si facciano illusioni sul vecchio hardware.

Questo è già scritto nel test automatico della mappa e non è selezionabile: fatto nell'ultima release

OpenCL  test compilation failed with error: use of type 'double' requires cl_khr_fp64 extension to be enabled 

Si può dire delle vecchie mappe senza doppio supporto che sono assolutamente inutili per i calcoli matematici.

Questa è la realtà.

 
Renat Fatkhullin:

Questo è già scritto nel test automatico della mappa e non è selezionabile: fatto nell'ultima release

Ho molto rispetto per MetaQuotes. Le piattaforme molto buone sono sviluppate e mantenute da voi.

Disclamer (requisiti di sistema) è logico se si vuole tenere traccia della reputazione. Perché i principianti ingenui (come me:) si entusiasmano per una caratteristica interessante, raccolta in rete, e avendo fallito nel lancio di MT5, possono raffreddarsi verso una nuova piattaforma, perché hanno l'impressione che ci siano potenzialmente altri fallimenti mentre la usano. Per esempio, la necessità di capire l'OOP nelle librerie standard, ecc.

A proposito, sarebbe utile avere un modello di un semplice Expert Advisor di trading senza OOP (preferibilmente direttamente sul sito MT5), in modo che anche gli infanti di MQL4 possano abituarsi rapidamente a MQL5, pur avendo il pieno controllo sul codice. In questo senso, un nuovo tutorial MQL5 (preferibilmente più breve - senza rimaneggiare quelli vecchi) sarebbe una buona idea. Allora la comunità di trading (il principale motore/arresto del progresso) striscerebbe più velocemente verso una nuova piattaforma.

Grazie ancora per il vostro duro lavoro.
Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека MQL5 написана на языке MQL5 и предназначена для облегчения написания программ (индикаторов, скриптов, экспертов) конечным пользователям. Библиотека обеспечивает удобный доступ к большинству внутренних функций MQL5.
 
aim-1 : Rispetto MetaQuotes. Ottime piattaforme sono sviluppate e supportate da voi.

Disclaimer (requisiti di sistema) è logico se vuoi monitorare la tua reputazione. Perché i neofiti ingenui (come me :) preso fuoco di caratteristiche interessanti raccolte in rete e interrotto quando MT5 è lanciato può raffreddare per un lungo periodo alla nuova piattaforma, come sembra che altri guasti sono potenzialmente possibili quando si utilizza. Per esempio, la necessità di capire OOP nelle librerie standard, ecc.

Con l'OOP, tra l'altro, sarebbe bello esporre ufficialmente (meglio, proprio sulle pagine del sito MT5) un template di un semplice Expert Advisor di trading senza OOP, in modo che anche i neonati di MQL4 possano essere rapidamente coinvolti in MQL5, pur controllando completamente il lavoro del codice. In questo senso, un nuovo libro di testo su MQL5 (preferibilmente più breve - senza ripetere la vecchia acqua) non sarebbe male. Allora la comunità di trading (il principale motore/arresto del progresso) striscerà verso la nuova piattaforma più velocemente.

Grazie ancora per il vostro duro lavoro.

Alcuni esempi vengono forniti con il pacchetto MQL5. Programmazione totalmente orientata alle procedure. Non sono sicuro di MQL4

 
Non chiaro
//test.mqh
void f( int ii )
{
        for ( int i = -ii; i <= ii; i++ )
        {
                int j = CLContextCreate( i );
                if ( j != -1 )
                {
                        CLContextFree( j );
                        Print( ii, ":", i, ":", j );
                }
        }
}
#include "test.mqh"
void OnStart() { f( 32765 ); }
Risultato:
32765:0:2147352576
32765:1:2147418112

e se

#include "test.mqh"
void OnStart() { f( 32766 ); }

Risultato:

32766:0:2147418112

Perché c'è un'uscita (linea) in un caso e due nell'altro?

 
A100:
Non chiaro Risultato:

e se

Risultato:

Perché c'è un'uscita (linea) in un caso e due nell'altro?

Grazie per il messaggio.
Fisso.

Overflow dell'handle OpenCL dovuto a un frequente sovrautilizzo dell'handle, più di SHORT_MAX volte

 
A quanto pare hanno risolto il problema in modo drastico, ora non funziona nemmeno
void OnStart()
{
        if ( CLContextCreate( 0 ) == -1 ) Print( GetLastError() ); //5114

}

e una settimana fa funzionava bene. Perché disabilitare OpenCL se non c'è supporto per il doppio e non viene utilizzato?

 

Sì, ho deciso di non usare affatto le vecchie schede senza doppio supporto.

Le vecchie schede in generale sono molto cattive, compresi i cattivi driver non riparati che spesso si bloccano, facendo cadere il terminale.

La realtà è che dovreste già controllare esplicitamente le versioni dei driver, come fanno gli sviluppatori di giochi per PC. I driver predefiniti di Microsoft non vi porteranno molto lontano.
Motivazione: