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
Te recomiendo que vuelvas a leer tu post original, presta atención a todos tus epítetos, y luego vete abajo a las respuestas.
Las respuestas se dieron con calma, con algunas preguntas suaves como "Para paralizar los cálculos de algo hay que darse cuenta primero", luego se dieron las respuestas y se explicó el estado actual de las cosas "lo que realmente se debe paralizar".
Pero en lugar de un aprendizaje rápido, vomitaste más tonterías y nos pusiste los perros. El resultado fue una dura respuesta.
Vale, estoy de acuerdo con los epítetos, me he pasado un poco, y pido disculpas por ello. Sin embargo, no he dicho nada grosero, sólo una crítica demasiado emotiva, pero es totalmente inadecuada para la dureza con la que reaccionas. En ningún sitio he dicho que los desarrolladores sean unos inútiles y no entiendan nada, así que no exageres.
Ya que he sacado este tema, sé bien para qué se necesita y hay mucho que paralelizar. No todos los algoritmos se limitan a "¡hola mundo!", los hay mucho más complejos y que consumen muchos recursos. Por eso es muy extraño escuchar esas enseñanzas morales sobre lo que hay que paralelizar y lo que no, cuando ni siquiera se ha visto el algoritmo.
En cuanto a la implementación de código en la DLL, así como el uso de OpenCL, no tiene relevancia para MQL. Y la pregunta era sobre la programación en MQL.
OpenCL funciona dentro del código MQL5.
Aquí hay un ejemplo de código.
En cuanto a la implementación del código en la DLL, así como el uso de OpenCL, esto ya no es relevante para MQL. Y estábamos hablando de programar en MQL.
¿Y cuál fue su respuesta? Empezaste a decirme que tienes un gran terminal y un probador, trabajando en múltiples flujos. Y no he dicho ni una palabra sobre tu terminal. Me refería a otra cosa: el multihilo en el código MQL. Cuando un algoritmo puede dividirse en varias partes, y cada parte se ejecuta en paralelo. Y tú, sin haber entendido el punto, empiezas a ser grosero. Bueno, como veo, con este enfoque no hay ningún planteamiento constructivo, así que no tiene sentido seguir con la discusión.
Hay algunas soluciones constructivas incluso con el estado actual de las cosas. Varios programas mql (Asesores Expertos y/o indicadores) pueden intercambiar mensajes, y en consecuencia, tareas y resultados de ejecución de tareas - por supuesto, si usted crea y organiza un protocolo de intercambio apropiado. Todos los Asesores Expertos trabajan en diferentes hilos (cada uno en su propio hilo), por lo tanto, este esquema de cálculo conjunto es obviamente multihilo y los cargará uniformemente si hay varios núcleos.
El intercambio de mensajes (utilizando las herramientas de mql5) es posible a través de
1. eventos terminales
2. canales con nombre
3. DLL
4. archivos
5. etc.
De este conjunto de herramientas, puedes elegir la más adecuada o utilizar más de una (todas a la vez). Cada método tiene sus ventajas y desventajas, por ejemplo, las tuberías con nombre permiten transferir información a través de la red local, por lo que existe la posibilidad de paralelizar la tarea para más de un procesador multinúcleo.
Buena suerte.
OpenCL funciona dentro del código MQL5.
Aquí hay un ejemplo de código.
El hecho de que funcione es la mitad de la batalla. Pero, ¿cómo editarlo y depurarlo después? Si está contenida en una constante de cadena, ¿cómo buscaría un error? Significa que debe ser desarrollado en un programa externo y luego insertado en MQL. Pero si te ocupas constantemente de este tipo de portes, te volverás loco, como señalé en el primer post. Dado que el desarrollo del código se hace en otro lugar de todos modos, ¿qué sentido tiene ponerlo todo en MQL? Es más fácil compilar como una DLL e importarla.
Por supuesto, entiendo que el propósito es crear un código abierto, sin utilizar ninguna dll autoescrita. Pero se trata de casos especiales. Por lo general, el programa está escrito para uno mismo y no para los demás. Y poca gente querría dedicarse constantemente a manipulaciones sin sentido al arrastrar el código de un programa a otro.
Pero si se hace un compilador integrado para todo esto, es otra historia. Y por cierto, ¿por qué no? Es decir, es como una sintaxis C ahí dentro. Es decir, se podría utilizar todo como parte del código mql normal, simplemente añadiendo funciones adicionales a su MetaEditor. Y entonces el compilador formatearía el fragmento de código correspondiente de forma adecuada, añadiendo \N el código, etc.
El hecho de que funcione es la mitad de la batalla. ¿Cómo se edita y depura después? Si está en la constante de la cadena, ¿cómo podemos encontrar el error? Significa que debe desarrollarse en un programa externo y luego insertarse en MQL. Pero si te ocupas constantemente de este tipo de portes, te volverás loco, como señalé en el primer post. Dado que el desarrollo del código se hace en otro lugar de todos modos, ¿qué sentido tiene ponerlo todo en MQL? Es más fácil compilar como una DLL e importarla.
Por supuesto, entiendo que el propósito es crear un código abierto, sin utilizar ninguna dll autoescrita. Pero se trata de casos especiales. Por lo general, el programa está escrito para uno mismo y no para los demás. Y poca gente querría dedicarse constantemente a manipulaciones sin sentido al arrastrar el código de un programa a otro.
Pero si se hace un compilador integrado para todo esto, es otra historia. Y por cierto, ¿por qué no? Es decir, es como una sintaxis C ahí dentro. Es decir, se podría utilizar todo como parte del código mql normal, simplemente añadiendo funciones adicionales a su MetaEditor. Y entonces el compilador formatearía el fragmento de código correspondiente de forma adecuada, añadiendo \N el código, etc.
Quien quiera, que busque oportunidades. Quién no quiere, razona © Proverbio
Hay soluciones constructivas incluso con el statu quo. Varios programas mql (Asesores Expertos y/o indicadores) pueden intercambiar mensajes, y en consecuencia, tareas y resultados de ejecución de tareas - por supuesto, si usted crea y organiza un protocolo de intercambio apropiado. Todos los Asesores Expertos trabajan en diferentes hilos (cada uno en su propio hilo), por lo tanto, este esquema de cálculos conjuntos es obviamente multihilo y los cargará de manera bastante uniforme si hay varios núcleos.
El intercambio de mensajes(utilizando las herramientas de mql5) es posible a través de
1. eventos terminales
2. canales con nombre
3. DLL.
4. archivos
5. etc.
De este conjunto de herramientas, puede elegir la más adecuada o utilizar más de una (todas a la vez). Cada método tiene sus ventajas y desventajas, por ejemplo, las tuberías con nombre permiten transferir información a través de la red local, por lo que existe la posibilidad de paralelizar la tarea para más de un procesador multinúcleo.
Buena suerte.
Bueno, digamos que no todas son herramientas mql5 :) Y no se trataba de cómo resolver (sortear) este problema. Siempre se puede encontrar una forma de evitarlo, no hay duda. La pregunta es por qué no podemos añadir la funcionalidad correspondiente a mql5, para no tener que deshacernos de ella.
Hay que admitir que no es racional y fiable lanzar un montón de Asesores Expertos con gráficos apropiados sólo para organizar su procesamiento en varios hilos.
Quien quiere, busca posibilidades. Quién no quiere, las razones © Proverbio
En primer lugar hay que entender la viabilidad :) Me refiero a la razonabilidad de usar MQL5 en general, y MT5, respectivamente, si vale la pena cambiar a esta plataforma. Si, como en MT4, para que funcione correctamente hay que utilizar algún asistente, lanzar varios Asesores Expertos o trasladar el código a DLL, entonces no tiene sentido cambiar la basura por una basura. Si el código debe ser escrito en DLL, entonces es más fácil y seguro utilizar una plataforma con una API abierta, que tener un relleno adicional en forma de Asesor Experto (y un terminal en funcionamiento en su conjunto).
En primer lugar hay que entender la viabilidad :) Me refiero a la razonabilidad de usar MQL5 en general, y MT5, respectivamente, si vale la pena cambiar a esta plataforma. Si, como en MT4, para que funcione correctamente hay que usar algo de magia, ejecutar varios EAs o pasar el código a DLL, entonces no tiene sentido cambiar un pedazo de culo por otro. Si el código tiene que ser escrito en DLL, entonces es más fácil y más seguro utilizar inmediatamente una plataforma con una API abierta, que tener un relleno adicional en forma de Asesor Experto (y un terminal en funcionamiento en su conjunto).
Nadie está obligando a nadie a cambiar a MQL5. Por ejemplo, echaba de menos la funcionalidad de MQL4, así que tuve que cambiar a MQL5.
Por ejemplo, toda la funcionalidad puede ser implementada en С++ y MQL5 debe contener sólo la parte ejecutiva y todo el material debe ser atado con un protocolo usando canales con nombre. Hay muchas variantes. Todo lo que necesitas es una fuerte voluntad.