Esto es lo que puedes hacer con OpenCL directamente en MetaTrader 5 sin ninguna DLL - página 15
![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Se ha eliminado la clave OpenCL antes de ejecutarla. El comportamiento no ha cambiado.
Es decir, el primer lanzamiento del Asesor Experto con CLContextCreate(CL_USE_GPU_ONLY) produce los errores mencionados y el Asesor Experto no se inicia. A partir de la segunda ejecución, el registro de inicialización de los dispositivos OpenCL ya no aparece, sólo hay un error en el registro del EA y éste no funciona. Al reiniciar el terminal, EA con un comandoCLContextCreate(0) corregidofunciona - aparece un paisaje marino mega-realista. Al mismo tiempo, el registro de inicialización tiene los mismos errores deprueba de rendimiento, pero el registro de EA no dice nada.
La clave está ligeramente cambiada:
[HKEY_CURRENT_USER\Software\MetaQuotes Software]
before - "OpenCL"=hex:91,57,f4,f8,2e,0b,19,c5,e9,ef,30,dd,c9,a9,af,8c,00,00,00,00,00,00,00,58,f7,f7,28,88,c5,e1,77,3c,4c,f8,8a,4d,31,88,88,6c,2a,09,a4,b3,d8,e2,3f
после - "OpenCL"=hex:91,57,f4,f8,2e,0b,19,c5,e9,ef,30,dd,c9,a9,af,8c,00,00,00,00,00,00,00,00,58,f7,f7,28,88,c5,e1,77,3c,4c,f8,8a,4d,31,88,88,98,6b,19,ab,41,5c,fd,3f
En principio, este comportamiento no es crítico, si se arreglan los EA/scripts y se evitan los dispositivos dirigiéndose a ellos explícitamente y comprobando el signo CL_DEVICE_TYPE. Incluso, en mi opinión, es mejor distribuir las tareas de forma manejable entre los dispositivos con su propia clasificación. Es simplemente frustrante tener errores de inicialización. Quién sabe cómo se comportará OpenCL en la próxima batalla.
Por favor, ayúdenme a encontrar elSDK original de Intel para aplicaciones OpenCL 2016 R2 para escribir y probar los kernels. Es inútil escribir a Intel en ruso ;)
¿Por qué no intentas usar el SDK de AMD?
Prueba a actualizar a la beta 2543
beta 2545, versión 2560.
Siempre que seejecute el script por primera vez:
Alejecutarel script conCLContextCreate (CL_USE_GPU_ONLY):Seascape (GBPUSD,H1) OpenCL not found. Error=5114
Tengo errores similares, pero hace un año en una tableta más débil funcionaba bien
y ahora ni siquiera eso funciona:con los parámetros: CL_USE_ANY, CL_USE_CPU_ONLY, CL_USE_GPU_ONLY - resultado: -1 con código de error: 5115
con parámetros: 0, 1 - resultado: positivo
beta 2545, versión 2560.
Siempre que seejecute el script por primera vez:
Alejecutarel script con CLContextCreate(CL_USE_GPU_ONLY):Su tarjeta no admite cálculos dobles:
No se puede utilizar la matemática flotante en los cálculos financieros debido a los enormes redondeos y, por lo tanto, requerimos explícitamente el apoyo a los cálculos dobles.
Anteriormente, permitíamos activar OpenCL sin el doble, pero no tenía sentido.
Ahora lo limitamos explícitamente.
Tengo errores similares, pero hace un año en una tableta más débil funcionaba bien
Y ahora ni siquiera esto funciona:con los parámetros: CL_USE_ANY, CL_USE_CPU_ONLY, CL_USE_GPU_ONLY - resultado: -1 con código de error: 5115
con parámetros: 0, 1 - el resultado es positivo
Es muy extraño que el Atom produzca el mismo error sobre el doble.
Tendremos que comprobarlo.
Que Atom dé el mismo error sobre el doble es muy extraño.
Tampoco admite el doble.
Es extraño en sí mismo requerir tal apoyo de la terminal... Mi archivo .cl no tiene ningún doble y no estoy usando OpenCL para cálculos científicos precisos.
Además, no se trata de un viejo Atom, sino de uno moderno con una GPU independiente
Su tarjeta no admite la doble contabilidad
Preguntemos al propio aparato:
La respuesta del tanque:
Dispositivo OpenCL ext: cl_intel_accelerator cl_intel_advanced_motion_estimation cl_intel_ctz cl_intel_d3d11_nv12_media_sharing cl_intel_dx9_media_sharing cl_intel_motion_estimation cl_intel_simultaneous_sharing cl_intel_subgroups cl_khr_3d_image_writes cl_khr_byte_addressable_store cl_khr_d3d10_sharing cl_khr_d3d11_sharing cl_khr_depth_images cl_khr_dx9_media_sharing cl_khr_gl_depth_images cl_khr_gl_event cl_khr_gl_msaa_sharing cl_khr_gl_sharing cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_icd cl_khr_image2d_from_buffer cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_spir
De hecho, no hay soporte para cl_khr_fp64
No encuentro en la red la hoja de datos oficial de laIntel HD Graphics 4400 con información sobre la falta de doble precisión para asegurarme de que no es un problema de controladores.
La única manera de determinar si una tarjeta de vídeo tiene FP64 es utilizar los benchmarks de la izquierda:
https://askgeek.io/ru/gpus/vs/Intel_HD-Graphics-515-vs-Intel_HD-Graphics-4400
Por cierto, el coprocesador gráfico de Renata también parece no tener soporte FP64:
https://askgeek.io/ru/gpus/vs/Intel_HD-Graphics-515-vs-Intel_UHD-Graphics-630
Renat, ¿puedes ejecutar mi script anterior para determinar si tu IGP soporta doble precisión?
Si la respuesta es afirmativa, entonces estará claro por qué su prueba de rendimiento fue exitosa.
Tal vez entonces pruebe la opción de convertir los arrays mqlrates a int en la CPU antes de enviarlos a OpenCL, multiplicándolos por Digits. El consumo de memoria se reduce a la mitad. Después de eso, juega con los vectores o trata de no encontrar el error al usar flotadores. En principio, la precisión de los indicadores Digits+1 debería ser más que suficiente.
Datetime también se puede convertir fácilmente a int, si 1440 minutos en el día están en los primeros 12 bits (o en los primeros 2 bytes), y los días están en bits altos. La ganancia de velocidad de int frente a double debería ser suficiente para cubrir la sobrecarga de las funciones personalizadas tipo iTime en los núcleos.