MQL4 para Novatos III

Retomamos la serie sobre programación en MQL4. En esta tercera entrega pasamos a ver las principales funciones matemáticas de que disponemos en este lenguaje, así como algunas funciones adicionales para mostrar información en pantalla.

FUNCIONES MATEMÁTICAS

MathAbs (Valor Absoluto)
Esquema: double MathAbs(double value)
Ejemplo:

int a=-10;
a=MathAbs(a); // ahora a vale 10

MathCeil (Redondeo por exceso)
Esquema: double MathCeil(double x)
Ejemplo:

double a;
a=MathCeil(1.001); // dado que se redondea por exceso, a valdrá 2.0

MathFloor (Redondeo por defecto)
Esquema: double MathFloor(double x)
Ejemplo:

double a;
a=MathFloor(1.999); // dado que se redondea por defecto, a valdrá 1.0

MathRound (Redondeo normal: si la parte decimal es superior a 0.5, se redondea por exceso, en caso contrario por defecto)
Esquema: double MathRound(double x)
Ejemplo:

double a;
a=MathFloor(1.1); // al ser 0.1 menor que 0.5, a valdrá 1.0

double b;
b=MathFloor(1.8); // al ser 0.8 mayor que 0.5, a valdrá 2.0

MathMax (Máximo de una serie)
Esquema: double MathMax(double valor1, double valor2)
Ejemplo:

double a;
a=MathMax(50.0,1.0); // a toma el valor 50.0

MathMin (Mínimo de una serie)
Esquema: double MathMin(double valor1, double valor2)
Ejemplo:

double a;
a=MathMin(10.0,12.0); // a toma el valor 10.0

MathPow (Potencia de un número)
Esquema: double MathPow(double base, double exponente)
Ejemplo:

double a;
a=MathPow(5.0,2.0); // a toma el valor 25, es decir, 5 elevado a 2

MathSqrt (Raíz cuadrada de un número)
Esquema: double MathSqrt(double x)
Ejemplo:

double a;
a=MathSqrt(9.0); // a es igual a 3, raíz cuadrada de 9

MathLog (Logaritmo neperiano de un número)
Esquema: double MathLog(double x)
Ejemplo:

double a;
a=MathLog(10.0); // El valor de a es 2.30258509

MathExp (Potencia del número e)
Esquema: double MathExp(double d)
Ejemplo:

double a;
a=MathExp(1); // El valor de a es 2.7182818

MathMod (Resto de una división)
Esquema: double MathMod(double Numerador, double Denominador)
Ejemplo:

double a;
a=MathMod(5,2); // Si dividimos 5 entre 2, el resto que queda es a=1.0

MathRand (Generación de números aleatorios)
Esquema: int MathRand() (esta función no tiene argumentos)
Ejemplo: si bien por defecto utiliza el rango de enteros comprendidos entre 0 y 32767, podemos fijar el intervalo en el que queremos obtener los números de la siguiente forma:

MathRand()%6  // Devuelve enteros aleatoriamente entre 0 (valor 1) y 5 (valor 6).

MathRand()%6+5  // Devuelve enteros aleatoriamente entre 5 (valor 6) y 10 (valor 11)

(MathRand()%11+10)*(-1) // Obtenemos enteros aleatorios entre -10 y -20

(MathRand()%1001/1000.0) // Obtenemos valores entre 0 y 1 con tres decimales 

MathSrand (Generación de números enteros aleatorios iniciando la secuencia en un valor determinado o semilla)
Esquema: void MathSrand(int semilla)
Ejemplo: Esta función puede combinarse de forma muy efectiva con la función TimeLocal, que devuelve el número de segundos transcurridos desde el 1 de Enero de 1970 tal que:

MathSrand(TimeLocal());

Con ello, conseguimos dar un valor único a la semilla de partida.

Funciones Trigonométricas
En MQL tenemos disponibles las funciones de seno, coseno y tangente así como sus inversas, esto es, arcoseno, arcocoseno y arcotangente. El esquema de utilización para cada una de ellas es, respectivamente:

double MathSin(double x)
double MathCos(double x)
double MathTan(double x)
double MathArcsin(double x)
double MathArccos(double x)
double MathArctan(double x)

Todas ellas funcionan en base a radianes por lo que conviene convertir cualquier número en grados a radianes antes de introducirlo en estas funciones, de la forma:

Radianes = (Grados * Pi)/180

Suele ser conveniente declarar el número Pi como una variable al comienzo de cualquier código con estas funciones. Para ello escribiremos:

#define PI 3.1415926535897

OTRAS FUNCIONES PARA MOSTRAR MENSAJES
Hasta ahora sólo habíamos visto la función MessageBox para mostrar información en pantalla. Veamos algunas funciones más.

Alert (Emitir una alerta)
Esquema: void Alert(…)
Ejemplo:

Alert(“Signal Type:”+signaltype);

Recordemos que el sonido de las alertas puede configurarse desde el menú Tools->Options dentro de la pestaña Events.

Comment (Muestra un mensaje en la esquina superior izquierda del gráfico)
Esquema: void Comment(…)
Ejemplo: si escribimos por ejemplo:

Comment(“Recuerda que tiene soporte en 1.5300”);

Al ejecutar el código que contiene esta instrucción, nos aparecerá ese comentario en la parte superior izquierda del gráfico.

Print (Permite mostrar mensajes en el registro de un Expert Advisor)
Esquema: void Print( …)
Ejemplo: si queremos que cuando carguemos un Expert Advisor se nos muestre alguna información en pantalla, utilizaremos esta función; por ejemplo:

Print(“EA cargado correctamente”);

(Continuará…)
Un saludo,
X-Trader
 

COMPARTIR EN: