Recientemente he terminado un proyecto que código convertido escribí de MetaTrader 4 a MT5. Este post debería darnos una idea de las dificultades de movimiento de ida y vuelta entre los dos idiomas.
1) Aprender acerca de los objetos MT5; sus métodos y miembros
MT5 es un poco diferente de MT4. En comparación con MT5, MT4 is a rather quaint non-object oriented ‘C’ como lenguaje de programación con un conjunto limitado de declaraciones. MT5 añade las partes lenguaje orientado a objetos. Además de los objetos, métodos, y miembros, MT5 también añade diversas estructuras, enumeraciones y otras construcciones. Debido a esto tuve que encontrar la manera MT5 para lograr lo que estaba en la EA MT4. Esto significaba un tiempo considerable leer la documentación idioma, poring a través de ejemplos de noticias y foros de discusión cuando los problemas de lógica surgieron que no estaban relacionados con la sintaxis, codificación, y depuración. Un área en particular que tuvo problemas con los datos históricos se forma se devuelve dentro de arrays.
2) MT5 combina múltiples oficios en un comercio.
Esto no es tanto un problema si las operaciones combinadas utilizan el mismo stop loss y tomar ganancias. Sin embargo, en este particular, EA, los dos oficios colocados en la misma señal de comercio utilizan diferentes beneficios tomas. Esto requiere el almacenamiento de los primeros parámetros comerciales y luego monitorear cuando la oferta o Pedir dictó una estrecha parcial del comercio ahora combinada.
3) La Probador de Estrategia tuvo que trabajar en una EA que accede a varios pares de divisas; y la creación de asas indicador.
La razón principal para la conversión de esta EA particular, de MT4 a MT5 era tomar ventaja de la estrategia probador MT5, que permite backtest en varios pares de divisas. En su configuración inicial del EA pondría a prueba los distintos pares de divisas para encontrar la pareja más favorable para trabajar con cada tic-tac y luego acceder y probar numerosos indicadores (sobre la base de un par de divisas y los períodos gráfico) en el par de divisas seleccionado.
A través de ensayo y error se descubrió que la eliminación de las manijas del indicador de edad y la creación del nuevo indicador maneja todos los impuestos de garrapatas de memoria y CPU recursos hasta el punto que el EA agotaría los recursos. Después de intentar varios ajustes para reducir la demanda de estos recursos, Empecé a buscar ideas de fuentes externas (en el foro Metatrader y de varios blogs). Después de algunos intercambios foro y ticket de soporte me decidí por algunos enfoques para tratar, incluyendo el uso de bucles de repetición y llamadas de método para la prueba de la existencia de los datos necesarios. Esto funcionó sólo en un grado (con un número reducido de pares de divisas).
He probado unos cuantos otros enfoques antes de decidirse a asignar previamente todos los mangos de indicadores en la parte de inicialización de la EA. Tuve que asignar un descriptor indicador diferente para cada par de divisas y con cada par de divisas para cada período de tiempo utilizado. In the actual strategy test this greatly lengthens the EA’s initial load time but it is the only scalable solution.
4) Obtención de los datos históricos requiere alguna configuración manual.
Uno de los problemas que retrasaron el descubrimiento de la mejor solución, en parte, 3 (arriba) es que los datos históricos para los diferentes pares de divisas no estuvo presente en el terminal del cliente que el probador estrategia estaba accediendo. Muchos de los errores que tienen que ver con la carga de datos para los indicadores se debió a la falta de datos y no tenía nada que ver con las otras soluciones de ser juzgado. Mientras que siento que puede haber una forma más elegante de pedir programáticamente estos datos, No he venido sobre cómo se hace esto todavía.
Terminé la carga manual de un gráfico de cada par de divisas, desactivado autoscroll gráfico, luego de vuelta espaciados durante el período de tiempo se está probando. No sólo tengo que cargar un gráfico para cada par de divisas, Tuve que cambiar el período del gráfico a la 4 o 5 diferentes períodos que iba a ser utilizado por los distintos indicadores. También tuve que añadir que el indicador de la gráfica. De esta manera pude forzar la carga de los datos históricos necesarios en la prueba de estrategia. Si no hubiera estado probando dentro de una pequeña ventana en un período reciente de tiempo que esto podría llegar a ser una tarea muy onerosa.
Fivos Georgiades dice
Por favor refiérase a MQL5.com foro/artículos/código base y dedicados programación profesionales.
Estoy seguro de que te wll ser capaz de encontrar una solución a tu problema.
FG
Shaun Overton dice
Hola Fivos,
Gracias por tu comentario. Nos dedicamos a nosotros mismos profesionales de programación. El propósito de este post era simplemente documento las lecciones aprendidas de la experiencia.
Gracias por leer nuestro blog!
Trinity@Metatrader5 dice
Además de proporcionar servicios de corretaje a clientes en el mercado Forex. ¿Cuáles son otros importantes servicios Metatrader 5 puede ofrecer ese Metatrader 4 No tengo?
Lo que sé lo importante que Metatrader 5 y Metatrader 4 tienen en común es que están diseñados para proporcionar servicios de corretaje a clientes en Forex, CFD, y los mercados de futuro. Aparte de eso, ¿Qué otra cosa hace Metatrader 5 y Metatrader 4 tienen en común?
Shaun Overton dice
Most of the changes in MT5 are designed to improve the broker’s capabilities. MQL5 se encarga de algunas limitaciones inherentes de MQL4, although it’s way more complicated to program.