Ayuda a la codificación - página 222

 

Gracias por el código y la codificación Altoronto,

Muchas gracias, estoy listo para el siguiente paso

 

Gracias Altoronto,

El siguiente paso para este código es determinar la misma línea para todos los períodos, en el mismo punto, sin cambios durante el día, en el primer minuto para la vela a las 00:00 para el día en curso.

He adjuntado una imagen con descripciones para una mejor comprensión:

¿Puede usted o algún cuerpo ayudarme a codificar esto, y la codificación en el indicador?

Gracias de nuevo,

Si esto finalmente funciona enviaré una botella de buen vino chileno a quienes me ayuden,

Gracias de nuevo,

Daniel1983

Archivos adjuntos:
 
daniel1983:
Gracias Altoronto,

El siguiente paso para este código es determinar la misma línea para todos los períodos, en el mismo punto, sin cambios durante el día, en el primer minuto para la vela a las 00:00 para el día en curso.

He adjuntado una imagen con descripciones para una mejor comprensión:

¿Puede usted o algún cuerpo ayudarme a codificar esto, y la codificación en el indicador?

Gracias de nuevo,

Si esto finalmente funciona enviaré una botella de buen vino chileno a quienes me ayuden,

Gracias de nuevo,

Daniel1983

Daniel1983

Si está usando la primera barra cerrada alta y baja, habrá cambios durante el día

 

Sr. Mladen,

¿Por qué habrá cambios durante el día? Creo que sólo hacer el cálculo una vez y sólo para la primera vela de cada día. No las velas siguientes, no lo entiendo

en t=1 del día 1 hacer el cálculo para t= 0 del día 1, resultado dibujar una línea

sólo para el día que estás usando el indicador, a las 23:59 del día haz que deje de funcionar hasta el próximo día el precio del indicador para la 1ª vela

el próximo día

en t=1 del día 2 hacer el cálculo para t= 0 del día 2, el resultado es una línea

espero que este más claro

 
daniel1983:
Sr. Mladen,

¿Por qué habrá cambios durante el día? Estoy pensando en hacer el cálculo sólo una vez y sólo para la primera vela de cada día. No las velas siguientes, no lo entiendo

en t=1 del día 1 hacer el cálculo para t= 0 del día 1, resultado dibujar una línea

sólo para el día que estás usando el indicador, a las 23:59 del día haz que deje de funcionar hasta el próximo día el precio del indicador para la 1ª vela

el próximo día

a las t=1 del día 2 hacer el cálculo para t= 0 del día 2, resultado dibujar una línea

espero que aquí esté más claro

daniel1983

High[1] y Low[1] significa alto y bajo de la primera barra cerrada del gráfico actual. Si ese gráfico no es diario, obtendrás un cambio intradiario al cambiar el máximo y el mínimo. Además, en cualquier caso, pero cuando se utiliza el gráfico diario, usted tiene una mezcla de datos de diferentes marcos de tiempo

 

Ok Mladen, a ver si lo entiendo, creo que el problema es que estoy mezclando 2 timeframes en el mismo código, así que si solo uso 1 timeframe por ejemplo todo para el chart de 1 minuto, debería funcionar:

hagamos todo para un gráfico de un minuto,

fórmula del código por el precio donde la línea será =

double minuteOpen = iOpen(NULL,PERIOD_M1,1);

double number = (minuteOpen+High[1]+Low[1])/3;

de esta manera creo que el código para la línea horizontal al precio calculado debería ser para t=1, pero no funciona

//+------------------------------------------------------------------+

//| Función de inicialización del indicador personalizado |++

//+------------------------------------------------------------------+

int init()

{

//----

return(0);

}

int deinit() {

Comentario("");

ObjectDelete("KeyLine");

return(0);

}

//+------------------------------------------------------------------+

//| Función de iteración del indicador personalizada ||.

//+------------------------------------------------------------------+

int inicio()

{

double minuteOpen = iOpen(NULL,PERIOD_M1,1);

double number = (minuteOpen+High[1]+Low[1])/3;

Comment("Línea clave: ",number);

ObjectDelete("KeyLine");

ObjectCreate("KeyLine", OBJ_HLINE,1, CurTime(),number);

ObjectSet("KeyLine",OBJPROP_COLOR,Orange);

ObjectSet("KeyLine",OBJPROP_STYLE,STYLE_SOLID);

ObjectsRedraw();

return(0);

}

 
daniel1983:
Ok Mladen, a ver si lo entiendo, creo que el problema es que estoy mezclando 2 timeframes en el mismo código, por lo que si sólo uso 1 timeframe por ejemplo todo para el charting de 1 minuto, debería funcionar:

vamos a hacer todo para un gráfico de minutos,

fórmula de código por precio donde la línea será =

double minuteOpen = iOpen(NULL,PERIOD_M1,1);

double number = (minuteOpen+High[1]+Low[1])/3;

de esta manera creo que el código para la línea horizontal al precio calculado debería ser para t=1, pero no funciona

//+------------------------------------------------------------------+

//| Función de inicialización del indicador personalizado |++

//+------------------------------------------------------------------+

int init()

{

//----

return(0);

}

int deinit() {

Comentario("");

ObjectDelete("KeyLine");

return(0);

}

//+------------------------------------------------------------------+

//| Función de iteración del indicador personalizada ||.

//+------------------------------------------------------------------+

int inicio()

{

double minuteOpen = iOpen(NULL,PERIOD_M1,1);

double number = (minuteOpen+High[1]+Low[1])/3;

Comment("Línea clave: ",number);

ObjectDelete("KeyLine");

ObjectCreate("KeyLine", OBJ_HLINE,1, CurTime(),number);

ObjectSet("KeyLine",OBJPROP_COLOR,Orange);

ObjectSet("KeyLine",OBJPROP_STYLE,STYLE_SOLID);

ObjectsRedraw();

return(0);

}

No

Deberías hacerlo así :

double number = )iOpen(NULL,PERIOD_D1,1)+iHigh(NULL,PERIOD_D1,1)+iLow(NULL,PERIOD_D1,1))/3

Y de esa manera vas a obtener todos los datos de los datos diarios (no se mezclan los datos de tiempo de diferentes marcos de tiempo)

 

Gracias Mladen,

creo que tal vez estoy yendo demasiado rápido. Vamos a ir un poco hacia atrás sin entrar en cualquier fórmula, vamos a empezar desde antes, vamos a hacer el indicador de hacer sólo la siguiente tarea:

Dibujar una sola línea horizontal en el precio de apertura de la vela del primer minuto de cada día, vela a las 00:01 minutos, y borrarla a las 23:59 minutos.

El precio de esta línea no cambia en el tiempo para todos los períodos el mismo precio hasta las 23:59 cuando se borra, y reiniciar de nuevo a las 00:01 del día siguiente.

¿Cómo sería esto?

 
daniel1983:
Gracias Mladen,

Creo que tal vez estoy yendo demasiado rápido. Vamos a retroceder un poco sin introducir ninguna fórmula, vamos a empezar desde antes, vamos a hacer que el indicador haga sólo la siguiente tarea

Dibujar una sola línea horizontal en el precio de apertura de la vela del primer minuto de cada día, vela a las 00:01 minutos, y borrarla a las 23:59 minutos.

El precio de esta línea no cambia en el tiempo para todos los períodos el mismo precio hasta 23:59 cuando se borra, y reiniciar de nuevo a las 00:01 del día siguiente.

¿Cómo sería esto?

Si utiliza la fórmula que he publicado, entonces se comportará exactamente así : tan pronto como el día cambia, el valor cambiará también y se mantendrá fijo hasta el día siguiente

 

Gracias Mladen, hice los cambios, el indicador se ve así, pero todavía no hacen nada en el gráfico...

//------------------------------------------------------------------

#property copyright "www.forex-tsd.com"

#property link "www.forex-tsd.com"

//------------------------------------------------------------------

//+------------------------------------------------------------------+

//| Función de inicialización del indicador personalizada ||

//+------------------------------------------------------------------+

int init()

{

//----

return(0);

}

int deinit() {

Comentario("");

ObjectDelete("KeyLine");

return(0);

}

//+------------------------------------------------------------------+

//| Función de iteración del indicador personalizada ||.

//+------------------------------------------------------------------+

int inicio()

{

double number = (iOpen(NULL,PERIOD_D1,1)+iHigh(NULL,PERIOD_D1,1)+iLow(NULL,PERIOD_D1,1))/3;

Comentario("Línea clave: ",número);

ObjectDelete("KeyLine");

ObjectCreate("KeyLine", OBJ_HLINE,1, CurTime(),number);

ObjectSet("KeyLine",OBJPROP_COLOR,Orange);

ObjectSet("KeyLine",OBJPROP_STYLE,STYLE_SOLID);

ObjectsRedraw();

return(0);

}

¿Qué estoy haciendo mal ahora?

Gracias