Aprender Trading

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

Muy buenas compañer@s,
¿Cómo fue la semana?, yo retomé los entrenos que los tenía un poco olvidados desde hace unos meses asi que… me
duele tó.
Y hablando de cosas más interesantes, ¿has oído hablar de las Perseidas?, seguro que sí. Pues ya han empezado!!! Suele ser del 17 de Julio al 24 de Agosto más menos. Puedes mirar a ver cuándo es el mejor momento para verlas desde donde estés y así preparar un deseo por cada una que veas 🙂
¿Sabes por qué se producen y porqué se llaman así?. Porque cada año La Tierra cruza la órbita del cometa “Swift-Tuttle” (el nombre lo he tenido que mirar porque no tenía ni idea) y lo que vemos son
los restos de la cola de este. Se llaman Perseidas porque desde La Tierra parece que vienen de la Constelación de Perseo. Por cierto, te animo a que leas la historia de Perseo… un canalla con suerte o un pobre diablo? 😉

Que aprenderás hoy:

Aprenderás a poner texto en el gráfico, concretamente sobre las velas, para señalar formaciones o simplemente para marcar algo que creas importante. Además aprenderás a crear funciones y llamarlas, para que empieces a tener el código mas separado, limpio y te sea más fácil cambiar alguna funcionalidad sin ensuciar el código.
Todo esto lo veremos creando un indicador que reconozca un patrón de velas, concretamente la “Morning Star”
o la “Evening Star”
y así homenajeamos a la lluvia de estrellas 😉

Al lío:

Bien, ya sabrás crear un indicador al precio, así que esta parte me la salto.
En la última línea del indicador vamos a poner dos funciones nuevas de la forma:
bool ExisteFormacionMorning()
{
   (… código …)
   return false;
}
bool ExisteFormacionEvening()
{
   (… código …)
   return false;
}
Y que narices es esto?, pues:
bool:
es el tipo de valor que devolverá nuestra nueva función. Este caso es booleana porque necesitaremos que retorne un true o un false, nada más.
Si creas una función puede devolver cualquier tipo de valor como:
int ExisteFormacionMorning()
double ExisteFormacionMorning()
string ExisteFormacionMorning()
ExisteFormacionMorning: Es el nombre que le vamos a dar a la función, pero omite los acentos y los espacios en blanco.
return false: porque nuestra función devuelve un booleano, pero si devolviese un int como en el ejemplo anterior que tendría que devolver?, efectivamente, un número entero… return 3 por ejemplo.
Vale ya sabes crear funciones, pero el tema es más extenso claro. Como ya sabes que me gusta darte la parte esencial y que la complementes para mejorar lo que te enseño. Con esto desarrollas poco a poco la parte autodidacta y de paciencia que tanto se necesita en este campo 😉 asi que… te toca ampliar el conocimiento averiguando como poder crear funciones en las que se la puedan pasar parámetros.
Vale una vez que tenemos la función la vamos a llamar desde “OnCalculate” con el nombre que la hemos puesto
y de esta manera:
ExisteFormacionMorning();
Así de fácil…
Vale ahora vamos a rellenar las funciones. Para la primera función la damos la tarea de comprobar si existen patrones “Morning Star” en el precio. Ahora es cuando pintas el patrón en tu cuaderno para el curso y a todo color claro, con los colores que elijas. Si no conoces el patrón es algo así:
curso-programacion-mql4
¿Ya los has pintado?, bien, ahora te enseño como se pintarían en código… tendría que ser con estas condiciones algo así:
Open[3]>Close[3] &&
(Close[2]<Close[3] && (Open[2]<Close[2] ||
Open[2]==Close[2])) &&
(Open[1]>Close[2] && Open[1]<Close[1])
¿Has entendido por qué?,
“Open” es el precio de aperture, “[3]” es la tercera vela y el conjunto es el precio de apertura en la tercera vela. El “Close” lo mismo… ¿se ve mejor ahora?.
Fíjate en los puntos rojos en la imagen y tacha cada punto rojo con cada Open o Close de los expuestos anteriormente que le corresponda (en tu cuaderno de dibujo). Una vez los taches todos intenta llegar a una conclusión, pero ten en cuenta una cosa, este código que te pongo son las dos imágenes juntas 😉 Ah!!!, se empieza a contar en la vela “Comienzo” y recuerda, esa vela es la “0”. Venga que tú puedes!!!!
Vale, osea que si cumple todas esas condiciones hay un patrón ¿verdad?, pues entonces ya lo tienes, nuestra función quedará así:
bool
ExisteFormacionMorning()
{
   if( Open[3]>Close[3] &&
       (Close[2]<Close[3] &&
(Open[2]<Close[2] || Open[2]==Close[2])) &&
       (Open[1]>Close[2] &&
Open[1]<Close[1]) )
   {
       return true;
   }
   return false;
}
Haz lo mismo para la función de “Evening Star”, recuerda pintarlos en el cuaderno y a color. Si no lo conoces, el patrón tiene un aspecto así:
curso-programacion-mql4
También lo pintaste?, bien, pues su código sería algo así:
Open[3]<Close[3] &&
(Close[2]>Close[3] && (Open[2]>Close[2] || Open[2]==Close[2])) &&
(Open[1]<Close[2] && Open[1]>Close[1])
Haz exactamente lo mismo que con el “Morning” y rellena la función ExisteFormacionEvening. Seguro que te resulta más fácil.
Ya sabes crear funciones, no olvides ampliar los conocimientos, que son importantes 😉
Vale ya tenemos un gatillo para saber dónde está el patrón, ahora aprenderemos a crear una función que pinte un texto encima del patrón. Te voy a poner la función entera, pero intenta averiguar que hace antes de que te explique cómo funciona.
void
PintaTextoEnPatron(datetime
date, double altitude, string value, color colorT)
{  
   ObjectDelete(“morning”);
   ObjectCreate(“morning”, OBJ_TEXT, 0, date, altitude);
   ObjectSetText(“morning”,value,8,”Consoles”,
colorT);
   ObjectSet(“morning”, OBJPROP_ANGLE,
89);
}
void:
Esta función no devuelve nada, ni un booleano ni un int ni nada, asi que si no retorna ningún valor tendrás que ponerle void. Si retorna un valor ya sabes que tendría que poner ¿verdad?.
(datetime date, double altitude,…): Si no sabes qué es esto es porque no me hiciste caso cuando te dije que mirases como crear funciones y pasarle parámetros verdad?? 😉
“morning”: Este es el nombre que le darás al texto para que lo puedas identificar desde Metatrader.
ObjectDelete(“morning”):
Necesitas poner este apartado si quieres borrar el anterior, si deseas conservarlo tendrás que llamarlo diferente, ya no será “morning” sino “xxxx” o como quieras 😉
ObjectCreate(“morning”, OBJ_TEXT, 0, date, altitude): Esta parte creará a una altitud (altitude) de la vela el texto en una vela determinada (date)
ObjectSetText(“morning”,value,8,”Consoles”, colorT): Dale un texto (value) y ponle un color (colorT). Ese 8 que ves ahí es el tamaño de letra, en este caso lo pongo fijo. “Console” es el tipo de letra como ya has averiguado 😉
ObjectSet(“morning”, OBJPROP_ANGLE, 89): Para que sea un texto vertical le ponemos unos grados concretos de inclinación, aquí verás que hay un 89, ponle los grados que te gusten más dependiendo como quieras ver ese texto.
Buenooo, ya tenemos tres funciones, pero quieres llamarlas a todas ¿verdad?, sino ¿para qué narices las creamos?, bueno pues para llamarlas tenemos que formar un plan para hacerlo, un plan en palabras para hacerlo. Ese plan es muy sencillo, es algo así como:
Si hay patrón Morning márcalo.
Si no hay patrón Morning y hay patrón Evening márcalo
Sería algo así ¿verdad?, y ¿a que ya tienes prácticamente la forma de hacerlo en código?, pues vamos…
En código sería algo así como:
if (ExisteFormacionMorning())
{
   PintaTextoEnPatron(Time[2], High[2], “[
Morning Star ]”, clrBlue);    
}
else if
(ExisteFormacionEvening())
{
   PintaTextoEnPatron(Time[2], High[2], “[
Evening Star ]”, clrBlue);
}
Donde:
Time[2]: Es date en la tercera vela
High[2]: Es altitude en la tercera vela
“[ Morning Star ]”: Es value
clrBlue: Es colorT
Y donde ponemos este código?… En “OnCalculate” claro 😉
Que de código ¿no?, que rollo te estoy echando ¿verdad?. En esta clase buscaba un poco eso, soltarte un rollo más de tipo ver código para fomentar tu concentración, que también hay que entrenarla. Además para mirar y reconocer las estrellas hay que concentrarse mucho 😉 Pero no sufras esta vez te pondré el código para descargarlo y échale un vistazo.
El único cambio que notarás con el indicador que hicimos es que está puesto para que compruebe si hay un patrón solamente al empezar una vela nueva. ¿Sabrías distinguir la parte del código?, ya la vimos anteriormente así que seguro que si máquina!!!
Bueno, ya que lo tienes deberías completarlo con más patrones, ese será el ejercicio que te hará pillar la lección a FUEGO. Si logras completar el indicador con al menos 10 patrones más notarás un cambio brutal en el manejo de tus propias armas creación de indicadores para el Trade.
Con el tiempo lo puedes mejorar, cambiándole el tipo de letra o el color, tamaño, el mismo código, etc…
Y un regalo final, te voy a enseñar como probar tu indicador…
Una vez lo tienes instalado, pulsa el botón de Metatrader “Prueba de Estrategia” o “Crtl+R”. Aparecerá este apartado en la parte de abajo del Metatrader.
curso-programacion-mql4
Bien pues solo tienes que configurarlo rellenando los apartados [1] que aparezca “Indicador”, el apartado [2] que
aparezca el nombre de tu indicador y pulsar el botón [3], así de simple, ya puedes ver cómo funciona y sacarle defectos y virtudes.
De todas formas, si tienes alguna duda al ampliar tu nuevo indicador, consúltamelo y lo vemos juntos.
Mientras tanto… Nos “vemos” en el siguiente post.
“Todos somos unos genios, pero si juzgas a un pez por su habilidad
de escalar un árbol, vivirá su vida entera creyendo que es estúpido. Albert
Einstein”

 

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!

2 Comentarios

Click aquí para comentar

Trading TV (Youtube)

CANAL TELEGRAM

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