MQL4 para Novatos IV

Índice del artículo

Continuamos con la serie sobre el lenguaje MQL. En esta ocasión se abordan las principales funciones de indicadores técnicos que trae incorporadas de serie. Todas las funciones que vamos a ver a continuación constan casi siempre de los siguientes argumentos:

  • symbol – define sobre qué par de divisas o valor se aplicar el indicador. Si queremos que pueda usarse en cualquier gráfico daremos valor NULL (o 0) a este parámetro. Si queremos aplicarlo a un producto determinado deberemos escribir su nombre como una cadena ("EURUSD","GBPUSD" etc.).
  • timeframe – en el segundo argumento se define la escala temporal en la que se va a utilizar el indicador. Si queremos que se utilice el periodo del gráfico sobre el que insertamos el indicador simplemetnte daremos valor 0 a este parámetro. Si queremos especificar el periodo, deberemos utilizar una de las siguientes constantes:

 

PERIOD_M1 - 1 minuto
PERIOD_M5 - 5 minutos
PERIOD_M15 - 15 minutos
PERIOD_M30 - 30 minutos
PERIOD_H1 - 1 hora
PERIOD_H4 - 4 horas
PERIOD_D1 - 1 día
PERIOD_W1 - 1 semana
PERIOD_MN1 - 1 mes

 

  • shift – el último argumento define cuál será el último valor del indicador que se mostrará en pantalla. Normalmente querremos que nos muestre el último valor del indicador por lo que le asignaremos valor 0, pero si queremos que nos muestre valores anteriores del indicador en la última barra (esto es, queremos retardar el indicador) le asignaremos el valor 1 para mostrar el valor del indicador en la barra anterior, 2 para mostrar su valor hace dos barras, etc.


Asimismo en los indicadores es habitual utilizar valores calculados a partir de los campos que definen una barra, para después promediarlos utilizando un método determinado. Para ello se utilizan los siguientes argumentos:

  • applied_price – define el campo que utilizaremos del precio; para ello utilizaremos las siguientes constantes:
PRICE_CLOSE - Cierre
PRICE_OPEN - Apertura
PRICE_HIGH - Máximo
PRICE_LOW - Mínimo
PRICE_MEDIAN – Precio Medio definido como (Máx+Mín)/2
PRICE_TYPICAL – Precio Típico, calculado como (Máx+Mín+Cierre)/3
PRICE_WEIGHTED – Precio ponderado, obtenido a partir de la siguiente fórmula: (Máx+Mín+Cierre+Cierre)/4
  • ma_method – permite definir el método utilizado para calcular una media móvil. Admite los siguientes valores:
MODE_SMA – Media móvil simple
MODE_EMA - Media móvil exponencial
MODE_SMMA - Media móvil suavizada
MODE_LWMA - Media móvil ponderada linealmente
  • period – define cuántas barras se incluiran para calcular la media
  • ma_shift – permite desplazar la media un número definido de barras. Si el valor introducido es positivo desplazará la media a la derecha el número de barras que hayamos indicado; por el contrario, si el valor es negativo, la media es desplazada a la izquierda.



Las funciones de indicadores que vamos a ver a continuación pueden agruparse en dos categorías: simples, cuando sólo constan de una línea, o complejas, cuando constan de varias líneas. En este último caso, se utilizará el parámetro mode como veremos más adelante..

Pasamos a continuación a ver todas las funciones de indicadores técnicos que incorpora este lenguaje, la forma de utilizarlos y un ejemplo:

Aceleración/Deceleración (AC)
Este indicador mide la velocidad a la que varían los precios.

Esquema: double iAC(string symbol, int timeframe, int shift)

Ejemplo:
double ac;
ac=iAC(0,0,0); // AC aplicado a la última barra en cualquier gráfico de cualquier escala temporal. ac=iAC("GBPUSD",PERIOD_M30,0);
// AC aplicado a la última barra del gráfico de 30 min. del GBPUSD.



Acumulación/Distribución (A/D)

Indicador utilizado para confirmar la tendencia de los precios utilizando el volumen. Debe tener en cuenta que, en el caso de las divisas, Metatrader muestra el volumen negociado por el broker en su red de negociación por lo que no tiene porque ser representativo del volumen negociado a nivel mundial.

Esquema: double iAD(string symbol, int timeframe, int shift)

Ejemplo:
double ad;
ad=iAD("GBPUSD",PERIOD_M5,5); // A/D de hace 6 barras en el gráfico de 5 min. del GBPUSD


Alligator
Indicador desarrollado por Bill Williams que combina 3 medias móviles

Esquema:

double iAlligator( string symbol, int timeframe, int jaw_period, int jaw_shift, int teeth_period,

int teeth_shift, int lips_period, int lips_shift, int ma_method, int applied_price,

int mode, int shift)

Obsérvese que aparte de los habituales symbol, timeframe y shift esta función para controlar el periodo y el desplazamiento de cada una de las tres líneas - mandíbula (jaw), dientes (teeth) y labios (lips) - de que se compone el Alligator.

Asimismo incorpora los parámetros para seleccionar el tipo de media aplicada (ma_method) y el campo del precio sobre el que se aplicará (applied_price).

Finalmente si miramos la estructura tenemos un parámetro adicional del que por ahora sólo habíamos hecho mención: mode. Las constantes que admite este parámetro varían dependiendo de la función que la utilice y sirve generalmente para seleccionar, en el caso de los indicadores de tipo complejo, la línea con la que queremos trabajar. En el caso del Alligator admite los siguientes valores:

MODE_GATORJAW - Mandíbula del Alligator (línea azul)
MODE_GATORTEETH - Dientes del Alligator (línea roja)
MODE_GATORLIPS - Labios del Alligator (línea verde)

Ejemplo:
double teeth;  
teeth=iAlligator(“EURUSD”,PERIOD_H1,128,96,64,0,0,0,MODE_EMA,
PRICE_TYPICAL,MODE_GATORTEETH,0);
// Calcula los "dientes" línea roja) en un gráfici horario del EURUSD.  
// Para ell utiliza una media móvil exponencial aplicada a precio típico
// Los periodos utilizados para el indicador son 128, 96 y 64. No se aplica desplazamiento.  


Average Directional Movement Index (ADX)
Este indicador se utiliza para detectar si hay o no tendencia.

Esquema: double iADX(string symbol,int timeframe,int period,int applied_price,int mode,int shift)

En este indicador, el parámetro mode admite los siguientes valores:

MODE_MAIN - Línea principal del indicador
MODE_PLUSDI - Línea +DI
MODE_MINUSDI - Línea –DI

Ejemplo:
double plusDi;
plusDi=iADX(“USDCAD”,PERIOD_M1,6,PRICE_OPEN,MODE_PLUSDI,0);
// Calcula el valor de la línea +DI en el gráfico de 1 min del USDCAD utilizando
// un periodo de 6 barras y tomando las aperturas de cada barra.


Average True Range (ATR)
Este indicador permite medir la volatilidad del mercado

Esquema: double iATR(string symbol,int timeframe,int period,int shift)

Ejemplo:
double atr;
atr=iATR(0,0,15,0); // ATR de 15 periodos del gráfico y escala temporal que deseemos.


Awesome Oscillator (AO)
Desarrollado por Bill Williams, permite determinar el momentum del mercado

Esquema: double iAO( string symbol, int timeframe, int shift)

Ejemplo:
double ao;
ao=iAO(“EURAUD”,PERIOD_W1,1);
// AO de la penúltima barra calculado en el gráfico semanal del EURAUD.


Bears Power
Este indicador trata de estimar el potencial bajista del mercado

Esquema: double iBearsPower(string symbol,int timeframe,int period,int applied_price,int shift

Ejemplo:
double bep;
bep=iBearsPower("EURUSD",PERIOD_M5,32,PRICE_CLOSE,1);
// Bears Power de la penúltima barra calculado sobre 32 cierres
// en un gráfico de 5 min. del EURUSD


Bollinger Bands (BB)
Se trata del conocido indicador de John Bollinger, con el que se pretende establecer un rango de movimiento probable para el precio

Esquema:

double iBands( string symbol, int timeframe, int period, int deviation, int bands_shift,int applied_price, int mode, int shift)

Como puede apreciarse tenemos dos parámetros adicionales: deviation, con el que se controla la amplitud de las bandas y bands_shift, con el que es posible desplazar las bandas. Por supuesto, también contamos con el parámetro mode, que admite los siguientes valores:

MODE_UPPER - Línea superior
MODE_LOWER - Línea inferior

Ejemplo:
double bb;
bb=iBands(0,0,20,2,0,PRICE_LOW,MODE_LOWER,0);

// Banda inferior de Bollinger calculada hasta la última barra
// de cualquier periodo y escala. Utiliza 20 barras para la media
// que se calcula sobre los mínimos y la desviación utilizada es 2


Bulls Power
Este indicador trata de estimar el potencial alcista del mercado

Esquema: double iBullsPower(string symbol, int timeframe, int period, int applied_price, int shift)

Ejemplo:
double bup;
bup=iBullsPower(0,0,10,PRICE_CLOSE,1);
// Bears Power de la penúltima barra calculado sobre 10 cierres
// en un gráfico y escala cualesquiera.


Commodity Channel Index (CCI)
El CCI se utiliza para medir la desviación del precio con respecto a su media

Esquema: double iCCI( string symbol, int timeframe, int period, int applied_price, int shift

Ejemplo:
double cci;
cci=iCCI(0,0,14,PRICE_TYPICAL,0);
// CCI de 14 periodos calculado sobre el precio típico
// para cualquier gráfico y escala.


DeMarker (DeM)
Creado por Tom DeMark, este indicador intenta predecir un giro de mercado basándose en la diferencia del precio con respecto a barras anteriores.

Esquema: double iDeMarker( string symbol, int timeframe, int period, int shift)

Ejemplo:
double dm;
dm=iDeMarker("EURJPY",PERIOD_H4,51,1);
// Calcula el DeMarker hasta la penúltima barra en un gráfico de 4 horas
// del EURJPY utilizando un 51 barras.


Envelopes
Con este oscilador es posible crear envolventes del precio en base a una media móvil.

Esquema: double iEnvelopes( string symbol, int timeframe, int ma_period, int ma_method, int ma_shift,
int applied_price, double deviation, int mode, int shift)

Aquí aparece el parámetro deviation con el que se controla la amplitud de la envolvente en términos porcentuales (por ejemplo, si asignamos el valor 0.25 diremos que sume y reste el 25% del precio a la media móvil).

Asimismo, dado que el indicador consta de dos líneas, disponemos del parámetro mode para seleccionar la línea que deseemos, utilizando par ello los siguientes valores:

MODE_UPPER - Línea superior
MODE_LOWER - Línea inferior

Ejemplo:
double envel;
envel=iEnvelopes(0,0,21,MODE_SMA,0,PRICE_CLOSE,0.05,MODE_LOWER,0);
// Banda inferior de la envolvente calculada usando una media simple de 21 periodos
// y una desviación del 5% para cualquier gráfico y escala


Force Index (FRC)
Este indicador trata de medir la fuerza de la tendencia.

Esquema: double iForce( string symbol, int timeframe, int period, int ma_method, int applied_price, int shift)

Ejemplo:
double force;
force=iForce("EURGBP",PERIOD_M5,21,MODE_LWMA,PRICE_HIGH,1);
// FRC de 21 periodos calculado hasta la penúltima barra usando una media
// linealmente ponderada de los máximos del gráfico del EURGBP en 5 min.



Fractals
Se trata de otro de los indicadores de Bill Williams, utilizado para detectar suelos y techos. Dado que el fractal no se da en todas las barras, esta función devuelve el valor cero mientras no se produzca el patrón.

Esquema: double iFractals( string symbol, int timeframe, int mode, int shift)

Esta función dispone del parámetro mode para seleccionar el tipo de fractal:

MODE_UPPER - Fractales bajistas (techo de mercado)
MODE_LOWER - Fractales alcistas (suelo de mercado)

Ejemplo:
double frac;
frac=iFractals("USDJPY",PERIOD_D1,MODE_UPPER,0);
// Fractales bajistas en la última barra de un gráfico diario del USDJPY.


Gator Oscillator
El Gator Oscillator se utiliza para mediar el grado de convergencia o divergencia entre las líneas que componen el Alligator.

Esquema:

double iGator( string symbol, int timeframe, int jaw_period, int jaw_shift, int teeth_period,
int teeth_shift, int lips_period, int lips_shift, int ma_method, int applied_price, int mode, int shift)

Dado que se basa en el Alligator, aparecen los parámetros para modificar sus mandíbulas, dientes y labios. Asimismo cuenta con el parámetro mode para seleccionar la parte del histograma que nos interese:

MODE_UPPER - Histograma positivo (verde)
MODE_LOWER - Histograma negativo (rojo)


Ejemplo:
double gator;
gator=iGator(0,0,13,8,8,0,0,0,MODE_SMA,PRICE_CLOSE,MODE_UPPER,0);
// Histograma positivo calculado sobre el Alligator de periodos 13,8,8
// utilizando una media móvil simple de los cierres.

 



Si te ha gustado este articulo, ¡compártelo en redes!