Discusión sobre el artículo "Gestor de evento "Nueva barra"" - página 3

 
laplacianlab:

Buen artículo, ¡gracias por compartirlo! ¡Todo eso fue muy útil!

De todas formas, he cogido tu función isNewBar y me lanza el siguiente mensaje al compilar:"posible pérdida de datos debido a la conversión de tipos".

Así que he cambiado los tipos var de datetime a long de esta forma:

Ahora compila sin ningún aviso y parece que funciona bien. Gracias.


Probablemente sea más claro cambiarlo de esta manera :

   datetime lastbar_time=(datetime)SeriesInfoInteger(Symbol(),Period(),SERIES_LASTBAR_DATE);
 

En la primera forma de solicitar una nueva línea de columnas, no entiendo cómo se puede asignar directamente el número de columnas nuevas a 1. Por favor, aconséjeme;

 //--- Comprueba si hay nuevas líneas de columna.
   if(m_lastbar_time<newbar_time)       
     { 
      m_new_bars=1;               // Número de nuevas líneas de columna
      m_lastbar_time=newbar_time; // Recordar el tiempo del último compás
      return(true);
     }
   //--- //--- Comprueba si hay nuevas líneas de columna.
   if(m_lastbar_time<newbar_time)       
     { 
      m_new_bars=1;               // Número de nuevas líneas de columna
      m_lastbar_time=newbar_time; // Recordar el tiempo del último compás
      return(true);
     }
   //---
 

Según las reglas del modelado de objetos, es un error llamarlo CIsNuevoBar.

Veamos, si coche es una clase puedo crear/tener un objeto coche. Sin embargo, si mi clase es "ÉUmCarroNovo", podemos tener o poseer un "ÉUmCarroNovo".

El autor debería haberlo llamado "ComprobadorDeCochesNuevos". Alguien podría inventar un Comprobador de coches nuevos y crearlo (nuestra clase sería ComprobadorDeCochesNuevos.

 
No usas Tiempo, usas Barras
 
Hay tantas variaciones de código en el artículo, pero al final todavía no está claro, qué función es más correcto utilizar en MT4 para aumentar al menos un poco la correspondencia de lo que el probador dibuja con el comercio. ¡Dame una pista!
 
Pavel Komarovsky:
Hay tantas variaciones de código en el artículo, pero al final todavía no está claro, qué función es más correcto utilizar en MT4 para aumentar al menos un poco la correspondencia de lo que el probador dibuja con el comercio. ¡Dame una pista!
datetime counted_bar = 0;

int OnInit()
{
   counted_bar = 0; // si desea que se analice la última barra al reiniciar
   ...

void OnTick()
{
   // Si hay una nueva barra
   if ( iTime( _Symbol, _Period, 0 ) > counted_bar )
   {
      counted_bar = iTime( _Symbol, _Period, 0 );

      // Analizar los indicadores
      ...
   }
 
Andrey Khatimlianskii:

Andrey, gracias. Dime por qué se utiliza iTime ahora, antes recuerdo que en todas las funciones y ejemplos, la mayoría de ellos se basaban en iBars.

¿TrabajaiTime con más precisión?

 
Pavel Komarovsky:

Andrey, gracias. Dime por qué se utiliza iTime ahora, antes recuerdo que en todas las funciones y ejemplos, la mayoría de ellos se basaban en iBars.

¿TrabajaiTime con más precisión?

Nunca he utilizado iBars para este propósito, no lo sé.
 
Me pregunto por qué este ejemplo no puede obtener los datos de las series temporales. Copia... siempre -1 y Bars() siempre 0. Es decir, no hay acceso a los datos de la clase
 

Este artículo es tan bueno que incluso se utiliza en las clases de programación MQL5, incluyendo comentarios y colaboraciones y corrección de errores. Enhorabuena a todos.