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

 
Alexey Kozitsyn:

¿A qué hora se cierra? Necesito una hora de apertura...

Tienes la última comprobación de la hora de apertura del bar en todas partes, eso es lo que consigues. Inmediatamente después de abrir el terminal, la barra aún no se ha formado en OnInit.

 
Konstantin Nikitin:

Tienes la última comprobación de la hora de apertura del bar en todas partes, eso es lo que consigues. Inmediatamente después de abrir el terminal, la barra aún no se ha formado en OnInit.

...Sin comentarios, he terminado de hablar contigo.

 
Alexey Kozitsyn:

¡Pregunta! Por qué da datos previos cuando ya se ha establecido la conexión con el servidor, había una consulta previa de datos en OnInit(), una comprobación de carga de datos en cada una de las funciones CheckCurren...(). Cuántas malditas comprobaciones tenemos que hacer para que funcione bien...

Hay muchos símbolos y periodos, si el terminal ha estado desconectado durante mucho tiempo, necesita cargar muchos datos.
Para no esperar esta carga que depende de la velocidad de internet y del servidor del broker, el terminal te da los datos anteriores de una vez.
Los que ya están disponibles.

Así que no es una "solución de muleta", es una comprobación necesaria para cargar la última vela.

ps. ¿cómo se comprueba además la aparición de una nueva barra?

 
Taras Slobodyanik:

Hay muchos símbolos y periodos, si el terminal ha estado desconectado durante mucho tiempo, hay que descargar muchos datos.
Para evitar la espera de esta descarga, que depende de la velocidad de Internet y del servidor del corredor, el terminal da los datos anteriores de una vez.
Los que ya están disponibles.

Por lo tanto, no es una "solución de muleta", sino una comprobación necesaria para cargar la última vela.

¿Sientes el problema de la lógica? Si el historial no está cargado todavía, y me deja salir "algo" y esperar hasta que se actualicen los datos. Y no importa si los datos son correctos o no...

Además, aunque el terminal esté desconectado durante 5-10 minutos, es la misma tontería. Incluso si sólo hay 3 caracteres en la ventana de datos - la misma tontería. Se han seguido todas las comprobaciones: el mismo sinsentido.

Entiendes que los consejos del desarrollador sobre la carga correcta NO FUNCIONAN. ¿No significa nada para ti?

 
La actualización 1126 ya ha llegado a MQDemo... Comprobaremos más sobre esta versión el lunes.
 
Alexey Kozitsyn:

¿Sientes un problema de lógica? Si el historial no se ha cargado todavía, y me deja dar "algo" y esperar hasta que se actualicen los datos. Y no importa si los datos son correctos o no...

Esta lógica sólo se da en el primer símbolo de apertura de la carrera.
El terminal no sabe si hay más velas, da las que tiene.

Entonces aparece la última vela.

 
Taras Slobodyanik:

Esta lógica sólo funciona la primera vez que se ejecuta-abre un símbolo.
El terminal no sabe si habrá más velas, te da las que tiene.

Entonces aparece la última vela.

He actualizado mi post.

Dígame, ¿quiere pasar horas de trabajo cada vez para averiguar esos matices, o quiere leer la documentación una vez y entenderlo todo? ¿Quieres sufrir con las "precargas" o simplemente obtener un error cuando los datos aún no se han actualizado?

 
Taras Slobodyanik:

Por cierto, ¿qué versión del terminal tienes?

 
Taras Slobodyanik:

ps. ¿cómo se verifica además la aparición de una nueva barra?

//+------------------------------------------------------------------+
//| Проверяем образование нового часа                                |
//+------------------------------------------------------------------+
bool CheckNewHour()     
        {
         //--- Сбрасываем код последней ошибки
         ResetLastError();
         //--- Получаем время открытия текущего часа
         const datetime hOpenTime = iTime( _Symbol, PERIOD_H1, 0 );
         //--- Проверяем корректность полученного времени
         if( hOpenTime == 0 || GetLastError() != 0 )            // Если возникла ошибка или время не получено
                 return( false );                                                                               // Возвращаем ложь
         //--- Сравниваем полученное время с сохраненным
         if( hOpenTime == _hourOpenTime )                                       // Если время совпадает
                 return( false );                                                                               // Возвращаем ложь
         //--- Запоминаем время нового часа
         _hourOpenTime = hOpenTime;
         //--- Возвращаем истину
         return( true );
        }
 

No veo ningún problema, hay una nueva vela - recalcular la última vela del indicador / asesor.
Hay más de una vela nueva - haga un recálculo completo del indicador/asesor.
Esto es lo mismo: aparece una nueva vela.

Otra cosa - los períodos requeridos deben ser constantemente "tirado" para actualizarlos.
Si no hay nadie trabajando en el símbolo-período (las comillas no se comprueban, el indicador no se ejecuta), entonces "duerme" porque se considera innecesario.

Razón de la queja: