Mostrando entradas con la etiqueta Medias.. Mostrar todas las entradas
Mostrando entradas con la etiqueta Medias.. Mostrar todas las entradas

martes, 19 de mayo de 2009

Cruce de precio con una media

Este post lo escribo para contestar a un email recibido hace unos dias, siento no haber podido responder antes pero estuve de vacaciones.

En el email según entiendo se me pide un expert advisor para que nos avise de cuando el precio cruza una media LWMA.

La solución puesta a continuación es una de las múltiples que podríamos hacer, tampoco se si es exactamente lo que se me pidio en el email.

Para cambiar el período de la media tan solo hay que modificar la linea:

extern int media=15;

y poner el período que deseamos, es decir, si queremos una media de 100 cambiariamos el 15 por un 100.

//+------------------------------------------------------------------+
//| nuevo.mq4 |
//| Copyright © 2009, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, Programar meta."
#property link "http://programarmeta.blogspot.com"

extern int periodo=15;
bool BarraNueva=false;

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
double media=iMA(NULL, 0, periodo, 0, MODE_LWMA, PRICE_CLOSE,0);
Fun_NuevaBarra();
if(BarraNueva == 1)
{
if(((Open[1] <> media)) ||
((Close[2] <> media) && (Close[1] > media)))
Alert("Cruce hacia arriba");
if(((Open[1] > media) && (Close[1] <> media) && (Open[2] > media) &&
(Close[1] < nuevahora="0;" barranueva="false;" nuevahora="Time[0];" barranueva="true;">

Saludos a todos.

miércoles, 1 de abril de 2009

La función iMA de metatrader.

En este post voy a explicar un poco la función que trae el metatrader para obtener una media.

Podemos encontrarnos con distintos tipos de medias, por ejemplo:
  • Media simple, SMA.
  • Media exponencial, EMA.
  • Media alisada, WMA.
La función para obtener la media de una serie de valores es:

double iMA( string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift)

Con esta función se calcula la media y retorna su valor.

Como se aprecia a la función se le pueden pasar varios parámetros:
  • El primero de ellos es el parámetro symbol, con este parámetro se puede especificar el símbolo al cual queremos realizarle la media, por ejemplo EUR/USD, si se le pasa NULL se realizaría sobre el símbolo actual.

  • El segúndo parámetro es el timeframe, es decir el período al cual se le realizará la media, pudiendo ser 5 minutos, 1 hora entre otros, si se le pasa 0 se utilizará el tiempo de la gráfica actual.

    PERIOD_M1 1 1 minute.
    PERIOD_M5 5 5 minutes.
    PERIOD_M15 15 15 minutes.
    PERIOD_M30 30 30 minutes.
    PERIOD_H1 60 1 hour.
    PERIOD_H4 240 4 hour.
    PERIOD_D1 1440 Daily.
    PERIOD_W1 10080 Weekly.
    PERIOD_MN1 43200 Monthly.
    0 (zero) 0 Timeframe used on the chart.

  • En el parámetro period, deberemos especificar el período de cálculo al cual deseamos realizar la media.

  • El parámetro ma_method, puede tomar los siguientes valores:


    MODE_SMA 0 Simple moving average
    MODE_EMA 1 Exponential moving average
    MODE_SMMA 2 Smoothed moving average,
    MODE_LWMA 3 Linear weighted moving average

  • El parámetro applied_price puede tomar los siguientes valores:

    PRICE_CLOSE 0 Close price.
    PRICE_OPEN 1 Open price.
    PRICE_HIGH 2 High price.
    PRICE_LOW 3 Low price.
    PRICE_MEDIAN 4 Median price, (high+low)/2.
    PRICE_TYPICAL 5 Typical price, (high+low+close)/3.
    PRICE_WEIGHTED 6 Weighted close price, (high+low+close+close)/4.

Tan solo quedaría poner un ejemplo de como calcular un par de medias, pero eso lo haré con algún caso práctico.

Saludos a todos.