Nueva actualización de METATRADER 4
Para los que todavía no os habéis enterado, Metatrader 4 ha sido actualizado para situarse prácticamente al nivel de MT5 pero manteniendo el standard
La última compilación 600 ya incluye todos los cambios.
Podéis visitar la página de la actualización en ...
http://docs.mql4.com/mql4changes
A continuación ofrezco una traducción automática:
¿Qué hay de nuevo en MQL4
A partir de la acumulación de 600, el lenguaje de programación MQL4 ha sido completamente revisado alcanzar el nivel de MQL5 - ahora usted puede desarrollar robots comerciales en MQL4 / 5 utilizando el entorno de desarrollo unificado MetaEditor, el solo estilo, bibliotecas y herramientas de depuración.
MQL4 es muy popular entre los desarrolladores de sistemas automatizados, debido a la facilidad de aprendizaje y una gran cantidad de código generado para muchos años de uso de terminal MetaTrader 4. Sin embargo, el lenguaje también tiene algunos inconvenientes derivados de su ventaja principal - un lenguaje de programación sencillo no permite el desarrollo de los sistemas complejos y obstaculiza de portabilidad de las bibliotecas depuradas de lenguajes de alto nivel. Por lo tanto, hemos decidido implementar en ella la máxima cantidad posible de funciones del lenguaje MQL5 y características conservando plenamente MQL4 funcionalidad. En otras palabras, todas las funciones MQL5 poderosos, incluyendo ООP y el compilador de código nativo, estarán disponibles en MQL4.
Para ello, hemos desarrollado un compilador unificada que soporta de forma automática ambos idiomas MQL4 y MQL5. MetaEditor también se convertirá en una aplicación unificada tanto para MetaTrader 4 y MetaTrader 5 plataformas. Por lo tanto, será posible compilar tanto mql4 y MQL5 de cualquier versión. MQL5 Storage también esté disponible para el trabajo.
Protección de aplicaciones MQL4 se eleva al nivel de MQL5. Nuevos archivos EX4/EX5 están provistos de una protección seria y completamente revisada. Esto significa que el mercado de las aplicaciones seguras EX4 también estará disponible para el MetaTrader 4.
Además, MQL4 ahora cuenta con nuevos objetos gráficos y nuevas funciones para trabajar con gráficos. MQL5 biblioteca estándar debe ser portado a MQL4 proporcionando a los desarrolladores nuevas posibilidades en la creación de sus propias interfaces gráficas y librerías comerciales. Ahora, usted puede crear aplicaciones de pleno derecho en MetaTrader 4 utilizando los recursos.
Los cambios en mql4 Idioma
Añadido nuevo char, short, long, uchar, ushort, uint, ulong y double tipos de datos. Esto permitirá transferir códigos desde otros C + + como lenguajes. Los datos de varios tipos se procesan a diferentes velocidades. De datos Integer es el más rápido para ser procesado. Un coprocesador especial se utiliza para manejar los datos de doble precisión. Sin embargo, debido a la complejidad de la representación interna de datos de coma flotante, se procesa más lento que un número entero. Encasillamiento también se ha implementado.
Las cadenas se presentan ahora en formato Unicode, si estuvieran en formato ANSI (los de un solo byte) antes. Eso se debe considerar si el programa utiliza archivos DLL y pasa variables de cadena en ellos.
Predefinidas volumen variable es ahora de tipo largo. Las series de tiempo para acceder a los volúmenes también constan de matrices tipo largo. Se recomienda utilizar una conversión explícita de datos que tiene este tipo de tipo de destino en programas MQL4 viejos para evitar error de desbordamiento de tipo.
Estructuras y clases, punteros de objeto, sin efecto tipo y este se han añadido la palabra clave que permite un objeto para recibir una referencia a sí mismo. Todos los estándares de programación orientados a objetos son compatibles:
• Encapsulación y extensibilidad de tipos
• Herencia
• El polimorfismo
• Sobrecarga
• funciones virtuales
ООP permite desarrollar programas de uso de clases. Esto facilita la depuración y el desarrollo de aplicaciones de gran tamaño, así como proporciona capacidad de reutilización de código generados previamente múltiples veces debido a la herencia. Sin embargo, eso no significa que no se puede generar el código MQL4 en estilo orientado al procedimiento que antes. Puede desarrollar sus programas como lo hizo en el pasado, si usted no necesita las nuevas características.
init (), deinit () y start () funciones predefinidas se han mantenido para la compatibilidad, sin embargo, OnInit () , OnDeinit () , OnStart () , OnCalculate () y OnTick () los ahora se pueden utilizar en su lugar. Además, el nuevo predefinido OnTimer () , OnChartEvent () y OnTester () funciones de controlador se han aplicado. En el MQL4 anterior, funciones predefinidas podrían tener algún parámetro y cualquier tipo de retorno, y podrían ser llamados por sus nombres, no las firmas. En el nuevo MQL4, todas las funciones predefinidas deben corresponder estrictamente a sus firmas. En otras palabras, deberían haber definido con precisión conjunto de parámetros y el tipo de retorno.
Ahora, los nombres de variables no pueden contener caracteres y puntos especiales, y las nuevas palabras clave del lenguaje MQL4 no pueden ser utilizados como nombres. Programas Antiguo MQL4 se pueden recompilar con el nuevo compilador con el fin de corregir fácilmente todos esos errores al seguir los mensajes del compilador.
La regla de precedencia coincide ahora con los estándares de lenguaje C. Si no está seguro, puede insertar paréntesis en aplicaciones MQL4 viejos para indicar claramente la prioridad de aumentar la fiabilidad.
Condiciones acortada de verificación se utiliza actualmente en las operaciones lógicas , a diferencia de la antigua versión MQL4 donde todas las expresiones se han calculado y el cheque se ha realizado después. Supongamos que hay un cheque de dos condiciones, con el uso de la lógica AND:
if (condition1 && condition2)
{
/ / algún bloque de sentencias
}
Si la expresión condition1 es falso, no se realiza el cálculo de la expresión condition2, como falso && cierto resultado sigue siendo igual a falso.
ArrayCopyRates () también ha cambiado su comportamiento. En lugar de la copia virtual para duplicar [] [6] array, que ahora realiza la copia virtual para MqlRates [] array. Copia de duplicar [] [6] array ha permanecido intacta por el bien de la compatibilidad, sin embargo, que la copia es real, no virtual.
En las operaciones de archivo , el número de archivos abiertos al mismo tiempo ahora puede llegar a 64 unos, mientras que no puede haber más de 32 que hay en el viejo MQL4. Hasta hace poco, los archivos siempre se abren en modo FILE_SHARE_WRITE FILE_SHARE_READ o. Ahora, el modo de apertura es necesario se debe especificar de forma explícita.
Trabajar con funciones, ámbito de las variables y la liberación de memoria en conjuntos locales también se ha modificado. Dado que el número de cambios es lo suficientemente grande, la nueva propiedad # estricta propiedad se ha introducido para proporcionar la máxima compatibilidad con el enfoque anterior para el desarrollo de programas MQL4. Al crear la nueva aplicación MQL4 utilizando el asistente MQL, esta propiedad siempre se añade a la plantilla.
La representación de cadena de fecha y hora tipo depende del modo de compilación:
datetime date = 2014 .03.05 D'15:46:58 ';
string str = "mydate =" + fecha;
/ / --- str = "mydate = 1394034418" - compilador viejo / nuevo compilador sin # estricta propiedad
/ / - - str = "mydate = 03/05/2014 15:46:58" - nuevo compilador con # propiedad estricta
La siguiente tabla muestra las diferencias entre MQL4, nuevo MQL4 sin usar estricto y nueva MQL4 con modo de compilación estricta especificado:
# Property strict
La tabla de las diferencias entre los compiladores:
Compilador Antiguo MQL4
Nuevo compilador MQL4
Nueva MQL4 con # propiedad estricta
init (), start () y los puntos de entrada deinit () pueden tener algún parámetro y cualquier tipo de devolución
init (), start () y deinit () se han mantenido intacta la compatibilidad,
mientras que la nueva OnInit () , OnStart () , OnCalculate () , OnTick () , OnTimer () , OnChartEvent () , OnTester () y OnDeinit () debe corresponder estrictamente a sus firmas
Ídem
Prácticamente son posibles los nombres de variable (excepto para las palabras reservadas), incluyendo personajes y puntos especiales
Los nombres de variables no pueden tener caracteres y puntos especiales.
La lista de las palabras reservadas se ha ampliado. Por lo tanto, tales palabras generalizadas como corto, largo, const, etc, no se pueden utilizar como nombres
Ídem
Ambito de las variables es de declaración (incluso en el bloque anidado) al fin de la función
Ídem
Ambito de las variables es de declaración al final de la manzana, en la que se declara la variable
Inicialización implícito de todas las variables (tanto los globales y locales) por cero
Ídem
Sólo se inicializan las variables globales. En las variables locales, sólo cadenas se inicializan implícitamente
Arrays locales no se liberan cuando salga de la función
Arrays locales se liberan cuando salga de la función
Arrays locales se liberan cuando se sale del bloque {}
"Matriz fuera de rango" no causa un error crítico
Lo mismo ocurre, a excepción de las matrices de estructuras y clases, para los que este error es crítico
"Matriz fuera de rango" es un error crítico que el programa se detenga
No hay estructuras y clases
Estructuras y las clases están presentes. Se implementan tipos de datos adicionales
Ídem
Las cadenas son de un solo byte.
datetime es un entero de 32 bits
Variable de volumen predefinido es de tipo doble
Las cadenas son los unicode.
datetime es un entero de 64 bits
Predefinidas volumen variable es de tipo largo
Ídem
ArrayCopyRates () realiza la copia virtual para duplicar [] [6] array
ArrayCopyRates () realiza la copia virtual para MqlRates [] array. Copia de duplicar [] [6] array ha permanecido intacta por el bien de la compatibilidad, sin embargo, que la copia es real, no virtual.
Ídem
Las funciones no pueden devolver los valores, incluso si tienen un tipo. Para ello, el regreso (0) es insertado automáticamente por el compilador en el fin de la función
Ídem
Funciones de cualquier tipo deben devolver un valor
El número de archivos abiertos de forma simultánea es de 32
El número de archivos abiertos de forma simultánea es de 64
Ídem
Los archivos se abren siempre en FILE_SHARE_READ, modo FILE_SHARE_WRITE **
FILE_SHARE_READ y / o FILE_SHARE_WRITE deben especificarse de forma explícita
Ídem
* Por favor, preste especial atención a la "matriz fuera de rango" error - muchos indicadores personalizados viejas mostrarán este error en modo estricto del nuevo compilador cuando se lanzó en el gráfico. Se recomienda para encontrar la causa y eliminarla.
** En las nuevas banderas MQL4 y MQL5, FILE_SHARE_READ y FILE_SHARE_WRITE son responsables de los archivos de modo de uso compartido. No hubo este tipo de archivos en el viejo MQL4.
Cambios en la estructura del archivo
En las compilaciones anteriores de terminal de cliente MetaTrader 4 (509 y más), todos MQL4 aplicaciones se almacenan en los siguientes subdirectorios de \ expertos \ directorio raíz:
• \ experts - Asesores Expertos (robots de comercio),
• \ experts \ indicators - indicadores personalizados,
• \ experts \ sScripts - Scripts (MQL4 aplicaciones para una sola carrera en el gráfico),
• \ include - código fuente y los archivos MQH MQ4 implementadas en otros programas,
• \ libraries - bibliotecas, en forma de códigos fuente MQ4 y archivos ejecutables compilados EX4 de ellos. Se utilizan para la llamada dinámica de las funciones contenidas allí por otros programas MQL4,
• \ files - especial "sandbox archivo". Aplicaciones MQL4 permite que se ejecuten las operaciones de archivos sólo dentro de este directorio.
En la nueva versión MQL4, la estructura de archivos para almacenar los códigos de origen ha cambiado. Ahora, todos los MQL4 aplicaciones deben estar ubicados en las carpetas correspondientes de \ MQL4 \ directorio:
• \ Experts - Asesores Expertos (robots de comercio),
• \ Indicators - indicadores personalizados,
• \ Scripts - scripts (aplicaciones MQL4 para una sola carrera en el gráfico),
• \ Include - código fuente y los archivos MQH MQ4 implementadas en otros programas,
• \ Libraries - bibliotecas, en forma de códigos fuente MQ4 y archivos ejecutables compilados EX4 de ellos. Se utilizan para la llamada dinámica de las funciones contenidas allí por otros programas MQL4,
• \ Images - archivos de imagen para el uso de los recursos,
• \ Files - especial "sandbox archivo". Aplicaciones MQL4 permite que se ejecuten las operaciones de archivos sólo dentro de este directorio.
Al actualizar MetaTrader 4 Terminal de build 509 para la versión más reciente, todo MQ4, MQH y archivos EX4 de directorios raíz estándar de la versión anterior se copian automáticamente y se trasladó a las carpetas adecuadas. subcarpetas, además, creados por un usuario, así como los archivos contenidos no se procesan. Deben ser reubicados en el nuevo lugar de forma manual si es necesario.
No hay archivos o carpetas se eliminan durante la actualización! Todas las operaciones de copia de archivos, incluyendo las rutas de archivos utilizados son fijos en la terminal Diario durante la actualización.
No re-compilación automática de los archivos EX4 viejos a la nueva versión se realiza durante la actualización. Los usuarios son libres para decidir qué códigos fuente debe ser compilado para la nueva versión EX4. Todo viejo EX4 trabajará en la nueva terminal MetaTrader 4. Bibliotecas EX4 recopilados por el nuevo compilador se puede llamar sólo a partir de los programas EX4 que también han sido compiladas en la nueva versión.
En algunos casos, puede que tenga que modificar la ruta en el # de propiedad incluyen los archivos incluidos (si las rutas relativas han cambiado) en los archivos de origen. Tenga en cuenta que el directorio raíz del MetaEditor ahora \ MQL4 \. Todos los programas deben estar ubicados en los subdirectorios correctos.
Usted puede encontrar la carpeta de datos () para cada copia del terminal MetaTrader 4 en su ordenador a través del menú de terminal o en MetaEditor: Archivo - Abrir la carpeta de datos.