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
Y otra pregunta, ¿cuánto tiempo se tarda en transferir / preparar los datos para la tarjeta de vídeo, he oído una opinión que OpenCL para la tarjeta de vídeo no tiene sentido utilizar para el comercio real debido a las pérdidas de tiempo en la transferencia de datos para el procesamiento, ¿es realmente así?
La figura 8 muestra la salida de los intervalos de tiempo entre los puntos de control en el código del programa a la consola del terminal. Lo duplicaré aquí:
Donde:
Cargar datos en el array (Buffering en la figura) tardó 26.6ms (quizás tuve que cargar o sincronizar algo), cargar los mismos datos en la memoria de la tarjeta de vídeo tardó 8.7ms.
Sí, si corres con datos grandes de un lado a otro muchas veces, puedes perder mucho tiempo. Por lo tanto, tenemos que construir el algoritmo de tal manera que se minimice la copia a/de la memoria de la GPU. Quiero modificar el código para probarlo en el historial de ticks en un futuro próximo. Allí los volúmenes serán mayores. Será interesante ver el tiempo de copia.
Hasta ahora, el proceso más costoso es la inicialización. Tarda 316ms. Pero se puede hacer una vez si utilizamos los mismos núcleos a partir de ahora.
La figura 8 muestra la salida de intervalos de tiempo entre puntos de control en el código del programa a la consola del terminal. La duplicaré aquí:
Donde:
La carga de datos en el array (Buffering en la figura) tardó 26,6ms (quizás tuve que cargar o sincronizar algo), la carga de los mismos datos en la memoria de la tarjeta de vídeo tardó 8,7ms.
Sí, si corres con datos grandes de un lado a otro muchas veces, puedes perder mucho tiempo. Por lo tanto, tenemos que construir el algoritmo de tal manera que se minimice la copia a/de la memoria de la GPU. Quiero modificar el código para probarlo en el historial de ticks en un futuro próximo. Allí los volúmenes serán mayores. Será interesante ver el tiempo de copia allí.
Hasta ahora, el proceso más costoso es la inicialización. Tarda 316ms. Pero se puede hacer una vez si usamos los mismos núcleos.
Gracias, ¡muy informativo! Sin embargo, ¿cómo se compara esto con un procesador?
En cualquier caso, para muchas estrategias que funcionan por apertura de barra, puede ser útil si necesitas hacer cálculos complejos, por ejemplo, adaptación automática al mercado, tanto en la inicialización como una vez al día.
Gracias, ¡muy informativo! Sin embargo, ¿cómo se compara esto de manera similar a un procesador?
De todas formas, para muchas estrategias que trabajan en apertura de barra, puede ser útil si necesitas hacer cálculos complejos, por ejemplo la adaptación automática al mercado, tanto en la inicialización como una vez al día.
Al final del artículo hay tablas comparativas de rendimiento. El EA se optimiza en el probador de estrategias, luego se comparan los resultados obtenidos y el tiempo empleado con lo obtenido por el probador OpenCL. Punto 3, "Comparación de rendimiento".
Con una profundidad de prueba de 9 meses en el modo "OHLC en M1", el probador OpenCL gestiona como máximo 1 segundo al optimizar dos parámetros de 100 pasos cada uno (10000 pasadas).
Dicha optimización se puede realizar al menos cada minuto en 60 pares, lo que ya se puede llamar adaptación automática al mercado, si entiendo bien lo que quiere decir.
Al final del artículo hay tablas comparativas de rendimiento. El EA se optimiza en el probador de estrategias, luego se comparan los resultados obtenidos y el tiempo empleado con lo obtenido por el probador OpenCL. Punto 3, "Comparación de rendimiento".
En la profundidad de prueba de 9 meses en el modo "OHLC en M1", el probador OpenCL gestiona como máximo 1 segundo al optimizar dos parámetros de 100 pasos cada uno (10000 pasadas).
Dicha optimización se puede realizar al menos cada minuto en 60 pares, lo que ya se puede llamar adaptación automática al mercado, si entiendo bien de lo que hablas.
He visto la tabla, la cuestión está en una iteración (el resultado de una pasada) tanto para CPU como para GPU, ya que hay preparación y transferencia de datos. Sin embargo, esto es obviamente un tema útil, es una lástima que no todo el mundo puede utilizar debido a su simplicidad.
¿Estoy en lo cierto al decir que si hay una granja de GPUs de múltiples tarjetas, el cálculo se hará en todas las tarjetas?
MT5 sólo soporta un dispositivo GPU, por desgracia.
MT5 solo soporta un dispositivo GPU, desafortunadamente.
Se pueden utilizar múltiples dispositivos.
Depende del desarrollador decidir qué dispositivos utilizar y cómo utilizarlos.
Se pueden utilizar varios dispositivos.
El desarrollador decide qué dispositivos utilizar y cómo utilizarlos.
Si no me equivoco, antes escribiste que sólo se puede utilizar un dispositivo a la vez - elegir cuál, sí se puede, ¿ha cambiado algo?
No estamos hablando de agentes, ellos, según tengo entendido, cada uno puede usar un dispositivo, sólo que de nuevo no está claro cómo vincular un agente a un dispositivo en particular...Artículo muy interesante!
Análisis de clustersDesafortunadamente su solución no ofrece 'optimización genética'.
Pero estas podrían ser fácilmente añadidas, incluso una que exceda las opciones y beneficios del usuario en comparación con MQ5. Mq5 sólo tiene una opción - genética o todo o lento.
Todo lo que tienes que hacer
1) Crear una tabla de los resultados con sus combinaciones de parámetros,
2) ordenarlos de acuerdo a los resultados,
3) dividir en por ejemplo 5 o (n definible por el usuario) secciones,
4) a continuación, seleccione aleatoriamente combinaciones de parámetros de cada sección,
5) Cambie un valor para estas combinaciones de parámetros seleccionadas,
6) compruebe si esta combinación ya ha sido probada (entonces vuelva a 4)
7) Pruebe.
8) Empezar de nuevo en 1) a menos que se haya alcanzado un criterio de interrupción.
Sólo se selecciona una combinación de la peor sección, dos de la siguiente mejor, luego tres, y así sucesivamente.
De este modo, la densidad de las optimizaciones es mayor en la mejor sección, y puesto que todas las secciones tienen siempre aproximadamente el mismo tamaño relativo entre sí (1/5 o 1/n), los límites de las secciones se desplazan, lo que produce un aumento adicional de la densidad en los mejores resultados.
También podría dejar que el usuario determinara: ¿Debería probarse otra combinación de sección a sección - es decir, 1, 2, 3, 4, 5 en la 5ª sección superior - o dos - 1, 3, 5, 7, 9 - o incluso más para aumentar aún más la densidad en la mejor sección?
¿Quizás podrías introducir algo muy interesante y útil?
Si haces un análisis de conglomerados de las combinaciones de parámetros en cada sección de la tabla, podrías no (sólo) seleccionar las combinaciones al azar, sino selectivamente:
a) en el medio entre los mejores valores de dos conglomerados - para sondear el valle entre
b) en el medio entre dos combinaciones tan diferentes como sea posible de un mismo conglomerado - para encontrar un nuevo mejor valor, una nueva cima.
Probablemente esto mejore notablemente la calidad de los resultados de la optimización genética. ¡Habría que probarlo!
Artículo muy interesante!
Análisis de clustersDesgraciadamente, su solución no ofrece "optimización genética".
Pero puede añadirlas fácilmente, aunque excedan las capacidades y ventajas del usuario en comparación con MQ5. Mq5 sólo tiene una opción, genética, completa o lenta.
Todo lo que necesitas hacer es.
1) Hacer una tabla de resultados con sus combinaciones de parámetros,
2) Ordenarlos por resultados,
3) Dividirlos en, por ejemplo, 5 o (n definidas por el usuario) secciones,
4) A continuación, seleccionar aleatoriamente combinaciones de parámetros de cada sección,
5) Cambiar el valor de estas combinaciones de parámetros seleccionadas,
6) Comprobar si esta combinación ya ha sido probada (entonces volver a 4)
7) Probar.
8) Empezar de nuevo desde 1) si no se alcanza el criterio de interrupción.
Sólo se selecciona una combinación de la peor sección, dos combinaciones de la mejor, luego tres, y así sucesivamente.
Por lo tanto, la densidad de optimizaciones es mayor en la mejor sección, y como todas las secciones tienen siempre el mismo tamaño relativo entre sí (1/5 o 1/n), los límites de las secciones se desplazan, lo que provoca un aumento adicional de la densidad en los mejores resultados.
Además, también se podría determinar: si se probaría otra combinación de sección a sección - es decir, 1, 2, 3, 4, 5 en la 5ª sección superior - o dos - 1, 3, 5, 7, 9 - o incluso más, para aumentar aún más la densidad en la mejor sección.
¿Tal vez podría presentar algo muy interesante y útil?
Si además hace un análisis de conglomerados de las combinaciones de parámetros en cada sección de la tabla, puede no sólo (sólo) elegir combinaciones al azar, sino también específicamente:
a) a medio camino entre los mejores valores de dos conglomerados - comprender el valle entre ellos
b) a medio camino entre dos combinaciones máximamente diferentes del mismo conglomerado - encontrar un nuevo mejor valor, un nuevo tope.
Esto probablemente mejoraría significativamente a la Tendrá que intentarlo.
PD: Además de mi propuesta, ¿le gustaría añadir que también podría desarrollar una presentación de los resultados en forma de clusters?
El Probador de Estrategias siempre muestra sólo los resultados de todo el rango de una variable, sería mucho más informativo, si uno ve, por ejemplo, hay tres clusters y para cada cluster el respectivo mejor valor (cuanto más grande, mejor), su dispersión (cuanto más grande, mejor) y las estadísticas de los parámetros individuales (máx., mín., medio, desviación estándar (cuanto más grande, mejor). Así es más fácil ver dónde están las combinaciones de parámetros más robustas y dónde podrían estar los mejores valores más aleatorios.
PD: Además de mi sugerencia, ¿podrías añadir que también podrías desarrollar una presentación de los resultados en forma de clusters?
Strategy Tester siempre muestra sólo los resultados de todo el rango de variables, sería mucho más informativo si pudieras ver, por ejemplo, tres clusters y para cada cluster el mejor valor (cuanto más grande, mejor), su varianza (cuanto más grande, mejor) y las estadísticas de los parámetros individuales (máximo, mínimo, media, desviación estándar (cuanto más grande, mejor). Así es más fácil encontrar las combinaciones de parámetros más fiables y los mejores valores aleatorios.
PPS: Por casualidad he encontrado este artículo: "Optimizing OpenCL Kernels
for Iterative Statistical Applications on GPUs " que encajaría con mi sugerencia :)
Por casualidad he encontrado este artículo: " Optimizing OpenCL Kernels
for Iterative Statistical Applications on GPUs" que encajaría con mi sugerencia :).
¡¡¡Gran artículo!!!
¡Enhorabuena, @decanium !