El lienzo es genial. - página 81

 
Dmitry Fedoseev trabajar con objetos en la oficina del consejero.

La solución al problema está en el EA:

Puede que ObjectFind() no sea necesario.

Si hubieras adjuntado el código con el problema, el problema se habría resuelto ayer

Este no es el problema en absoluto.
Este problema (OnChartEvent congelación ) sólo existe en MT4, y no es obvio en absoluto. Yo mismo estuve atormentado durante mucho tiempo. Pero ya fue discutido en este hilo hace aproximadamente un año.

 
Nikolai Semko #:

ese no es el problema en absoluto.
Este problema sólo existe en MT4, y no es obvio en absoluto. Yo mismo estuve atormentado durante mucho tiempo. Pero ya fue discutido en este hilo hace aproximadamente un año.

No sé cuál es el problema en absoluto, sólo escribí lo que lo causa y cómo se resuelve. Pero puedes seguir sufriendo...

 
Dmitry Fedoseev #:

Y no sé en absoluto cuál es el problema, sólo he escrito qué lo causa y cómo se soluciona. Pero puedes seguir sufriendo.

¡Estas palabras deberían estar grabadas en piedra! :))
 
Dmitry Fedoseev #:

Y no sé en absoluto cuál es el problema, sólo he escrito qué lo causa y cómo se soluciona. Pero puedes seguir sufriendo.

El problema deunit no tiene nada que ver. Este problema ocurre solo en MT5. Y aquí estamos hablando de MT4.

 
Nikolai Semko #:

Eres una persona extraña.
Tú mismo quieres que los demás entiendan tu código y cientos de líneas cuando haces una pregunta, pero ni siquiera intentas penetrar en la respuesta y mirar en el código de cien líneas.

Vale. Voy a hacer la vida más fácil.
Traduce todo el código de OnChartEvent a OnTimer. Ajuste el temporizador a 30 milisegundos. Usted tendrá que introducir sólo las variables globales (no terminal), que debe ser actualizado en OnChartEvent, y restablecer (que son bool) en OnTimer.
Las variables pueden ser
las siguientes

No era tan obvio para mí en absoluto. Me enteré por el enlace que di antes que el problema es viejo y su solución fue buscada incluso por autores con 10 000+ ventas en el mercado más de una vez.

Y esto se aplica a todos los Asesores Expertos MT4 con objetos, lo que significa que un gran número de usuarios se han enfrentado a este problema. Ellos escriben a los autores en el mercado, y no saben la solución. Por eso era tan importante resolver este problema.

Viendo el GIF (prueba de viabilidad) estoy decidido a aplicar este enfoque en mis productos. Probablemente me sentaré a experimentar e informaré mañana.
 
Vitaliy Kuznetsov #:

Para mí no era tan evidente. Por el enlace que he dado antes, me he enterado de que el problema es antiguo y su solución la han buscado incluso autores con más de 10 000 ventas en el mercado más de una vez.

Y esto se aplica a todos los Asesores Expertos MT4 con objetos, lo que significa que un gran número de usuarios se han enfrentado a este problema. Ellos escriben a los autores en el mercado, y no saben la solución. Por eso era tan importante resolver este problema.

Mirando al GIF estoy decidido a aplicar este enfoque en mis productos. Probablemente me sentaré, experimentaré e informaré mañana.

Tal vez lo mismo se puede hacer en el Asesor de Expertos.
Pero funciona sin retrasos.

 
Nikolai Semko #:

Tal vez lo mismo se puede hacer en la EA.
Pero funciona sin lags.

En primer lugar, ¡Gracias!

Hmm, parece que funciona dentro del código dado. Pero todavía conflictos con EAs. Por ejemplo con este - https://www.mql5.com/ru/code/35440.

He comprobado con otros EAs también. Debo tratar de mejorar el código de la EA. El problema sigue siendo relevante.
cm partial closing position
cm partial closing position
  • www.mql5.com
Советник закрывает позиции частями и переводит их в безубыток.
 
Vitaliy Kuznetsov #:

En primer lugar, ¡gracias!

Hmm, parece que funciona con el código dado. Pero todavía conflictos con EAs. Por ejemplo con este - https://www.mql5.com/ru/code/35440.

He comprobado con otros EAs también. Debo tratar de mejorar el código de la EA. Sigue siendo un problema.

No veo ningún retraso.
Sí, también debe ajustar el código en el EA para que no haya cálculos en OnChartEvent .
La regla es simple:
- las variables globales (no terminales) de eventos y coordenadas deben llenarse en OnChartEvent, pero no ejecute funciones con cálculosengorrosos desde él .
- Todas las llamadas a tales funciones deben hacerse desde el temporizador según las variables de evento,
- después de procesar los eventos, debes acordarte de reiniciar estos eventos en el temporizador, para que en la siguiente iteración del temporizador no vuelvas a ejecutar lo mismo.

Repito - se trata de un error de congelación OnChartEvent sólo en MT4

Lo curioso es que si MQ arreglará este error, que aparentemente es elemental ( OnChartEventse congela si hay unos 10 milisegundos de cálculos dentro de él) y se arregla tan fácilmente con la ayuda de un temporizador, entonces mucha gente se dará cuenta después de recompilar sus indicadores o Asesores Expertos, en los que OnChartEvent se utiliza activamente, que todo está volando :)))
O tal vez es un error artificial para hacer que la gente cambie a MT5 ;))))

 
Nikolai Semko #:

No veo ningún lag.
Sí, también deberías ajustar el código en el EA para que no haya cálculos en OnChartEvent .
La regla es simple:
- las variables globales (no terminales) de eventos y coordenadas deberían rellenarse en OnChartEvent, pero no ejecutes funciones con cálculosengorrosos desde él .
- Todas las llamadas a tales funciones deben hacerse desde el temporizador según las variables de evento,
- después de procesar los eventos, debes acordarte de reiniciar estos eventos en el temporizador, para que en la siguiente iteración del temporizador no vuelvas a ejecutar lo mismo.

Repito - se trata de un error de congelación OnChartEvent sólo en MT4

Lo curioso es que si MQ arreglará este error, que aparentemente es elemental ( OnChartEventse congela si hay unos 10 milisegundos de cálculos dentro de él) y se arregla tan fácilmente con la ayuda de un temporizador, entonces mucha gente se dará cuenta después de recompilar sus indicadores o Asesores Expertos, en los que OnChartEvent se utiliza activamente, que todo está volando :)))
O tal vez es un error artificial para hacer que la gente cambie a MT5 ;))))

Resulta que el método de mejora ordinaria del código de los indicadores no puede resolver el conflicto con los EAs en código cerrado que usan objetos.

Espero que la mejora del EA solucione globalmente el conflicto con todos los indicadores del cuadro de mandos (que es mi tarea).

Escribí en el hilo de MT4 build 1353, tal vez los programadores del terminal presten atención.

P.D. Hice cambios en los búhos y algo los esquís no iban ...

 
Vitaliy Kuznetsov #:


P.S. Editado los búhos y algo esquís no go....

¿Estás seguro de que no queda nada en OnChartEvent con bucles y llamadas a otras funciones?
Mide
con GetMicrosecondCount() el tiempo de cálculo de lo que ocurre en OnTimer (o OnChartEvent ) .

Razón de la queja: