Errores, fallos, preguntas - página 3126

 
Nikolai Semko #:

Se forma una estructura de datos o una matriz de estructuras en un EA o en un indicador y se envía a un recurso.

Kanvas mismo trabaja con un recurso gráfico (OBJ_BITMAP_LABEL/ OBJ_BITMAP). Así que sólo queda comunicar el nombre del recurso a otra aplicación y ésta accederá fácilmente a los píxeles. También tendrá que pasar el formato de los píxeles. Y puedes leer los píxeles o cambiarlos con otro CCanvas. Tiene un método, CCanvas::Attach, para adjuntarlo a un recurso existente.

 
Nikolai Semko #:

¿Cuál es el problema, Andrei?
Formar una estructura de datos o una matriz de estructuras

No hay ningún problema. Son los pasos extra, a eso me refiero.

Cualquier indicador con buffer puede ser leído por cualquier otro indicador o Asesor Experto.

Por ejemplo, tengo un EA que obtiene una lista de indicadores en ejecución y luego los crea en una lista especificada de instrumentos/TF y luego recoge las señales de ellos (y los envía a telegrama). Por lo tanto, cualquier indicador de la memoria intermedia puede ejecutarse simplemente en un gráfico y se recogerá automáticamente. Pero el indicador kanvas tendrá que ser conectado manualmente y luego el resto del trabajo deberá ser hecho manualmente.

Hay que unificar el trabajo con los indicadores de kanvas. Me temo que esta unificación dará lugar a ... indicadores del buffer))

 
Nikolai Semko #:

¿Cuál es el problema, Andrei?

No encontré ninguno y ni siquiera lo busqué

 
Andrey Khatimlianskii #:

No hay ningún problema. Son gestos innecesarios, a eso me refiero.

Cualquier indicador de búfer puede ser leído por cualquier otro indicador o EA, y un kanvas necesita una capa de kastum.

Por ejemplo, tengo un EA que obtiene una lista de indicadores en ejecución y luego los crea en una lista especificada de instrumentos/TF y luego recoge las señales de ellos (y los envía a telegrama). Por lo tanto, cualquier indicador de la memoria intermedia puede ejecutarse simplemente en un gráfico y se recogerá automáticamente. Pero el indicador kanvas tendrá que ser conectado manualmente y luego el resto del trabajo deberá ser hecho manualmente.

Hay que unificar el trabajo con los indicadores de kanvas. Me temo que esta unificación dará lugar a ... indicadores del buffer)).

Me refiero a ampliar las posibilidades, incluyendo el uso de las mismas clases para la visualización, tanto en indicadores como en Asesores Expertos. En los indicadores, por supuesto, siempre hay un método de transferencia del buffer y nadie prohíbe su uso en caso de lienzo puro.
Y por cierto, ya he implementado un método híbrido de transferencia, cuando un array de estructuras se transfiere en un buffer a través de una unión. Aunque hay un complemento adicional en el lado de la recepción, pero en primer lugar, no es complicado, y en segundo lugar, hace que el trabajo con los datos de otro indicador más fácil y más conveniente para el usuario debido a las estructuras, no matrices de dobles. A los usuarios les gustará sin duda.
 
Mihail Matkovskij #:

Kanvas mismo trabaja con un recurso gráfico (OBJ_BITMAP_LABEL/ OBJ_BITMAP). Así que queda por comunicar el nombre del recurso a otra aplicación y ésta accederá fácilmente a los píxeles. También tendrá que pasar el formato de los píxeles. Y puedes leer los píxeles o cambiarlos con otro CCanvas. Tiene un método llamado CCanvas::Attach para adjuntarlo a un recurso existente.

Es poco probable que haya que transferir un gráfico, ya que suele estar sincronizado con las barras y el precio de la otra ventana, y está integrado en el modelo de eventos.
La ventana del indicador no se formará si no está presente o no está activa.
Si la ventana del indicador no existe, sólo hay manera a través de iCustom utilizando el buffer o los buffers. Pero, como dije antes, puedes poner una estructura o un array de estructuras en estos buffers.
 
Andrei Trukhanovich #:

No pude encontrarlo y ni siquiera estaba buscando.

Gracias por informar.
Ahora sabemos que no
 
Nikolai Semko #:
Además, creo que el recurso gráfico ni siquiera se generará si la ventana del indicador no existe o no está activa.

Me pregunto en qué casos si un indicador está funcionando y su ventana no existe. Y cuando la ventana está inactiva (el usuario ha cambiado a otro gráfico o la ha minimizado), ¿qué recurso se descarga de la memoria, simplemente se borra?

Nikolai Semko #:
Pero, como dije antes, puedes poner una estructura o un array de estructuras en estos buffers.

Creo que en eso estoy de acuerdo contigo. Tenía que crear un robot multitarea. La primera instancia de la aplicación crea tareas y crea gráficos para ellas, luego aplica una plantilla especial con el mismo robot. A continuación, el primer robot crea las tareas y los robots creados por el autómata las ejecutan. La transferencia de datos se realiza a través de recursos. Las cadenas de números y estructuras se transfieren allí. Hay un ejemplo de transferencia de datos vía http aquí en el sitio web (si la memoria no me falla). Pero primero van los datos sobre las estructuras, sus tamaños y tipos, y luego los datos en sí. Decidí hacerlo más fácil en mi Asesor Experto pasando las cadenas y los números a través de una matriz de tipos uchar en forma de cadenas que simplifica enormemente el proceso de lectura/escritura. Pero nunca he escrito bytes en los búferes indicadores y los he leído desde allí. Pero ya veo una desventaja de este método: el número limitado de bytes en las barras del indicador. Aunque hay 8 bytes en cada celda del array. Quizá no sea una desventaja tan grande. Quién sabe...

 
Mihail Matkovskij #:

Me pregunto en qué casos si un indicador está funcionando pero su ventana no existe.

Me refiero a usar iCustom

Y cuando la ventana está inactiva (el usuario ha cambiado a otro gráfico o la ha minimizado), ¿qué recurso se descarga de la memoria, simplemente se borra?

esto era sólo mi suposición, ya que no hay ningún punto especial en la formación de imágenes cuando la ventana se minimiza. Cómo se implementa en MT - no lo comprobé, pero me encontré con algo similar. He olvidado todos los matices.
De todas formas es poco probable que se borre el recurso, pero tampoco se actualiza con el tiempo. Es decir, CCanvas::Update no funciona

void CCanvas::Update(const bool redraw)
  {
//--- check
   if(m_rcname==NULL)
      return;
//--- update resource and redraw
   if(ResourceCreate(m_rcname,m_pixels,m_width,m_height,0,0,0,m_format) && redraw)
      ChartRedraw(this.m_chart_id);
  }
 
Nikolai Semko #:

Me refiero a usar iCustom

Resulta que se pueden pasar valores por el recurso y los buffers, pero no por el recurso Kanvas. Es una tarea interesante, llamar a un indicador con salida a Kanvas usandoiCustom. No lo he probado. Me parece que en este caso puede haber errores. ¿Tal vez, un indicador de este tipo cargado a través de iCustom no funcione en absoluto?

En cualquier caso, es poco probable que el recurso se borre, pero tampoco se actualiza con el tiempo. Es decir, CCanvas::Update no funciona.

Creo que ResourceCreate funciona, pero el resultado no se renderiza con ChartRedraw. Las llamadas a la función van, pero el sistema entiende que el gráfico no necesita ser actualizado mientras está inactivo. Pero siResourceCreate no funciona,imagine que el indicador ha actualizado los datos en un tick aleatorio cuando el gráfico está inactivo, pero el recurso de Kanvas no se ha actualizado. Y entonces el usuario ha decidido activar este gráfico inactivo y mirar el indicador (Kanwa). Y resulta que había un tic, pero el Canva sigue siendo el mismo que había antes de que el usuario cambiara el gráfico. ¿Y si durante el periodo de inactividad hubiera muchas garrapatas? Por supuesto, el indicador los procesaría, pero ninguno de los resultados se mostraría en el lienzo.

 
Mihail Matkovskij #:

Creo que ResourceCreate funciona, pero el resultado no se muestra con ChartRedraw.

Sí, probablemente tengas razón. Es probable que así sea.
Y para ahorrar recursos, lo correcto sería controlar la actividad de la ventana y no generar un mapa de bits si la ventana no está activa.

Merece la pena comprobarlo en lugar de hacer suposiciones.