Descargar MetaTrader 5

Importación de funciones (#import)

Las funciones se importan desde los módulos compilados MQL5 (archivos *.ex5) y desde los módulos del sistema operativo (archivos *.dll). El nombre del módulo se indica en la directiva #import. Para que el compilador pueda hacer correctamente la llamada a la función importada y organizar el correcto traspaso de parámetros, hace falta la descripción completa de las funciones. La descripción de la función sigue directamente después de la directiva #import "nombre de módulo". El nuevo comando #import (puede ir sin parámetros) cierra el bloque de descripción de las funciones importadas.

#import "nombre_de_archivo"
    func1 define;
    func2 define;
    ...
    funcN define;
#import

Las funciones importadas pueden tener cualquier nombre. Las funciones con nombres iguales pueden ser importadas a la vez desde diferentes módulos. Las funciones importadas pueden tener nombres que coincidan con los nombres de las funciones built-in. La operación de resolución de contexto determina cuál de las funciones tiene que ser invocada.

La orden de búsqueda del archivo especificado tras la palabra clave #import se describe en la sección Llamadas a las funciones importadas.

Dado que las funciones importadas se encuentran fuera del módulo compilado, el compilador no puede comprobar si los parámetros pasados son correctos. Así que para evitar los errores de ejecución, hay que describir con exactitud la composición y el orden de los parámetros pasados a las funciones importadas. Los parámetros pasados a funciones importadas (tanto de EX5, como de DLL-módulos) pueden tener valores por defecto.

En funciones importadas no se puede usar lo siguiente en calidad de parámetros:

Las clases, arrays de cadenas o objetos complejos que contienen las cadenas y/o arrays dinámicos de cualquier tipo no se puede pasar como parámetros a las funciones importadas de DLL.

Ejemplos:

#import "user32.dll"
int    MessageBoxW(uint hWnd,string lpText,string lpCaption,uint uType);
#import "stdlib.ex5"
string ErrorDescription(int error_code);
int    RGB(int red_value,int green_value,int blue_value);
bool   CompareDoubles(double number1,double number2);
string DoubleToStrMorePrecision(double number,int precision);
string IntegerToHexString(int integer_number);
#import "ExpertSample.dll"
int    GetIntValue(int);
double GetDoubleValue(double);
string GetStringValue(string);
double GetArrayItemValue(double &arr[],int,int);
bool   SetArrayItemValue(double &arr[],int,int,double);
double GetRatesItemValue(double &rates[][6],int,int,int);
#import

 

Para importar funciones durante la ejecución del programa mql5 se usa la aligación temprana. Eso significa que la biblioteca se carga durante el proceso de carga del programa ex5 que la utilice.

No se recomienda usar el nombre totalmente calificado del módulo cargable del tipo Drive:\Directory\FileName.Ext. Las bibliotecas MQL5 se cargan de la carpeta terminal_dir\MQL5\Libraries.

Véase también

Inclusión de archivos


Actualizado: 2015.12.03