Indicar una nueva barra - página 3

 

Hola Alain,

gracias por tu comentario y tus mejoras.

Debería volver a mi primera versión en la que "bool NewBar" es una variable global conmutada por una llamada de función en OnTick().

O hacer un pequeño objeto de la misma. Quizás sea la opción más inteligente.


Y - por supuesto - "nunca hacer el mismo cálculo dos veces".

Helmut

 
datetime iTime[];
datetime recent;
datetime projection;
int OnInit()
  {
//---
  int pull=CopyTime(NULL,0,0,1,iTime);
  recent=iTime[0];
  projection=recent+PeriodSeconds();
//---
   return(INIT_SUCCEEDED);
  }

void OnTick()
  {
//---
  if(TimeCurrent()>=projection)
   {
   Print("New Bar "+TimeToString(projection,TIME_DATE|TIME_MINUTES));
   projection=projection+PeriodSeconds();
   }
  }
 

@ Doerk Hilger

El lenguaje es el mismo, pero tienen un pequeño subconjunto de funciones no en común<br / translate="no">

Oh, Dios mío ... definitivamente no!

Como MQ señaló en la descripción del producto

MetaQuotes Language 5 se basa en los conceptos del conocido y popular lenguaje de programaciónС++ . MQL5 es también un lenguaje de programación de alto nivel orientado a objetos.

https://www.metatrader5.com/en/automated-trading/mql5

Aparte de algunas diferencias en el manejo de estructuras, punteros y direcciones, el punto más importante es: MQL5 proporciona todas las características de un lenguaje de programación orientado a objetos que permite un paradigma de programación completamente diferente. Desde este punto de vista MQL5 pertenece claramente a otra clase y también a otra generación de lenguajes que MQL4.

Otra ventaja es la velocidad. No recuerdo dónde leí esto: MQL5 es cien veces más rápido en la ejecución que MQL4.

Y aquí viene la desventaja: Es más rápido en la ejecución PERO la creación de un programa es muy, muy lenta si necesitas familiarizarte con los conceptos de programación a nivel profesional primero.

Lo que nos lleva al problema de MQ. Por un lado necesitan ofrecer un entorno de desarrollo profesional moderno para conseguir o mantener el mercado de los profesionales, por otro lado no pueden permitirse perder todos los clientes privados y semiprofesionales que están interesados en el comercio y no en la ciencia de la programación.




 
MQ hizo mucho para generar confusión en este punto.

Tal vez tengas razón.

Vamos a ver, lo que podemos hacer, para traer más claridad en esta cuestión.

Creo que sería de gran ayuda, si la gente publicara sus problemas de MQL4 en el foro de MQL4, mientras que aquellos, que tienen preguntas de MQL5, deberían publicar en el foro de MQL5.

Suena muy fácil... ¿qué piensas?

Al principio, sería conveniente que el moderador moviera los mensajes erróneos al foro correcto, dejando una indicación "lo siento, foro equivocado - ver ...".

Willbur

 

@LorentzosRoussos

Cada vez es más fácil ;-)

Lo que me preocupa es la cuestión de si TimeCurrent() está sincronizado con las barras en todos los casos.

Voy a hacer unas pruebas de 2h el lunes.

Willbur



 
debe ser: 24 h
 
Willbur:

@LorentzosRoussos

Cada vez es más fácil ;-)

Lo que me preocupa es la cuestión de si TimeCurrent() está sincronizado con las barras en todos los casos.

Voy a hacer unas pruebas de 2h el lunes.

Willbur



Alain puede corregirme en esto, pero puedes encontrar huecos en los casos en los que en el horizonte temporal de una barra no haya ticks, por lo que no habrá barra.
 
Willbur:

@ Doerk Hilger

Oh, Dios mío... ¡definitivamente no!

Como MQ señaló en la descripción del producto

Aparte de algunas diferencias en el manejo de estructuras, punteros y direcciones, el punto más importante es: MQL5 proporciona todas las características de un lenguaje de programa orientado a objetos que permite un paradigma de programación completamente diferente.




Definitivamente sí :) Pero sé lo que quieres decir, siempre pensé que estoy programando MQL5, porque codifico sólo orientado a objetos, pero como he aprendido ahora, su "Enhanced" MQL4 desde construido 600 que es simplemente nada más que MQL5 pero, como se dijo, con pequeñas diferencias en el subconjunto de funciones - y desde este construido MQL4 no es más otro lenguaje. En realidad, Enhanced-MQL4 es MQL5 para MetaTrader4. Eso es lo que quería decir con la parte de la confusión. Para mí, MQL5 siempre fue OOP y MQL4 era sólo top-down-spaghetti. Y no me gusta el espagueti ;)

Editar: ¿De dónde se ha sacado tu afirmación y cuándo se ha publicado esto? Porque en realidad significaría, que la primera suposición era correcta: Es MQL5 .... confusión en su nivel más alto ;)

 
Me encantan los espaguetis.
 
Doerk Hilger:

Definitivamente sí :) Pero sé lo que quieres decir, siempre pensé que estoy programando MQL5, porque codifico sólo orientado a objetos, pero como he aprendido ahora, su "Enhanced" MQL4 desde construido 600 que es simplemente nada más que MQL5 pero, como se dijo, con pequeñas diferencias en el subconjunto de funciones - y desde este construido MQL4 no es más otro idioma. En realidad, Enhanced-MQL4 es MQL5 para MetaTrader4. Eso es lo que quería decir con la parte de la confusión. Para mí, MQL5 siempre fue OOP y MQL4 era sólo top-down-spaghetti. Y no me gusta el espagueti ;)

Editar: ¿De dónde se ha sacado tu afirmación y cuándo se ha publicado esto? Porque en realidad significaría, que la primera suposición era correcta: Es MQL5 .... confusión en su nivel más alto ;)

Enhanced-MQL4 ?

Nunca he oído hablar de eso.

Tal vez deberías leer la documentación de ambas plataformas antes de convencerte de que sabes lo que estás haciendo.