Indicador Preguntas varias - página 8

 
Marco vd Heijden:

La primera barra del día debería ser la primera barra después de que TimeHour() comenzara a contar.
Eso será por supuesto la primera barra de cualquier cosa M1 , M5 , M15 etc todos ellos comienzan nuevas barras.

Lo probaré pronto, también estoy trabajando en este tema.

Muchas gracias.

 

Sigo leyendo foros e investigando, puedo encontrar foros similares, pero no puedo encontrar exactamente lo que quiero. ( tal vez no entiendo su estilo de código o ... )
Hice rápidamente la captura de pantalla, espero que esto podría ayudar a entender claramente a mí.

primer bar del día

Gracias de antemano.

 
datetime open;

open=iOpen(Symbol(),PERIOD_D1,0);

// put in ontick

if(iOpen(Symbol(),PERIOD_D1,0)!=open)
{
  if(TimeHour(open)==0)
   {
    Alert("New Day !!");
   }
  open=iOpen(Symbol(),PERIOD_D1,0); // assign new value every hour
}

He tomado unas cuantas cervezas así que espero que te hagas una idea, estoy seguro de que está mal en todos los sentidos posibles.

Creo que open debe ser reemplazado por time.

iTime(

O tal vez incluso se puede hacer:

if(TimeHour(TimeCurrent())==0)
{
  Alert("NEw DAy m8");
}
ps. ¿qué pasó con el otro hilo? ¿tenía casi 40 páginas?
 
Marco vd Heijden:

Me he tomado unas cuantas cervezas así que espero que os hagáis una idea, seguro que está mal de todas las maneras posibles.
O tal vez usted pueda hacerlo:

ps. ¿qué pasó con el otro hilo? era casi 40 páginas?
Sr. William - ( Respeto a usted y a sus comentarios. ) Me enfrenté pocas veces a que usted escribiera esta frase: Aquí no hay lectores de mente.
Ahora pienso que si no puedo escribir más claramente sobre mi tema, ¿cómo puede la gente entenderme claramente?

---

Sr. Marco - muchas gracias por su comentario. Ya lo sé, también utilicé códigos similares en mis indicadores.

( Traté de explicar mi problema en la sección de código fuente )

iTime( Symbol(), PERIOD_D1, 0 )
// this code gives me Hour 00:00 - but actually D1 time should show Hour 01:00 | this mean my broker shows absolutely wrong Hour for period PERIOD_D1
// But I need to write code to get first H1 bar Time of the day ( e.g: if first H1 bar 00:00 or 01:00 or ... ) instead of PERIOD_D1
// But I really struggle to write code for get today first H1 time

---

P.S

¿Crees que por qué no abro subtemas?
Todavía estoy trabajando en ello. Puedo encontrar soluciones en los foros. Ahora va bien también un poco lento.

Además:
Cuando empecé a escribir el panel de comercio de EA se pensó que tengo que escribir 4 scripts de función de venta, compra, cierre de todos los pedidos, EXIT ( eliminar ) EA.
Mientras trabajo en ello tengo muchas ideas... ahora que los EA's tienen más de 3k líneas.
Todavía debería escribir casi 10 funciones más útiles si me decidiera por todas ellas.

También tal vez cuando termine mi que el panel de comercio de EA voy a escribir un poco de historia acerca de cómo empecé a escribir la secuencia de comandos para mi panel de comercio de EA. ( aun no lo he terminado - realmente creo que quien lo vea la mayoría de la gente dirá: ¡Wow impresionante! ) jeje :)

---

Gracias Sr. Marco.

Muchas gracias a todos los que respondieron a mis comentarios y por su ayuda.

 
#property strict
#property show_inputs
#define HOUR 3600
#define DAY 86400
extern int local_offset = 1; // local time offset from broker (hours)

void OnStart()
  {
   local_offset*=HOUR;

   int D1_shift = (TimeCurrent()%DAY > local_offset) ? 0 : 1;

   datetime broker_midnight = iTime(_Symbol,PERIOD_D1,D1_shift);
   datetime local_midnight  = broker_midnight + local_offset;

   int      M5_shift = iBarShift(_Symbol,PERIOD_M5,local_midnight);
   datetime M5_time  = iTime(_Symbol,PERIOD_M5,M5_shift);
   double   M5_open  = iOpen(_Symbol,PERIOD_M5,M5_shift);

   printf("M5_time: %s M5_open: %f", TimeToString(M5_time),M5_open);
  }
 
honest_knave:

Gracias por tu gran ejemplo.
Tal vez si me tomo un tiempo voy a tratar de explicar con el vídeo / imagen mañana.

Investigo mucho sobre este tema.

( también busco como estas palabras clave en google seo ( comentario no útil hasta ahora en seo): site:mql4.com | site:mql5.com primera barra del día )

 

¿Buscas una forma de detectar automáticamente el desfase horario local > del broker? por ejemplo, +1 hora

Si vas a tener una configuración manual (esto es mejor porque a veces no quieres usar la hora local sino otra zona horaria en conjunto) los pasos que debes seguir son como en mi script de arriba:

1. Obtenga la medianoche en la hora del corredor (usando iTime o a través de un cálculo)

2. 2. Convertirla en una medianoche local utilizando su configuración de desplazamiento

3. Ponga la medianoche local a través de iBarShift para obtener la barra correcta en su marco de tiempo elegido.

 
honest_knave:

¿Estás buscando una manera de detectar automáticamente el desfase horario local > del broker? por ejemplo, +1 hora
Si vas a tener una configuración manual (esto es mejor porque a veces no quieres usar la hora local sino otra zona horaria en conjunto) los pasos que debes seguir son como en mi script de arriba:
1. Obtén la medianoche en la hora del broker (usando iTime o a través de un cálculo)
2. 2. Convertirla en una medianoche local usando su configuración de offset
3. 3. Poner la medianoche local a través de iBarShift para obtener la barra correcta en su marco de tiempo elegido.

Me has entendido perfectamente - que estoy buscando una manera de automáticamente... - Entonces, ¿por qué? Tengo pocos indicador importante ( auto hecho - con diferentes foros ayudó ) si elijo la forma manual - podría cambiar su configuración ... que es largo camino - Estoy tan perezoso. :)
Gracias mucho más!
Tal vez he encontrado la solución ( en este momento parece que está trabajando - Ya he probado 2 corredores diferentes que obtengo el tiempo correcto ).

Creo que la pregunta viene de la falta de experiencia.

Q:¿Cómo puedo mantener sólo la hora 1 en el resultado de abajo, por favor?
( En realidad he encontrado cómo puedo mantener sólo "1" de abajo resultado - pero necesito método profesional, por favor )
( e.g: resultado: 2017.02.2701:00:00 - Pero necesito mantener sólo: 1 )

2017.00.00 00:00:00.000 Custom Indicator EURUSD,M5:  Bar Time: 2017.02.27 01:00:00

Muchas gracias por todo.

( Voy a compartir cómo he encontrado la solución. - si no me ayudaron no puedo encontrar la solución - una más muchas gracias. )

 

Estaba buscando justo el código de abajo.
Pero todavía tengo que probarlo.

Period_Look=iTime(Symbol(),PERIOD_W1,0); // actually I need PERIOD_D1 - but did not work correctly - I still need to see first Hour of Monday for test.
Period_Shift=iBarShift(Symbol(),PERIOD_H4,Period_Look);
Period_Time=iTime(Symbol(),PERIOD_H4,Period_Shift-1);

GMT_Offset=(Period_Time-iTime(Symbol(),PERIOD_W1,0)-PeriodSeconds(PERIOD_D1))/PeriodSeconds(PERIOD_H1); // result: 1

Si el código anterior no es correcto, por favor, háganmelo saber.

Muchas gracias @honest_knave y @Marco

 

Bueno Max considera esto, si usted está buscando un patrón, y se forma, entonces su gatillo se activará independientemente de la marca de tiempo.

Así que el gatillo puede tener varias marcas de tiempo en diferentes corredores, pero el momento exacto del gatillo sería aproximadamente el mismo en todos los corredores.

No exactamente, pero lo suficientemente cerca.