Errores, fallos, preguntas - página 973

 
voix_kas:

...

¿Qué puedo decir? Un mapa de bits funciona (!) un orden de magnitud más lento que 26 etiquetas normales. He intentado excluir de OnTick() la operación de copia del patrón en el lienzo de trabajo (array uint 250*410), es decir, la operación en un lienzo. La ganancia se percibe sólo en tiempo real. En el probador ocurre lo mismo, con una degradación absoluta de la productividad. Se utilizó el modoCOLOR_FORMAT_ARGB_NORMALIZE, ya que los otros dan un aspecto menos estético. Adelantándome, debo decir que trabajar en un lienzo es difícil porque hay que seguir la superposición de las superposiciones anteriores (áreas claras).

...

¿Tiene objetos como OBJ_BITMAP_LABEL en modo de visualización en el probador?
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов - Документация по MQL5
 
tol64:

Gracias, lo sé. vdv2001 tiene algún tipo de problema:

//---

Quería ver cómo lo hace para descubrir que tiene un bicho.


A continuación, otra cita de la ayuda

CHART_MOUSE_SCROLL

Desplace el gráfico con el botón izquierdo del ratón en sentido horizontal. El desplazamiento vertical también está disponible si alguna de las tres propiedades se establece como verdadera: CHART_SCALEFIX, CHART_SCALEFIX_11 o CHART_SCALE_PT_PER_BAR

bool

 
Ah, ya veo lo que es. ))
vdv2001:

Sí, el objeto está seleccionado, pero no se puede mover con el ratón (como en el terminal 4).

O ahora moviendo todos los objetos creados por el Asesor Experto deben ser manejados por eventos.

En MT5, tengo que colocar con precisión el cursor del ratón en el punto de anclaje de un objeto seleccionado. En MT4 se hace automáticamente. Personalmente prefiero mover los objetos sin selección a través de eventos. Arriba Rosh mostró la propiedad para activar/desactivar el desplazamiento del gráfico, para que no interfiera con los objetos en movimiento.
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Свойства объектов - Документация по MQL5
 
tol64:
Ah, ya veo lo que es. )) En MT5, tengo que colocar con precisión el cursor del ratón en un punto de anclaje, cuando se selecciona un objeto. En MT4 es automático. Personalmente prefiero mover los objetos sin selección a través de eventos. Arriba Rosh mostró la propiedad para activar/desactivar el desplazamiento del gráfico, para que no interfiera con los objetos en movimiento.

Aumenté el gráfico al máximo, puse el ratón en el punto de anclaje del objeto seleccionado "presioné" el botón izquierdo del ratón hasta el suelo, apliqué el máximo esfuerzo y ...

El objeto se quedó en su sitio.

Para repetir este proceso no es difícil, crear un objeto CChartObjectTrend, establecer sus propiedades y tratar de moverlo. No lo he conseguido.

CHART_MOUSE_SCROLL Lo he probado y el gráfico deja de moverse, pero el objeto no se ha movido.

P.D.

Aunque, si se maneja el movimiento de un objeto a través de eventos, es correcto (conozco la coordenada antigua) . Lo haré a través de eventos. Gracias, la pregunta está cerrada.

 
vdv2001:

Aumentamos el gráfico al máximo, situamos el ratón en el punto de anclaje del objeto seleccionado "pulsamos" el botón izquierdo del ratón hasta el suelo, aplicamos el máximo esfuerzo y ...

El objeto se quedó en su sitio.

No es difícil repetir este proceso, crear un objeto CChartObjectTrend, establecer sus propiedades e intentar moverlo. A mí no me funcionó.

...

Así es como funciona, en todo caso:

void OnStart()
  {
   double low[];
   datetime time[];
   string name_object="Trend_Test";
//---
   ArraySetAsSeries(low,true);
   ArraySetAsSeries(time,true);
//---
   CopyLow(_Symbol,_Period,0,50,low);
   CopyTime(_Symbol,_Period,0,50,time);
//---
   if(ObjectCreate(0,name_object,OBJ_TREND,0,time[0],low[0],time[49],low[49]))
      ObjectSetInteger(0,name_object,OBJPROP_SELECTABLE,true);
  }
 

¿Alguien ha conseguido repetir la hazaña devoix_kas?

voix_kas:
...
Что могу сказать? Один Bitmap работает (!)на порядок медленнее, чем 26 обычных меток. Пробывал исключить из OnTick() операцию копирования шаблона в рабочую канву (массив uint 250*410), т.е. работа на одной канве. Выигрыш чувствуется только в реал-тайме. В тестере всё также - абсолютная просадка по производительности. Использовался режим COLOR_FORMAT_ARGB_NORMALIZE, т.к. остальные дают менее эстетический вид. Забегая вперед, надо сказать, что работать на одной канве сложно, так как придётся отслеживать наложение предыдущих надписей (очищать области).

...


¿Tiene objetos del tipo OBJ_BITMAP_LABEL en modo de visualización en su probador?

//---

¿O es una errata? )))

 
Para calcular el rendimiento de los mapas de bits, es aconsejable mirar el código. Tal vez haya operaciones adicionales de redibujado.
 
tol64:

Así es como funciona, en todo caso:

Correcto, ya descubrí por qué no se movía, puse la propiedad del objetoOBJPROP_TIMEFRAMES después de lo cual el objeto deja de moverse.

Por ejemplo, para el gráfico de minutos establezco la propiedad

obj.Timeframes(OBJ_PERIOD_M1);

y el objeto deja de moverse, parece ser un fallo.

Todo empieza a funcionar con normalidad después de cambiar el periodo del gráfico como cambiar a M2 y luego a M1 y todo está bien.

 

voix_kas:

¿Qué puedo decir? Un mapa de bits funciona (!) un orden de magnitud más lento que 26 etiquetas normales. He intentado excluir de OnTick() la operación de copia del patrón en el lienzo de trabajo (array uint 250*410), es decir, la operación en un lienzo. La ganancia se percibe sólo en tiempo real. En el probador ocurre lo mismo, con una degradación absoluta de la productividad. Se utilizó el modoCOLOR_FORMAT_ARGB_NORMALIZE, ya que los otros dan un aspecto menos estético. De cara al futuro, debo decir que trabajar en un lienzo es difícil porque hay que seguir la superposición de inscripciones anteriores (zonas limpias).


1. ¿Cómo se mide la velocidad?

2. ¿Puedes adjuntar la fuente (en un mensaje privado o en un CD)?

 
alexvd:


1. ¿Cómo se mide la velocidad?

2. ¿Puede adjuntar el código fuente (en un mensaje privado o en un CD)?

Lamentablemente, no guardé el código por falta de interés. Entérminos generales:

OnInit():

1. Crea un mapa de bits en el gráfico.

2. Se crean dos lienzos(uint 250*410): una plantilla y una de trabajo. En la plantilla se aplican 13 etiquetas con el nombre de los parámetros estadísticos (TextOut).

OnTick():

1. La plantilla se copia en el lienzo de trabajo.

2. Las 13 etiquetas con los valores correspondientes de los parámetros estadísticos se aplican (TextOut) al lienzo de trabajo.

3. Crea un recurso.

4. se actualiza el lienzo de trabajo.

No tomé ninguna medida de tiempo en particular, porque es obvio que la velocidad ha disminuido en un orden de magnitud. Lo que en el probador, así como en tiempo real (cuando el gráfico de desplazamiento es bastante obvio congela / tirones).

He intentado eliminar el punto 1. de OnTick(). En tiempo real, se vuelve tolerable, pero el probador apenas se arrastra. Una vez más, esto no puede hacerse en tiempo real, ya que no se ha realizado ninguna limpieza en los lugares de las marcas anteriores en el lienzo de trabajo.

Una vez más, he utilizado el modoCOLOR_FORMAT_ARGB_NORMALIZE, porque las etiquetas(TextOut) se ven poco estéticassin el canal alfa.