Cómo hacer que los objetos dibujados por XY cambien suavemente (MT4 vs MT5) - página 10

 
Vitaliy Kuznetsov:

Gracias, buena plantilla, me será muy útil. Mucho e interesante para aprender de sus trabajos.

Dmitry, sigo considerándote un programador capaz de demostrar una gran habilidad.

Y si hay sugerencias código, pensamientos constructivos, con el placer (y no sólo yo) adoptaría su experiencia.

P.D. Es mejor ver el código una vez, que oírlo 100 veces.

Sí, alineados, en fila, manteniéndose a distancia... ¿Código para qué?

 
Nikolai Semko:

Dudo que se pueda hacer en autónomos. Los que pueden hacerlo están sobrecargados de trabajo hasta las orejas, y los que están libres probablemente no son tan buenos en kanvas como tú.

Por eso no me gustan los objetos, ya que tienen vida propia en sus flujos, sobre los que no tienes control. Con el kanvas, por el contrario, todo está en tus manos. Por eso tengo que escribir código adicional para que el probador con lienzo no se ralentice al calcular los frames en cada tick más de 30 veces por segundo.
Además, el trabajo con los TFs y la carga del historial es muy poco razonable e ineficiente en MT5. Sólo se cargan los M1, y de forma descomprimida, mientras que los demás sólo se calculan a partir de los M1. Por lo tanto, si activa MN1 por primera vez, 100 barras tardarán más de 10 segundos en cargarse. Tuve que escribir la carga de la barra yo mismo y convertir M1 en forma empaquetada y tener todos los TFs calculados en la memoria. Todos mis TFs junto con el M1 ocupan una fracción del espacio en la RAM que sólo el M1 regular en MT5.

¿Es esto una penitencia o una delicia?

 
Алексей Тарабанов:

¿Es el arrepentimiento o el rapto?

Verás, es al revés. Creas un programa: es un mundo que vive según tus leyes. Haces algo orientado a objetos: engendras algo como una ameba, o un refrigerador, que vive por sí mismo.

 
Алексей Тарабанов:

¿Esto es arrepentimiento o rapto?

Esto es una tontería basada en un ego inadecuado. Y muy lejos de la realidad de trabajar en MT5.

 
Nikolai Semko:

Bueno primero arregla tu indicador con objetos según este algoritmo que te di.

Nikolay, si no es difícil, ¿qué opinas sobre el hecho de que el indicador fijo se desplace con el tiempo en el probador? Si intentas cambiar la escala con el ratón, se fija.

Lo mismo ocurre con los kanvas. El gráfico no se desplaza o se desplaza de forma incorrecta (después de un tiempo), hasta que se cambia manualmente la escala del gráfico. Los cálculos y las alertas en sí son correctos, pero los gráficos...

Seguramente debe haber una solución, que no veo. ¿O tal vez es algo malo en el probador?

 
Vitaliy Kuznetsov:

Nikolai, si no te importa, ¿cuál es tu opinión sobre el cambio del indicador corregido en el probador con el tiempo? Si se intenta cambiar la escala con el ratón, se corrige.

Lo mismo ocurre con los kanvas. El gráfico no se desplaza o se desplaza de forma incorrecta (después de un tiempo), hasta que se cambia manualmente la escala del gráfico. Los cálculos y las alertas en sí son correctos, pero los gráficos...

Seguramente debe haber una solución, que no veo. ¿O tal vez hay algo mal en el probador?

Agrego una línea en OnChartEvent

if (id == CHARTEVENT_CHART_CHANGE ) Draw (); 
supervisar un evento de cambio de gráfico (una nueva barra es también un evento de cambio de gráfico)
  • He añadido a OnCalculate para el modo tester una línea para redibujar, por ejemplo, cuando llega una nueva barra, ya que OnChartEvent no funciona en el tester:
     if(rate_total != prev_calculated ) if (Canvas.tester) {ChartChanged (); Draw ();}
  • Si no funciona en MT4, significa que hay algo mal con el evento CHARTEVENT_CHART_CHANGE. No puedo comprobarlo ahora, todavía no hay citas.



     
    Nikolai Semko:

    Gracias por el consejo. Todavía no he podido hacerlo, lo intentaré hoy