Errores, fallos, preguntas - página 2934

 
Vitaly Muzichenko:

Así que haz una salida si los datos no se copian

En el siguiente tick se cargará todo y el código funcionará correctamente

No, en mi caso, el código funcionará horriblemente mal, los objetos del indicador se deslizarán de sus posiciones al infierno. Me ocuparé de la carga de la historia...

 
Евгений Баженов:

Hola, estoy probando mi robot, al terminar de probarlo he visto muchos campos con requotes en el Log, ¿qué significan estas pilas de mensajes y qué puedo añadir al código para evitar que aparezcan? Gracias, ¡feliz año nuevo!

Supongo que la sesión de negociación en el símbolo es menor que la sesión de cotización. Entonces las cotizaciones entran en el Probador, pero está prohibido negociar con ellas durante esos periodos.

 
x572intraday:

La idiotez es quehttps://www.mql5.com/ru/docs/series/timeseries_access menciona Sleep() en el artículo sobre la carga del historial en el código, pero la ayuda para Sleep() dice: "La función Sleep() no puede ser llamada desde indicadores personalizados, porque los indicadores se ejecutan en el hilo de la interfaz y no deben ralentizarlo". Resulta que necesito cargar el historial en un indicador.

¿La idiotez de quién?

Cuando se solicitan datos del indicador (no del EA), estos mismos datos se reciben sin demora. Vitaly lo ha dicho correctamente.

Solicite el período de símbolos requerido en OnInit para iniciar la creación del historial requerido

 
Slava:

¿La idiotez de quién?

Cuando se solicitan datos de un indicador (y no de un Asesor Experto), estos datos se devuelven tal cual, sin ningún retraso. Vitaly dijo correctamente.

Hacer una solicitud para el símbolo-período requerido en OnInit para iniciar la creación del historial requerido

1. Si he entendido bien, usted sugiere hacer la solicitud una vez al principio del indicador . Aquíhttps://www.mql5.com/ru/docs/runtime/event_fire el evento Init está rodeado de muchas condiciones: "Este evento también se genera después de un cambio de símbolo y/o periodo del gráfico, después de recompilar el programa en el MetaEditor, después de un cambio de parámetros de entrada de un Asesor Experto o un indicador personalizado. El Asesor Experto también se inicializa después de cambiar la cuenta."Pero el usuario no tiene que generar estos eventos, puede sentarse cómodamente en la única TF actual y observar el indicador, por lo que la reinicialización y recarga del historial más de una vez no se producirá. Sin embargo, la falta de historial no se produce necesariamente al principio del trabajo, el error aparece repentina y repetidamente en momentos aleatorios durante el trabajo (además, durante el trabajo a largo plazo del indicador puede no aparecer en absoluto; a menudo no hay ningún error al principio del trabajo). Entonces, ¿la parte del historial que falta debería descargarse no sólo en OnInit, sino también enOnCalculate, para evitar el error recurrente?

¿O con"iniciar la construcción de la historia correcta" te refieres a que basta con hacer esto una vez enOnInit y luego no será necesario volver a hacerlo? Pero, por un lado, se produce un error incluso cuando se carga todo el historial del instrumento y se sintonizan todos los plazos, porque el indicador es multitiempo y rítmico; por otro lado, en las mismas condiciones puede no producirse un error.

2. ¿Qué significa "falta de parte de la historia"? Cuando se ejecuta el terminal por primera vez después de la instalación, se descarga el historial que falta, literalmente el de la izquierda, anterior en el tiempo. Pero copia el CopyTime(_Symbol,tf,0,1,Arr), es decir, copia la última barra de la derecha, no la del historial. ¿Podría el nuevo bar relacionarse de alguna manera con la historia y su falta?

3. Admito que mis vagas explicaciones pueden no ser suficientes para entender el problema; no quiero que me envíen ahttps://www.mql5.com/ru/forum/133408, por lo que estoy dispuesto a compartir el código con los comentarios con los desarrolladores y otras personas que quieran depurarlo juntos, porque quiero que el indicador esté disponible de forma gratuita a través de CodeBase. Por cierto, si ese es el caso, ¿es aceptable liberar código libre sin estrenar?

Документация по MQL5: Программы MQL5 / События клиентского терминала
Документация по MQL5: Программы MQL5 / События клиентского терминала
  • www.mql5.com
События клиентского терминала - Программы MQL5 - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
x572intraday:

1. Si he entendido bien, sugieres hacer una petición una vez al principio del trabajo del indicador, en OnInit. Aquí https://www.mql5.com/ru/docs/runtime/event_fire El evento Init está rodeado de muchas condiciones de acompañamiento: "Este evento también se genera después de un cambio de símbolo y/o periodo del gráfico, después de recompilar el programa en el MetaEditor, después de un cambio de los parámetros de entrada de un EA o indicador personalizado. El Asesor Experto también se inicializa después de cambiar la cuenta."Pero el usuario no tiene que generar estos eventos, puede sentarse cómodamente en el único TF actual y observar el indicador, por lo que la reinicialización y recarga del historial más de una vez no se producirá. Sin embargo, la falta de historial no se produce necesariamente al principio del trabajo, el error aparece repentina y repetidamente en momentos aleatorios durante el trabajo (además, durante el trabajo a largo plazo del indicador puede no aparecer en absoluto; a menudo no hay ningún error al principio del trabajo). Entonces, ¿la parte del historial que falta debería descargarse no sólo en OnInit, sino también enOnCalculate, para evitar el error recurrente?

¿O con"iniciar la construcción de la historia correcta" te refieres a que basta con hacer esto una vez enOnInit y luego no será necesario volver a hacerlo? Pero, por un lado, se produce un error aunque se cargue todo el historial del símbolo y se completen todos los plazos, ya que el indicador es multitiempo y rylltime; por otro lado, en las mismas condiciones puede no producirse un error.

2. ¿Qué significa la noción de "parte perdida de la historia" en sí misma? Cuando se ejecuta el terminal por primera vez después de la instalación, se descarga el historial que falta, literalmente el de la izquierda, anterior en el tiempo. Pero copia el CopyTime(_Symbol,tf,0,1,Arr), es decir, copia la última barra de la derecha, no la del historial. ¿Podría el nuevo bar relacionarse de alguna manera con la historia y su falta?
En los indicadores, nadie le garantizará la salida de los datos solicitados si no están listos.

Los scripts y los Asesores Expertos tienen una garantía suficiente.

Por lo tanto, en los indicadores se espera al ciclo de disponibilidad de datos.

Para aumentar la probabilidad de obtener los datos correctos, realice solicitudes de datos falsas en el indicador. Esto provocará la carga de datos en segundo plano.
 
Renat Fatkhullin:
En los indicadores, nadie garantiza que los datos solicitados se emitan si no están listos.

Me parece, desde mi bajo campanario, que los datos solicitados están listos, porque es la última barra disponible en este momento. ¿Cómo no va a estar listo? Si aparece en el gráfico, está listo.

 
Renat Fatkhullin:
En los indicadores, nadie le garantizará la entrega de los datos solicitados si no están listos.

En los guiones y en los expertos hay suficiente garantía.

Así que en los indicadores se espera un ciclo tras otro de disponibilidad de datos.

Genial... Incluso en el nuevo año en el puesto. Feliz Año Nuevo. !!!!!!!

 
x572intraday:

Me parece, desde mi bajo campanario, que los datos solicitados están listos, porque es la última barra disponible en este momento. ¿Cómo no va a estar listo? Si aparece en el gráfico, está listo.

Lea atentamente mi respuesta.
 
Renat Fatkhullin:
Lea atentamente mi respuesta.

Tenemos que definir la noción de disponibilidad de datos. Si veo una barra en el terminal, ¿está ya disponible o hay otras opciones? Y sí, Renat, ¿qué pasa con el punto 3 de mi anterior post?

 
x572intraday:

Tenemos que definir la noción de disponibilidad de datos. Si veo una barra en el terminal, ¿está ya disponible o hay otras opciones? Y sí, Renat, ¿qué pasa con el punto 3 de mi anterior post?

Si obtiene una respuesta de función, entonces los datos no están disponibles.

Si tiene pruebas de lo contrario, deberá aportarlas de forma totalmente coherente y técnicamente reproducible.