Ayuda para programar contador de velas

Foro para cuestiones generales sobre la plataforma MetaTrader 4.

Ayuda para programar contador de velas

Notapor SantiLong » 17 Mar 2016, 15:07

¡Un saludo a la comunidad!
Necesito ayuda ¡Urgente! para resolver una cuestión que me está volviendo loco, os lo juro.
El caso es que quiero programar, en el editor de Metatrader4, unas lineas de código que nada más cuente el número de velas transcurrido desde una condición dada.
Os explico:
Después que se produce un cruce, este contador debe de almacenar el numero de velas que se van formando, hasta llegar a 5 (por ejemplo), y pintar en el gráfico una flecha, un punto, una linea, etc. El código que programé, es el siguiente:
//----------------------------|Linea vertical|-------------------------------//
if (sediocruce==true)
{
if (cruce=="Alza"){Colorvela=clrLime;}else{Colorvela=clrRed;}
LineName = "OpcionCompra"+cruce+IntegerToString(vela);
ObjectDelete(LineName);
ObjectCreate(LineName,OBJ_VLINE,0,Time[vela],0);
ObjectSet(LineName,OBJPROP_COLOR,Colorvela);
ObjectSet(LineName,OBJPROP_WIDTH,1);
ObjectSet(LineName,OBJPROP_STYLE,STYLE_DOT);
sediocruce=false;
contar=true;
}

//------------------------------|Contador|-----------------------------------//
if (contar==true){count=count+1;}
if (count==5){Alert("Contador = "+count);contar=false;count=0;}
Comment("Contador = "+count+" Contar = "+contar);
//========================================================//
}
return(0);
}
//=======================================================================================//

El primer (if) se realiza perfectamente: Se dibuja la linea vertical del color que corresponde, "sediocruce" vuelve a "false", por si se produce otro cruce, y la variable "contar" se vuelve verdadera.
Hasta aqui todo bien, el problema es el siguiente bloque.
Como veis es sencillo: Si "contar" es verdadera, incrementa "count" en +1 y si "count" es igual a 5, entonces muestra una ventana advirtiendo que "count" llegó a ese valor, y se inicializan de nuevo para esperar el siguiente cruce.
Bueno, ¡pues no me funciona!

Podeis ver que añadí un Comment, para poder ir viendo la evolución del contador en pantalla y, ¿sabeis que pasa? Os lo voy a decir:
Cuando se produce el cruce, la variable "contar" se vuelve verdadera y "count" toma el valor 3, (¡3 no 1!). En la siguiente vela, "count" es igual a 2, en la siguiente es igual a 1 y, en la cuarta "count" es igual a 0 y "contar" se vuelve igual a "false".

Quiero decir que los cruces se realizan perfectamente, las lineas verticales se dibujan donde deben de ir, lo único que no me funciona es el bendito contador, demás está decir que "count" esta inicializada, al igual que las otras variables, como locales (int start()), por favor........

¿Podría alguien decirme, qué burrada estoy cometiendo?

¡Hala, disculparme si me extendí mucho!

¡¡Saludos!!
SantiLong
 
Mensajes: 7
Registrado: 12 Mar 2016, 19:17
Karma: 0

Re: Ayuda para programar contador de velas

Notapor Duracell » 18 Mar 2016, 17:21

Buenas, a mi me parece correcto... Sin embargo, añadiría chivatos para ver dónde falla, algún Print() o Alert() o Comment().

Cuando inicializas count a 0? La primera vez me refiero.


Enviado desde mi iPhone con Tapatalk
Continous learning... always long @ smoke xd

La Gran Carrera xd
Imagen
Avatar de Usuario
Duracell
 
Mensajes: 524
Registrado: 02 Nov 2013, 13:21
Karma: 10

Re: Ayuda para programar contador de velas

Notapor SantiLong » 18 Mar 2016, 20:39

Hola Duracell

Gracias por responder!

Pues las variables están inicializadas con el valor 0, tanto "count", como "contar", como "sediocruce", al arrancar el indicador en el gráfico.
De hecho cuando se produce el cruce, "sediocruce" toma el valor de 1(true) y se dibuja la linea vertical, "contar" también toma el valor 1(true) y permanece con ese valor, hasta que se comienza a formar la 4ta. vela, que toma el valor 0(false)(ni idea porque hace eso).
El contador "count" en todo ese tiempo (4 velas), tiene el valor 0. Otras veces (ya no se cuando, de tanto que he modificado el programa), al tomar "count" el valor de 1, "count" toma el valor 3 y va disminuyendo hasta llegar a la 4ta. vela que toma el valor 0, al igual que "contar".

Reviso y reviso el código, y me parece que está correcto, pero no funciona.
¡¡No se que pasa, ni lo que estoy haciendo mal!!
A ver si se aparece por aqui alguno de los "magos" que tenemos en este foro, y me echa una manita.

¡Saludos Duracell!
SantiLong
 
Mensajes: 7
Registrado: 12 Mar 2016, 19:17
Karma: 0


Volver a MetaTrader 4

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado