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
De hecho, con un enfoque normal, la OOP implementada en MQL5 (junto con los recursos del propio terminal) dará un aumento significativo de la velocidad.
¿A qué velocidad de funcionamiento se refiere, a la del programa o a la de su escritura?
La POO no aumenta el rendimiento. Tiene algún beneficio - por ejemplo, si hay alguna función llamada con algunos parámetros (digamos, el cálculo de la EMA), una variable estática se utiliza en la función para almacenar el valor anterior de la EMA. Dado que la función almacena el último valor en base al cual se realizarán los cálculos, no puede ser llamada con otros parámetros (símbolo, marco temporal, periodo de suavizado) la siguiente vez que se llame a la función, por lo tanto, si se necesita llamar a la función con diferentes parámetros, debe copiarse con un nombre diferente o utilizar una variable global pasada por referencia en lugar de una estática. Este es el único caso en el que es más conveniente utilizar un objeto: se carga una instancia de objeto, se establecen sus parámetros y luego se llama al método sin parámetros. Si el objeto incluye métodos cuya ejecución no depende de ejecuciones anteriores ni, en general, de ningún parámetro con el que se cargue el objeto, no da nada más que consumo de recursos.
Lo hace, lo hace, realmente lo hace. Pero todo depende de la experiencia, la imaginación y la torpeza de las manos del programador (en ese orden)... :)
Y de hecho, incluso asumiendo que la POO (con el enfoque más horrible de la misma) no aumenta el tiempo de ejecución, o lo hace de forma insignificante (aunque personalmente dudo que ese aumento en 10 veces pueda considerarse insignificante) seguirá siendo más útil para entender a los desarrolladores que todas las posibles desventajas de la POO.
La cuestión es que MQL5, si contiene OOP, contribuirá de alguna manera al desarrollo del enfoque modular (unitario) de la programación, que no se ve en MQL4 (excepto en las bibliotecas). Esto se debe a que es conveniente colocar estructuras, clases o grupos de ellas en archivos separados (módulos) y utilizarlos cuando sea necesario.
Además, debido a la abstracción, la encapsulación, la herencia y el polimorfismo, el uso de clases permitirá depurar los bloques listos (módulos) y no pensar en su contenido para utilizarlos en su propio trabajo.
Además, el uso de la programación orientada a objetos debería aumentar el nivel y la conveniencia de utilizar DLL externas y otros ajustes de software en los sistemas de comercio.
Combinado con el uso de librerías, esto hará la vida de los desarrolladores una docena de veces más fácil y también acelerará enormemente el desarrollo de EAs bastante complejos.
¿A qué velocidad de funcionamiento se refiere, a la velocidad de ejecución del programa o a la velocidad de escritura?
Lo hace, lo hace, lo hace....
¿Quién te ha dicho eso? No es cierto. Todo lo demás es correcto.
¿Quién te ha dicho eso? No es cierto. Todo lo demás es correcto.
Repetiré: aumenta, aumenta, cuánto aumenta. Pero todo depende de la experiencia, la imaginación y la torpeza de las manos del programador (en este mismo orden)...
En una ocasión estuve comparando la velocidad de inicialización de mi EA, salvo algunos detalles menores, el código del programa era el mismo (en MQL5 se utilizaba la librería de migración). Y resultó que la inicialización de MQL5 era 2,5 veces más rápida de media.
Por supuesto, sé que no es un indicador, pero sigo confiando en que la velocidad de MQL5 es 10 veces más rápida incluso ahora, utilizando el enfoque correcto.
Puedes discutir eternamente, pero intenta implementar OnTrade() oOnChartEvent y todo se aclarará. Pero además de estas cosas hay muchas otras "bondades"...
PS
Por supuesto, hay problemas de velocidad con el probador de estrategias y los indicadores. Pero con el tiempo estas deficiencias serán eliminadas por los desarrolladores del terminal, o los autores de los Asesores Expertos en comercio.
Además, MQ ha declarado más de una vez que la velocidad máxima de ejecución del código del programa no está disponible todavía (que yo sepa)...
Aumenta... aumenta... ...será mejor que lo cantes en un mantra con una campana en la mano y te pongas un vestido.
MQL5 es más rápido que MQL4, no porque soporte objetos.
Usando la función GetTickCount(), he probado Asesores Expertos similares con y sin OOP:
Probar mi_oop_ea ( con OOP )
RJ 0 Core 1 15:12:15 Tiempo de prueba = 115203
EO 0 Core 1 15:12:15 EURUSD,H1: 6124935 ticks (3052 barras) generados en 115203 ms (total de barras en el historial 9199)
RP 0 Core 1 15:12:15 Desconectado
Mi_primera_prueba_EA ( sin OOP )
RH 0 Core 1 15:18:54 Tiempo de prueba = 90578
CR 0 Core 1 15:18:54 EURUSD,H1: 6124935 ticks (3052 barras) generados en 90578 ms (total de barras en el historial 9199)
O 0 Core 1 15:18:54 Desconectado
La diferencia es pequeña, pero no a favor de la OOP. Y en caso de optimización, esta diferencia se multiplica por el número de ejecuciones, si he entendido bien.
He sacado conclusiones por mí mismo.
También he comparado el EA de muestra MACD estándar para MT5 (con OOP) y para MT4:
Macd Muestra MT5
FO 0 Core 1 18:03:21 Tiempo de prueba = 126016
FD 0 Core 1 18:03:21 EURUSD,M1: 6124935 ticks (181129 barras) generados en 126016 ms (total de barras en el historial 545615)
Macd Muestra MT4
18:12:52 2010.06.30 23:59 MACD Muestra EURUSD,M1: Pruebas de tiempo = 64406
Los resultados son sorprendentes: MT5 y MQL con OOP no sólo son devoradores de recursos sino también de tiempo.
Cuando se prueban diferentes plataformas MT4 y MT5, no se pueden sacar conclusiones específicas sobre OOP. La diferencia en los resultados se debe en un 90% a la diferente arquitectura del sistema.
Además, el optimizador de código en MQL5 ha sido desactivado por el momento - lo estamos afinando. Cuando se activa, los resultados mejoran inmediatamente muchas veces.
Ayer se publicó un artículo en el que se comparaba la velocidad de MQL4 y MQL5 - te recomiendo que lo leas:
Una función con otro parámetro es claramente más lenta. ¿Es realmente por el parámetro?