[SERVICE DESK] ¡Error al obtener la hora de la TF superior en el temporizador! - página 13

 
Alexey Kozitsyn:

Lee el punto 1.

Para obtener la hora de apertura de la barra el temporizador no sirve para nada, y cualquier otro dato, si no es de otro símbolo diferente del gráfico. Si no está relacionado con un símbolo diferente del gráfico actual, sino con otro TF del símbolo actual, es interesante. No se actualizará hasta que lleguen los nuevos datos. Pero todo su trabajo se basa en el símbolo actual. Así que no te molestes con el temporizador. El resto, como tal, se masca varias veces. El tema se desarrolló en un círculo.

 
Konstantin Nikitin:

Para obtener la hora de apertura de la barra el temporizador no sirve para nada, y cualquier otro dato, si no es de otro símbolo diferente del gráfico. Si no está relacionado con un símbolo diferente del gráfico actual, sino con otro TF del símbolo actual, es interesante comprobarlo cada milisegundo. No se actualizará hasta que lleguen los nuevos datos. Pero todo su trabajo se basa en el símbolo actual. Así que no te molestes con el temporizador. El resto, como tal, se masca varias veces. El tema ha entrado en un círculo.

Amigo, es obvio que no entiendes lo que está pasando aquí. Ya no se trata del temporizador, olvídalo. El temporizador se refiere a mi verdadero problema. El problema ahora es el error en los datos que se reciben. El punto 1, que te aconsejé leer, dice que en presencia de IsConnected(), el indicador se conectará al servidor sólo en el segundo evento OnCalculate(). Así que su consejo anterior es inútil.

 
Alexey Kozitsyn:

Amigo, está claro que no entiendes lo que está pasando aquí. Ya no se trata del temporizador, olvídalo. El temporizador se refiere a mi verdadero problema. El problema ahora es el error en los datos que se reciben. El punto 1, que te aconsejé leer, dice que en presencia de IsConnected(), el indicador se conectará al servidor sólo en el segundo evento OnCalculate(). Así que su consejo anterior es inútil.

¿Lo has comprobado experimentalmente? Te aconsejo que lo compruebes. Así que reinicia el terminal con la prueba.

int OnCalculate(
   const int rates_total,
   const int prev_calculated,
   const datetime &time[],
   const double &open[],
   const double &high[],
   const double &low[],
   const double &close[],
   const long &tick_volume[],
   const long &volume[],
   const int &spread[]
)
{
   static int num = 1;
   
     
     if( IsConnected() )
          if( num == 1 )
               Comment( "Test: ", num );
     num++;
     return(rates_total);
}

¿Y qué ves?

En la primera pasada, si hay conexión con el servidor, todo funciona.

 
Konstantin Nikitin:

¿Lo has probado empíricamente? Te sugiero que lo hagas. Así que reinicia el terminal con la prueba.

¿Y qué ves?

En la primera pasada, si hay conexión con el servidor, todo funciona.

¿Quién, en su sano juicio, hace pruebas cuando el mercado no funciona?

Y sí, lo he comprobado empíricamente, que es lo que he escrito.

 
Alexey Kozitsyn:

¿Quién, en su sano juicio, hace pruebas cuando el mercado no funciona?

Y sí, lo probé experimentalmente, que es lo que escribí.

Esto no tiene nada que ver con que el mercado funcione o no. El indicador se ha ejecutado y su análisis ha comenzado. El resultado de la primera pasada está en el comentario. Usted dijo

Alexey Kozitsyn:

Deberías leerlo - se trata de que si IsConnected() está presente, el indicador se conectará al servidor sólo en el segundo evento OnCalculate(). Así que su consejo anterior es inútil.

 
Konstantin Nikitin:

¿Qué tiene que ver con que el mercado funcione o no? El indicador ha comenzado, el análisis está en marcha. El resultado de la primera pasada está en el comentario. Tú lo has dicho.

Sí. Muy bien. Ahora apague el terminal con este indicador instalado en el gráfico y ejecútelo de nuevo.

 
Alexey Kozitsyn:

Vaya. Muy bien, entonces. Ahora apaga el terminal con este indicador tuyo instalado en el gráfico y vuelve a ponerlo en marcha.

Así que este gráfico

se hizo unos minutos antes de que se publicara por primera vez. Es decir, hoy. Y fue después de reiniciar el terminal.
La conexión con el servidor se establece también en el fin de semana. La misma balanza para comprobar, puede obtener los últimos datos, si se desconectó antes de cerrar la sesión.

 
Konstantin Nikitin:

Así que este gráfico

y se hizo apenas unos minutos antes de que se publicara por primera vez. Es decir, hoy. Y fue después de reiniciar el terminal.
La conexión con el servidor se establece también en el fin de semana. La misma balanza para comprobar, puede obtener los últimos datos, si se desconectó antes de cerrar la sesión.

#property strict
#property indicator_chart_window
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   if( !IsConnected() )
     {
        Print( __FUNCTION__,": IsConnected = false" );
        return( 0 );
     }
   //---
   Print( "Connected!" );
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

Estoy obteniendo un resultado:

2018.10.06 18:24:32.261 test_isConnected GBPUSD,M1: initialized
2018.10.06 18:24:32.313 test_isConnected GBPUSD,M1: OnCalculate: IsConnected = false
2018.10.06 18:24:33.080 test_isConnected GBPUSD,M1: Connected!
Y su código no muestra ningún comentario al cargar.
 
Alexey Kozitsyn:

Obtengo un resultado:

Y su código no muestra ningún comentario cuando se carga.

Bueno, es posible. Mi servidor a veces se cae por mantenimiento los domingos, pero no por mucho tiempo. Puede ser una de las razones de la falta de conexión.
Puede ser otra razón por la que el terminal no tiene tiempo para conectarse al servidor antes del inicio del indicador.
Mi terminal se conecta inmediatamente.

 
Konstantin Nikitin:

Es muy posible que así sea. Es posible que mi servidor no funcione por mantenimiento el domingo, pero no permanecerá inactivo durante mucho tiempo. Puede ser una de las razones de la falta de conexión.
Puede ser otra razón por la que el terminal no tiene tiempo para conectarse al servidor antes del inicio del indicador.
Mi terminal se conecta inmediatamente.

Entonces hazlo simple: carga mi indicador con tus ediciones en el gráfico ahora. Apaga el terminal. Vuelva a encenderlo el lunes y vea el resultado. Es inútil seguir discutiendo.