Aprender Trading

Aprende a programar MQL4 para Metatrader – crea tus robots y indicadores de Trading ►Parte 4◄

Muy buenas compañer@s, que tal la semana, ¿habéis mirado los condicionales?. A estas alturas ya tendrías que dominarlos, al menos los de tipo IF-ELSE, lo ideal es que ya supieses también manejar los SWITCH. Hoy vamos a hacer un indicador apoyándonos en los IF-ELSE.

Que aprenderás hoy:

Hoy afianzarás el concepto de los condicionales con IF, sabrás donde encontrar la primera ayuda si la necesitas y terminarás sabiendo cómo poner una alerta para que tu indicador te avise si estás distraído.

Al lío…

Lo primero que me gustaría que supieses es dónde puedes encontrar ayuda si te quedas en blanco. Además de buscarlo en los miles de foros y de “San Google”, si sigues sin encontrar lo que buscas, la principal vía de información es la ayuda de MetaEditor, solo tienes que pulsar F1 o seleccionarlo en el menú principal.
curso-programar-metatrader
Ahora bien, que esto no quede aquí, explóralo antes de seguir este post, familiarízate con el e intenta buscar al menos tres cosas a ver si eres capaz de manejarte perfectamente. Si no se te ocurre nada puedes buscar “switch”, “iMA” y “OnCalculate”. Este es un buen ejercicio además de un arma para que a partir de ahora no te puedas quedar en blanco.
Vale, ya que le has dado una vuelta a la ayuda (bueno, o al menos eso quiero creer ;)), vamos a afianzar las condiciones con un indicador que nos va a avisar del cambio del precio, esto es, cuando el precio cruce una EMA.
Crea un Indicador, esta vez no será de tipo “separado del precio”, sino del tipo “indicator_chart_window”, osea que irá con el precio. ¿Sabes crearlos ya verdad?, ¿También sabes dónde vamos a colocar el código?, si no es así, con el código delante mira a ver dónde lo pondrías…
Efectivamente, en “OnCalculate”!!! ;D
Una vez creada la base, antes de ponerte a codificar coge ese cuaderno y esos lapiceros de colores que ya tendrías que tener y píntate cómo quieres que quede el indicador, píntalo en detalle con niveles y todo (si los tiene) y al lado un esquema de las reglas que va a tener (lo más preciso posible).
Para el indicador que vamos a hacer en el post hoy, no tiene ningún sentido dibujar nada porque solo sacará un sonido, pero los necesitas porque quiero que te inventes un indicador basado en condicionales, separado del precio, un indicador con barras como ya hicimos en el pasado  y que use el sonido que vas a ver ahora de la manera que creas mejor. Échale imaginación, no tiene ni porqué tener sentido para el trade, lo único que tiene que hacer es pintar algo si se dan las condiciones, como por ejemplo: Si el precio de cierre está por
encima de la ema_a y la ema_a está por encima de la ema_b y la ema_b …
el límite lo pones tú.
No pases de aquí sin haber diseñado el indicador.
Ahora tienes que saber que: High[0] te devuelve el valor más alto de la vela actual, lo puedes recoger de esta forma:
double vela_high = High[0];
 
No tiene por qué ser la vela actual, si quieres saber cuál es el valor más alto de la cuarta vela (sin contar la vela inicial, osea la quinta vela contando la vela actual) tendrías que poner High[4].
High[x] siendo x la posición de la vela (recuerda que empieza por 0 no por 1, la vela 1 es la vela justo anterior a la actual ;))
Lo mismo pasaría si queremos conocer el precio de apertura (Open[x]), el de cierre (Close[x]) y el precio
más bajo (Low[x]). Estos datos también te los da la misma función OnCalculate con los valores  “high[]”, “low[]”, etc, pero los vamos a dejar de lado para otro día (Si quieres puedes substituirlos por los anteriores a ver qué pasa :D).
Bien, ahora sacamos el precio de una EMA, al igual que el post pasado no te voy a decir cómo se crea, ya tienes muchas armas para averiguar cómo se hace, pero si te voy a poner el cascarón, para que lo saques con la vela anterior:
double ema = iMA(……, 1);
 
Bueno, ya solo queda la parte de los condicionales. Queremos que cuando la vela pase de abajo a arriba de a la EMA suene y cuando pase de arriba hacia abajo de la EMA también suene. Dicho de otro modo: Si la apertura de la vela 1 está por debajo de la EMA y la apertura de la vela actual está por encima de la EMA … TINTINTIN!!!!!!!
Codificado se quedaría de la forma;
double
ema = iMA(…1);
if (Open[1] < ema &&
Open[0] > ema)
{
Comment(“Cambio del precio a Alcista”);
Alert(“ALCISTA”);
}
else if (Open[1] > ema &&
Open[0] < ema)
{
                Comment(“Cambio del precio a Bajista”);
Alert(“BAJISTA”);
}
else
{
                Coment(“El precio sigue su curso”);
}
Efectivamente, ¿ya lo has averiguado?, la forma de sacar una alerta sonora es con Alert(…).
Pero este código no compila, tiene un error, ¿sabrías corregirlo?.
Ojo, este código te va a sonar en cada tick hasta que cambie a una vela nueva y esta no cumpla con las condiciones, porque no le hemos puesto nada para que compruebe la condición solamente cada vela nueva. Vamos que si lo estás poniendo en velas de H1 te vas a tirar de los pelos. No te digo nada si las velas son de D1.
Para que solamente compruebe tus condiciones cada nueva vela el código te tendrá que quedar de esta forma:
datetime date = 0;
int
OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {

if (date != Time[0])

{
      date =
Time[0];
      double ema = iMA(…1);
      if (Open[1] < ema && Open[0] > ema)
      {
Comment(“Cambio del precio a Alcista”);
         Alert(“ALCISTA”);
      }
      else if (Open[1] > ema &&
Open[0] < ema)
      {
                Comment(“Cambio del precio a
Bajista”);
Alert(“BAJISTA”);
      }
else
      {
                Coment(“El precio sigue su curso”);
      }
   }
return(rates_total);
}
Hemos declarado una variable de tipo fecha y hora (datetime) y la hemos metido en otro condicional que dice… “si la fecha no es la de la vela actual… puedes pasar”. Y le asignamos la fecha actual para que la siguiente vez (al tick siguiente) que lo compruebe no pase por ser la misma fecha 😀
OK, una vez que tienes todas la piezas ya puedes irte a tomar el té o ir al baño tranquil@ que cuando se den las condiciones necesarias tu indicador te avisará… o no 😉
curso-programar-metatrader
Repasa lo aprendido anteriormente…  Nos vemos en el siguiente post.

“No
soy producto de mis circunstancias, soy producto de mis decisiones. Steve
Covey”

Marcelo González

Sobre el autor

Jontrader

Jontrader

Toda la mejor información y herramientas para tu Trading. Compartimos Indicadores, Sistemas, Robots, scripts y mucho más! Para que puedas evaluar, testear y comprobar si son útiles para mejorar tu Trading.
Blog de habla Hispana con más de 24.000 suscriptores, ¡Únete ya!

1 Comentario

Click aquí para comentar

Trading TV (Youtube)

CANAL TELEGRAM

Únete a más de 46.000 personas que ya reciben contenidos exclusivos