Errores, fallos, preguntas - página 454

 
Interesting:
Me parece que tendrías que traducir cada elemento de la matriz individualmente.

Me gustaría recibir ayuda, no despotricar. Permítanme aclarar, traté de traducir usando CharArrayToString con CP_UTF16, pero parece que no es compatible. ¿Quizás necesite otra página de códigos?

Pregunta a los desarrolladores - está escrito en la ayuda, que aquellas páginas que no están en las constantes estándar, pueden ser añadidas manualmente. ¿Son todos compatibles o no?

 
TheXpert:

Me gustaría recibir ayuda, no despotricar. A ver si lo entiendo, he intentado usar CharArrayToString de CP_UTF16, pero tengo la sensación de que no está soportado. ¿Quizás necesite otra página de códigos?

Pregunta a los desarrolladores -- en la ayuda está escrito, que aquellas páginas que no están en las constantes estándar, pueden ser añadidas manualmente. ¿Son todos compatibles o no?

He entendido mal la pregunta. Si he entendido bien la documentación para CP_UTF16 hay que especificar el código numérico requerido (queda por ver cuál).

Bueno, esta es probablemente una pregunta para los desarrolladores.

 
Además de la pregunta - https://www.mql5.com/ru/forum/1111/page455#comment_80246 - a la que todavía me gustaría obtener una respuesta, voy a especificar la situación. Tengo un indicador multidivisa, lo estoy probando en MetaQuotes y Alpari. Lo uso para Alpari pero con MetaQuotes a menudo devuelve BarsCalculated para diferentes símbolos y en particular el error 4806 o simplemente 0 barras contadas. Por favor, indíqueme dónde puedo leer más sobre cuáles pueden ser las causas del 4806 y cómo solucionarlas. Estoy utilizando el código de metaquotes para la sincronización de datos - función CheckLoadHistory de la página https://www.mql5.com/ru/docs/series/timeseries_access. Los errores de BarsCalculated se producen después de que esta función se haya puesto a cero (es decir, los datos para el cálculo deberían parecer estar en su sitio). ¿Se puede confiar en ella o se necesita algo más? Para estar seguro, me gustaría aclarar que el indicador utiliza barras estándar para el cálculo y es su disponibilidad la que se comprueba llamando a BarsCalculated.
 
marketeer:
Además de la pregunta - https://www.mql5.com/ru/forum/1111/page455#comment_80246 - a la que todavía me gustaría obtener una respuesta, voy a especificar la situación. Tengo un indicador multidivisa, lo estoy probando en MetaQuotes y Alpari. Lo uso para Alpari pero con MetaQuotes a menudo devuelve BarsCalculated para diferentes símbolos y en particular el error 4806 o simplemente 0 barras contadas. Por favor, indíqueme dónde puedo leer más sobre cuáles pueden ser las causas del 4806 y cómo solucionarlo. Estoy utilizando el código de metaquotes para la sincronización de datos - función CheckLoadHistory de la página https://www.mql5.com/ru/docs/series/timeseries_access. Los errores de BarsCalculated se producen después de que esta función se haya puesto a cero (es decir, los datos para el cálculo deberían parecer estar en su sitio). ¿Se puede confiar en ella o se necesita algo más? Para estar seguro, me gustaría aclarar que el indicador utiliza las máscaras estándar para el cálculo y es su disponibilidad la que se comprueba llamando a BarsCalculated.

Si la respuesta no es de BarsCalculated, los datos se sincronizan después de un intervalo de una fracción de segundo. Atrapado en el momento de la sincronización, BarsCalculate=0.
 
Swan:
Si la actualización no es de Sami, los datos se sincronizan después de una cantidad de tiempo ridícula. Atrapado en la sincronización, BarsCalculate=0.

Gracias por la información, aunque puedo decir a "sí mismos" que no estoy muy contento con tal comportamiento - impone una incertidumbre significativa en la operatividad del software. Por ejemplo, ya hace más de una hora colgué un indicador, en el que indicaba un par de nuevos tickers - en la revisión del mercado están - si la referencia a las funciones mencionadas debería haber iniciado la descarga y el conteo, entonces todo debería haber terminado hace tiempo, pero no es así. Al menos sería deseable ver en el diario del sistema cada estornudo del terminal sobre la carga y otras acciones "subterráneas", de lo contrario no está claro por qué razón se "apagó" - la última entrada en el "Experto" con el error 4806, pero en el sistema - dice que el terminal está fuera de sincronización. Teniendo en cuenta que no hay ticks en el fin de semana, he cambiado la configuración varias veces, pero todavía no hay datos.

Por ejemplo, tomé RTS-9.11, pero la función de actualización de MetaQuotes, mencionada anteriormente, devuelve regularmente Load failed.

 
Otra pregunta. En cuarta se podría escribir array multidimensional func(int array[][]) como argumento de la función. En la quinta, el compilador genera un error de valor de índice no válido - requiere que se especifique la dimensionalidad. Escribí func(int &array[][3]) - no hay error, pero no es una solución. ¿Cómo se escriben entonces las funciones? Por definición, su sentido es asignar un fragmento de código abstracto aplicable a diferentes datos, a diferentes matrices.
 
marketeer:
Otra pregunta. En Quaternary podrías escribir un array multidimensional func(int array[][]) como argumento de la función. En la quinta, el compilador genera un error de valor de índice no válido: requiere que se especifique la dimensión. Escribí func(int &array[][3]) - no hay error, pero no es una solución. ¿Cómo se escriben entonces las funciones? Su sentido es, por definición, asignar un fragmento de código abstracto aplicable a diferentes datos, a diferentes arrays.

Esto es lo que hago:

class cArray2
  {
   double            _Data[];
   int               _ColumnsCount;
   int               _RowsCount;
   ...
   ...
  }

Paso objetos de esta clase como argumentos.

En otras palabras, utilizo un array unidimensional como almacén de datos de cualquier dimensión, mientras recalculo yo mismo los índices "multidimensionales" en "unidimensionales" (y viceversa).

Funciona con una velocidad bastante aceptable.

Puedes entender las metacitas. Si no se introduce la restricción de "sólo una dimensión es indefinida", entonces no se puede generar código de alta velocidad para acceder a un elemento del array en la etapa de compilación.

 
marketeer:

Gracias por la información, aunque puedo decir a "sí mismos" que no estoy muy contento con tal comportamiento - impone una incertidumbre significativa en la operatividad del software. Por ejemplo, ya hace más de una hora colgué un indicador, en el que indicaba un par de nuevos tickers - en la revisión del mercado están - si la referencia a las funciones mencionadas debería haber iniciado la descarga y el conteo, entonces todo debería haber terminado hace tiempo, pero no es así. Al menos sería deseable ver en el diario del sistema cada estornudo del terminal sobre la carga y otras acciones "subterráneas", de lo contrario no está claro por qué razón se "apagó" - la última entrada en el "Experto" con el error 4806, pero en el sistema - dice que el terminal está fuera de sincronización. Teniendo en cuenta que no hay ticks en el fin de semana, he cambiado la configuración varias veces, pero todavía no hay datos.

Por ejemplo, tomé RTS-9.11, pero la función de actualización de MetaQuotes, mencionada en el enlace, devuelve regularmente Load failed.

Referencia:

El acceso a los datos de los indicadores y de las series temporales se realiza independientemente de que los datos solicitados estén listos (el llamado acceso asíncrono ). Esto es crítico para el cálculo de indicadores personalizados, por lo que en ausencia de los datos solicitados las funciones comoCopy...() devuelven inmediatamente un error.

No hay ticks en el fin de semana, se inicia el indicador y se devuelveun error...

imho, sólo hay una solución, es decir, para ejecutar Asesor Experto adicional, que carga la historia solicitada ...

Es decir, si los datos están disponibles para el Asesor Experto, estarán disponibles para el indicador. No lo he comprobado, la solución parece torcida.


Repetiré mi pregunta:

Ayuda:

La función Sleep() no puede ser llamada desde losindicadores personalizados porque los indicadores se ejecutan en el hilo de la interfaz y no deben ralentizarlo.

No puedes absolutamente, o si realmente quieres, puedes, pero con cuidado... :)


Hay un problema con el acceso a los datos de otro símbolo desde el indicador.

si no hay garrapatas)
Es decir, no hay manera de que el indicador recupere los datos del fin de semana, ni su TF, ni su símbolo...
 
Swan:
es decir, no hay manera de que el indicador pueda obtener sus datos en el fin de semana, ni su TF, ni su símbolo...
En mi opinión, todo esto son fallos. Los ticks son ticks, pero nada impide (al terminal) cargar datos y calcular índices en ausencia de ticks. Lo más interesante es que el mismo código funciona de forma diferente en distintos servidores de demostración. Por ejemplo, en Alpari tanto el oro como la plata suben, y el índice se recalcula. Así que el problema parece ser más amplio.
 
MetaDriver:

Los metacvots son comprensibles. A menos que se imponga la restricción de "sólo una dimensión es indefinida", entonces no se puede generar código de alta velocidad para acceder a un elemento del array en tiempo de compilación.

Pues no lo entiendo ;-). Hace mucho tiempo sugerí, que la quinta tenía que hacerse lo más compatible posible con la cuarta (en cuanto a la sintaxis y el apoyo de las funciones anteriores de la API, en particular). Por supuesto, las nuevas características, tales como la generación de código rápido, podría ser añadido, pero esto podría hacerse para las nuevas construcciones de sintaxis (limitaciones) - por ejemplo, con estos parámetros-arrays: que quiere la optimización de la velocidad - especificar las dimensiones, y que quiere rápidamente y fácilmente puerto de código antiguo - dejarlo como está, y el infierno si sería más lento. Habría un compromiso entre la velocidad y la comodidad, o se podría ofrecer el ensamblador como mql5. ;-).