---
title: MQL4 para Novatos III
date: 2008-03-28T16:01:00Z
modified: 2024-07-05T16:21:36Z
permalink: "https://www.x-trader.net/mql4-para-novatos-iii/"
type: post
status: publish
excerpt: 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.
wpid: 540
categories:
  - Software y Tecnología
tags:
  - Aprender a Programar - MQL4
  - MetaTrader
  - Programación para Traders
featured_image: "https://www.x-trader.net/wp-content/uploads/2006/02/intro_metatrader.jpg"
author: X-Trader
---

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

## Topics

**Categorías:** [Software y Tecnología](https://www.x-trader.net/wp-content/uploads/wp-mfa-exports/taxonomy/category/software-y-tecnologia.md)

**Etiquetas:** [Aprender a Programar - MQL4](https://www.x-trader.net/wp-content/uploads/wp-mfa-exports/taxonomy/post_tag/aprender-a-programar-mql4.md), [MetaTrader](https://www.x-trader.net/wp-content/uploads/wp-mfa-exports/taxonomy/post_tag/metatrader.md), [Programación para Traders](https://www.x-trader.net/wp-content/uploads/wp-mfa-exports/taxonomy/post_tag/programacion-para-traders.md)