Servicedesk. Quejas, sugerencias.

 

Buenas tardes. Hoy he vuelto a encontrarme con el hecho de que el Service Desk no siempre está dispuesto no sólo a escuchar el problema, sino que ni siquiera quiere escucharlo. Comencemos.

Hace unos días escribí otra petición a servicedesk. La esencia de la solicitud es la siguiente (para MT4):

Индикатор находится на ТФ, старше М1. Пытаюсь получить данные через функцию SeriesInfoInteger() с ТФ М1. Функция возвращает нули для свойств SERIES_BARS_COUNT, SERIES_FIRSTDATE, SERIES_SERVER_FIRSTDATE после того, как на М1 образовался новый бар. До того, как образовался новый бар - данные возвращаются корректные. После - нули. 

El segundo problema, de tipo similar. El indicador está en TF MN1. Estoy intentando recibir datos a través de la función SeriesInfoInteger() del TF M5. Durante un tiempo la función devuelve valores correctos, y luego deja de hacerlo y empieza a devolver ceros, aunque ¡NO SE HA ABIERTO NINGUNA BARRA NUEVA EN M5!

En ambos casos, después de volver a la TF de la que estoy tratando de obtener datos y volver a cambiar a una TF superior, los datos son correctos durante un tiempo, pero luego - ceros.

El indicador está en la aplicación.

Necesito las propiedades anteriores de la función SeriesInfoInteger() para comprobar/cargar el historial disponible para el TF que no sea el del indicador.

A ningún programador le gustará la ambigüedad del siguiente tipo: al principio hay datos, luego no hay datos y no se pueden obtener. Además, no le gustará al usuario o usuarios para los que se ha escrito el programa. Puedes ver en el mensaje que he proporcionado el programa para probar este error. Además, se ha proporcionado incluso un registro:

2015.10.29 14:25:52.663 test_271015_series_easy EURUSD,M5: OnCalculate 1: bars count = 5001, firstDate = 2015.10.26 00:00, serv_firstdate = 2015.08.21 10:59
2015.10.29 14:25:53.113 test_271015_series_easy EURUSD,M5: OnCalculate 1: bars count = 5001, firstDate = 2015.10.26 00:00, serv_firstdate = 2015.08.21 10:59
2015.10.29 14:25:53.419 test_271015_series_easy EURUSD,M5: OnCalculate 1: bars count = 5001, firstDate = 2015.10.26 00:00, serv_firstdate = 2015.08.21 10:59
2015.10.29 14:25:53.930 test_271015_series_easy EURUSD,M5: OnCalculate 1: bars count = 5001, firstDate = 2015.10.26 00:00, serv_firstdate = 2015.08.21 10:59
2015.10.29 14:25:54.487 test_271015_series_easy EURUSD,M5: OnCalculate 1: bars count = 5001, firstDate = 2015.10.26 00:00, serv_firstdate = 2015.08.21 10:59
2015.10.29 14:25:54.795 test_271015_series_easy EURUSD,M5: OnCalculate 1: bars count = 5001, firstDate = 2015.10.26 00:00, serv_firstdate = 2015.08.21 10:59
2015.10.29 14:25:55.412 test_271015_series_easy EURUSD,M5: OnCalculate 1: bars count = 0, firstDate = 1970.01.01 00:00, serv_firstdate = 1970.01.01 00:00
2015.10.29 14:25:55.943 test_271015_series_easy EURUSD,M5: OnCalculate 1: bars count = 0, firstDate = 1970.01.01 00:00, serv_firstdate = 1970.01.01 00:00
2015.10.29 14:25:56.678 test_271015_series_easy EURUSD,M5: OnCalculate 1: bars count = 0, firstDate = 1970.01.01 00:00, serv_firstdate = 1970.01.01 00:00
2015.10.29 14:25:57.169 test_271015_series_easy EURUSD,M5: OnCalculate 1: bars count = 0, firstDate = 1970.01.01 00:00, serv_firstdate = 1970.01.01 00:00
2015.10.29 14:25:57.938 test_271015_series_easy EURUSD,M5: OnCalculate 1: bars count = 0, firstDate = 1970.01.01 00:00, serv_firstdate = 1970.01.01 00:00

Los datos simplemente se descartan y sólo pueden recuperarse más cambiando el TF por el que se solicita.

Y esta es la respuesta que recibo del SR.

Equipo de apoyo2015.10.29 10:41
Para obtener los datos reales del símbolo-período de otra persona es necesario acceder a estos datos más de una vez cada 10 segundos. O acceder a estos datos desde un Asesor Experto, por ejemplo, utilizando iTime (entonces se puede acceder a los datos al menos una vez cada 3 minutos)
Equipo de apoyo2015.10.29 10:42

Estado:AbiertoCerrado

Del mensaje se desprende que a Service Desk (o a algunos de sus empleados) no les importa en absoluto lo que los usuarios escriban sobre los errores. Se me pide que acceda a los datos con más frecuencia que una vez cada 10 segundos? El registro muestra que los datos se solicitan con mucha más frecuencia, en cada tic. Estoy seguro de que este registro ni siquiera se ha leído. Pero me han sugerido que acceda a ellos "más a menudo" o que acceda a los datos desde el EA. Genialidad. Ah, y la solicitud se cerró inmediatamente, como si tuviera ayuda.

Siguiendo adelante. Esta es mi respuesta:

Alexey Kozitsyn2015.10.29 10:57
¡Mira los registros! El llamamiento se hace en cada tictac. Las garrapatas son mucho más frecuentes. ¡Del mismo modo en el temporizador con una frecuencia de 10 veces por segundo!
Alexey Kozitsyn2015.10.29 10:57
Estado:CerradoAbierto

Alexey Kozitsyn2015.10.29 10:59
En cuanto a los periodos, ¡sólo son periodos para la prueba! Si eso es lo que quieres decir. De nuevo, ¡los datos se solicitan en cada tic!
Alexey Kozitsyn2015.10.29 11:00
Puede que vengan al principio y luego dejen de hacerlo. Mira de cerca los registros.
Alexey Kozitsyn2015.10.29 12:06

¿Ha identificado el error?

Y la respuesta del Service Desk:

Equipo de apoyo2015.10.29 12:09

Abra el gráfico deseado, entonces sus datos estarán siempre en la memoria hasta que lo cierre

Desde la versión 900 hemos implementado una liberación de memoria agresiva. Si hay un problema de memoria, se libera todo lo que se puede liberar.

Necesito estas propiedades para seleccionar la TF más pequeña que tenga suficientes datos. A mí, en cambio, se me ofrece abrir todos los gráficos. Y no importa cuántos instrumentos analice al mismo tiempo, abra todos los gráficos posibles y será feliz.

Sobre la liberación agresiva y los problemas de memoria. El terminal no tiene problemas de memoria. No hay errores en los registros de la terminal. De esto podemos juzgar que acabo de ser informado sobre una situación en la que la memoria podría ser liberada. Pero obviamente no es mi caso. Otro hecho es que el Service Desk no quiere investigar el problema y sólo quiere deshacerse de él.

Siguiente.

Alexey Kozitsyn2015.10.29 12:27

¿No crees que es mejor perfeccionar el lanzamiento de la memoria agresiva en lugar de dar cuerpo a los gráficos? ¿Y de qué problemas de memoria hablas? Y sí, por favor, libera, pero haz que sea posible recuperarlos más allá sin muletas.

¿Has probado a ejecutar el indicador desde la aplicación? ¿Comprendes que los datos provienen de la TF de otra persona, vienen, vienen, y pum... dejan de hacerlo? ¿Es un comportamiento normal?

Aquí hay un fragmento de la documentación:

Para los Asesores Expertos y los indicadores personalizados, es mejor utilizar el modelo de procesamiento basado en eventos. Si los eventos onTick() o OnCalculate() no obtienen todos los datos necesarios, se debe salir del manejador de eventos, esperando que los datos estén disponibles la próxima vez que se llame al manejador.

El indicador que he citado utiliza exactamente este modelo. Si no se reciben datos, se espera que lleguen en el siguiente tick. Pero los datos ya no vienen. No, en absoluto. Se trata de una contradicción de documentación.

En mql5 todo funciona como debe ser, ¿por qué no se puede organizar en mql4 de la misma manera?

Y la respuesta:

Equipo de apoyo2015.10.29 12: 45

No. No lo hace.

En cuanto a la documentación - aquí hay una conclusión directa: si usted necesita constantemente los datos de algún símbolo-período, a continuación, garantizar la presencia constante de estos datos en OnInit. Por ejemplo, con la simple consulta iTime(símbolo_necesario,período_necesario). Y mantén este iTime en cada garrapata.

Usted mismo está cargando su terminal con la memoria. Por lo tanto, reduzca el número de barras del gráfico hasta el límite necesario. Para hacer una copia de seguridad de los datos críticos, abra el gráfico con el símbolo-período adecuado.

Si no estás satisfecho con el estado actual de las cosas, discutámoslo en el foro. Es inútil discutirlo aquí.

La MT5 tiene un modelo completamente diferente de uso de datos históricos

Equipo de apoyo2015.10.29 12:46
Estado:Cerrado

En orden:

No. No parece serlo.

Simplemente grosero. Sin explicaciones, sin comentarios.

Con respecto a la documentación - la conclusión aquí es directa: si usted necesita algunos datos de período de símbolo todo el tiempo, entonces asegúrese de que estos datos están siempre presentes en OnInit. Por ejemplo, con la simple consulta iTime(símbolo_necesario,período_necesario). Y mantén iTime en cada tic.

Primera muleta de sentido común. ¿¡Se trata de una inferencia directa!? ¿Dónde está esta conclusión? ¿De verdad crees que todos los que escriben en mql han sacado esta conclusión por sí mismos? No especule por la gente. Se sacan conclusiones de lo que se escribe. Para comparar. En la documentación de mql5, en la sección "Organización del acceso a los datos" hay un ejemplo de cómo debe organizarse el acceso a los datos. Todo funciona perfectamente. Aquí debe adivinar que si la función SeriesInfoInteger() devuelve 0, debe llamar a la función iTime() para el símbolo/periodo necesario. ¿Por qué no se escribe sobre ello? ¿Por qué no podemos simplemente mejorar la función SeriesInfoInteger() sin estas muletas? ¿O al menos aclararlo en la documentación? Estimados desarrolladores, si quieren tener menos preguntas, escriban en la documentación una vez en detalle cómo y qué. La gente sabe leer.

Usted mismo está cargando su terminal con la memoria.

Me pregunto qué querías decirme. El terminal puede consumir memoria, pero sobrecargar el terminal de memoria es algo nuevo para mí.

Por lo tanto, reduzca el número de barras del gráfico hasta el límite necesario. Para hacer una copia de seguridad de los datos críticos, abra el gráfico con el símbolo-período adecuado.

¿Cuántas barras crees que estaba probando el indicador en la aplicación? Parece que no te importa, porque ni siquiera has preguntado. Es un número de 5000. Es el mínimo posible. Y de nuevo la sugerencia de abrir el gráfico. Lo tengo, gracias. Añádalo a la documentación (si es necesario).

Y final.

Si estás descontento con el estado actual de las cosas, llevemos esta discusión al foro. Es inútil discutirlo aquí.

MT5 tiene un modelo completamente diferente de uso de datos históricos

Sí, no estoy contento con la situación actual. Los usuarios encuentran errores (sigo considerando que el comportamiento de la función SeriesInfoInteger() es un error) en su programa. Lo hacen gratis. Y no es que no se quiera arreglar, incluso no se quiere escuchar y mirar los datos que dan los usuarios. Y no es la primera vez, que se aceptan los hechos con ganas, y no te importan los errores. Espero que los desarrolladores escuchen y haya cambios positivos en el futuro. Su actitud actual despopularizará la actitud hacia usted y su producto.

Gracias a todos por leer.

Si alguien quiere probar esta función, el indicador está en el apéndice.

Archivos adjuntos:
 

Se dijo "llevemos esta discusión al foro".

¿Qué vas a discutir en el foro, mi grosería o el problema de la limpieza de la memoria?

 
Slawa:

Se le dijo "llevemos esta discusión al foro".

¿Qué vas a discutir en el foro, mi grosería o el problema de la limpieza de la memoria?

Así que puse la discusión en el foro. Hagámoslo compatible.

Sobre el tema de la descortesía. No siempre es agradable hablar con Searcydesk. Los argumentos anteriores.

Sobre la función. He dado pruebas de que la función no funciona correctamente. Me ofreciste "muletas". Si no puede trabajar correctamente más que sin muletas, añada una descripción de estas muletas a la documentación para que no surjan dudas en el futuro.

 
Me gustaría pedir la opinión de los programadores. ¿Está satisfecho con el comportamiento de la función SeriesInfoInteger()? ¿Está satisfecho con la documentación lingüística?
 
Alexey Kozitsyn:
Pido a los programadores que compartan sus opiniones. ¿Está satisfecho con el comportamiento de la función SeriesInfoInteger()? ¿Está satisfecho con la documentación lingüística?

Hace tiempo que planteé el problema de los datos de los indicadores.

https://www.mql5.com/ru/forum/42180

Me han asegurado que el problema se ha solucionado.

Incluso escribieron sobre ello en el resumen de la publicación 1200

Terminal: Se ha corregido un error que provocaba la descarga de datos históricos como no utilizados, a pesar de los accesos regulares a los datos desde los programas MQL5.

Entonces, ¿no se ha resuelto el problema?

ФОРТС Прошу помощи
ФОРТС Прошу помощи
  • www.mql5.com
Прошу откомпилировать этот код и "бросить" индикатор на символ MIX-6. - - Категория: автоматические торговые системы
 
Михаил:

Hace tiempo que planteé el problema de los datos de los indicadores.

https://www.mql5.com/ru/forum/42180

Me han asegurado que el problema se ha solucionado.

Incluso escribieron sobre ello en el resumen de la publicación 1200

Terminal: Se ha corregido un error que provocaba la descarga de datos históricos como no utilizados, a pesar de los accesos regulares a los datos desde los programas MQL5.

¿Así que el problema no se ha resuelto?

Me refería a MT4 en este caso. Pero para MT5 el tema también es relevante.

 
Alexey Kozitsyn:

En este caso me refería a MT4. Pero para MT5 la pregunta también es relevante.

Todavía no he actualizado a 1200, no puedo comprobar si se ha solucionado o no.

Pero había un error de este tipo en MT5

 
Михаил:

Todavía no he actualizado a 1200, no puedo comprobar si se ha solucionado.

Pero había un error de este tipo en MT5

Ahora está cargando 1204. Ya veremos.
 
Alexey Kozitsyn:
Ahora está descargando 1204. Veamos.
Comprobado en 1200 ( bx demo ), parece que se ha arreglado :)
 
Si no se utiliza la funciónSeriesInfoInteger de MT5 y en su lugar se utilizan las antiguas funciones de MT4, iBars, iTime, MarketInfo, etc., ¿el problema persiste?
 
En cuatro, lo arreglaremos: exagerando la descarga agresiva de los gráficos no utilizados.