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
 

Artículos Relacionados


Gramáticas Evolutivas y Enjambres Gramaticales

Gramáticas Evolutivas y Enjambres Gramaticales

Por desgracia el pasado jueves no puede asistir a la conferencia de Rafa Leiva sobre Gramáticas Evolutivas aunque afortunadamente unas semanas antes había podido hablar con Rafa sobre el tema y me...

Notificaciones Push en MT4

Notificaciones Push en MT4

 Las últimas versiones de Metatrader 4 han incorporado una útil función: notificaciones push para dispositivos móviles. En este tutorial os explicamos cómo utilizarlas

Convertir MQL4 a MQL5

Convertir MQL4 a MQL5

En los primeros meses de 2010 es probable que se lance la versión final de Metatrader 5, la cual en principio no se espera que sea compatible con los archivos programados con la versión 4. Sin...

R para Traders I

R para Traders I

En el trading cada vez se requiere el uso de herramientas más sofisticadas y potentes para el análisis de datos. Es aquí donde entra R, un entorno de programación GNU que nos facilitará enormemente...

Click Panel

Click Panel

Si les gusta hacer scalping agresivo y están cansados de las limitaciones de Metatrader en ese apartado, Click Panel es la herramienta que resolverá sus problemas. En este artículo, Carles San de...

La Calidad de Modelado en Metatrader

La Calidad de Modelado en Metatrader

Al hilo del artículo sobre Tickstory que nos mandó Andrest recientemente, algunos lectores me han preguntado qué es exactamente eso de la calidad de modelado que aparece en los backtests de...