El problema de la transferencia de MT4 a MT5. O, más precisamente, la incapacidad de ejecutar algunos algoritmos en MT5 sin'err. - página 5

 
Andrey Khatimlianskii:

La sugerencia era hacerlo con un temporizador cada minuto y medio. No antes de cada tic, y desde luego no en un evento del gráfico.

El acceso a las series de tiempo en MT5 no es, en efecto, ideal. Pero si necesita resolver un problema y no encontrar una excusa, entonces es posible.

Nadie busca una excusa. No sabes el nivel de dificultad de la tarea. Por eso hablas tan fácilmente de una excusa.

Se sugirió actualizar con un temporizador cada 2 minutos. Eso es lo que he hecho.

Pero... Esto no es suficiente. Incluso después de esta actualización del temporizador, al crear un evento en un gráfico a través de la interfaz gráfica, a menudo ocurría que al llamar a iBarShift daba -1 . En consecuencia, se produce una salida fuera del límite del array o algún otro error. Así que intenté hacer una comprobación de accesibilidad en las series de tiempo antes de entrar en OnChartEvent. Para una mejor comprensión, diré que hay que comprobar el acceso a las 21 series temporales. Si al menos una serie temporal no es accesible, es casi 100% probable que los gráficos se realicen con algún tipo de error.

El programa es complejo, con unas 50.000 líneas. En un volumen de este tipo hay muchos accesos de series temporales diferentes.

Los retrasos ocurren todo el tiempo (en la variante MT5). Funciona como un reloj en MT4.

MT5 no es interesante para mí. No lo uso en el comercio. Yo sólo uso MT4. He comenzado a traducir el programa sólo a petición de los usuarios. Cuando me enfrenté a semejante dolor de cabeza, decidí que es mejor hacer lo que es interesante.

Durante los 14 años de desarrollo del programa aparecieron algunas ideas interesantes. Ahora estoy poniendo en práctica estas ideas.

 
Eugeni Neumoin:

Se sugirió que se actualizara con un temporizador cada 2 minutos. Eso es lo que he hecho.

Pero. Esto no es suficiente. Incluso después de esta actualización del temporizador, al crear un evento en un gráfico a través de la GUI, a menudo resultaba que llamar a iBarShift daba -1 .

¿No es cierto lo deiBarShift por casualidad?

Yo también he tenido dificultades con la sincronización, incluso después de las actualizaciones programadas. Pero no he podido reproducirlo irónicamente, el problema es flotante.


Eugeni Neumoin:

La MT5 no me interesa. No lo uso en el comercio. Sólo MT4. He comenzado a traducir el programa sólo a petición de los usuarios. Cuando me enfrenté a semejante dolor de cabeza, decidí que es mejor trabajar con las cosas que me interesan.

Durante los 14 años de desarrollo del programa han aparecido algunas ideas interesantes. Ahora estoy poniendo en práctica estas ideas.

No estoy defendiendo la MT5. Me he dado cuenta enseguida de que no tienes muchas ganas de entenderlo).

Por supuesto, ¡es mejor hacer lo que es interesante!

 
Eugeni Neumoin:

Nadie busca una excusa. No sabes el nivel de dificultad de la tarea. Por eso hablas de excusas con tanta facilidad.

La sugerencia era actualizar con un temporizador cada 2 minutos. Eso es lo que he hecho.

Pero... Esto no es suficiente. Incluso después de esta actualización del temporizador, al crear un evento en un gráfico a través de la interfaz gráfica, a menudo ocurría que al llamar a iBarShift daba -1 . En consecuencia, se produce una salida fuera del límite del array o algún otro error. Así que intenté hacer una comprobación de accesibilidad en las series de tiempo antes de entrar en OnChartEvent. Para una mejor comprensión, diré que hay que comprobar el acceso a las 21 series temporales. Si al menos una serie temporal no es accesible, es casi 100% probable que los gráficos se realicen con algún tipo de error.

El programa es complejo, con unas 50.000 líneas. En un volumen de este tipo hay muchos accesos de series temporales diferentes.

Los retrasos ocurren todo el tiempo (en la variante MT5). Funciona como un reloj en MT4.

MT5 no es interesante para mí. No lo uso en el comercio. Yo sólo uso MT4. He empezado a traducir el programa sólo a petición de los usuarios. Cuando me enfrenté a semejante dolor de cabeza, decidí que es mejor hacer lo que es interesante.

Durante los 14 años de desarrollo del programa aparecieron algunas ideas interesantes. Ahora estoy poniendo en práctica estas ideas.

Guarda las series de tiempo en la memoria.
 
Artyom Trishkin:
Guarda en la memoria tus series de tiempo.

¿Qué quieres decir? ¿Hacer manualmente tus propios cachés?

 
Andrey Khatimlianskii:

¿Qué quieres decir? ¿Hacer manualmente tus propios cachés?

Una vez que cuente todas las series de tiempo, y luego sólo añadir más. Esto puede hacerse en una ventana.
Sí, en sus propias matrices. Puedes hacerlo con SB. La clase de series de tiempo es la suya.
 
Andrey Khatimlianskii:

¿Resulta que el valor exacto de iBarShift es verdadero?

Es cierto. Necesito saber el número exacto del bar.

 
Artyom Trishkin:
Cuenta todas las series de tiempo una vez, y luego sólo añade más. Puedes hacerlo en la ventana.

¿Así que sugieres no usar buffers, sino trabajar con tus propias matrices?

¿Para qué sirven entonces los topes?

Así que propones hacer tu propia muleta, en lugar de topes :(

Y en lugar de iTime, iLow, etc. haz tus propias funciones... Reescribe todo a su manera, obviando las funciones que no funcionan de MT5...

Esto es drástico. Pero deja que los entusiastas lo hagan. Me haré a un lado. Ni siquiera voy a ver el proceso.

 
Eugeni Neumoin:

¿Así que sugieres no usar buffers, sino trabajar con tus propias matrices?

Echa un vistazo al SB. Ahí hay un trabajo con indicadores. Si no quiere hacer el suyo propio. En general, hay que crear una clase una vez y luego utilizarla para cualquier mensaje de texto. Y los datos estarán siempre disponibles. Sólo tendrás que añadir nuevos indistintamente.
 
Eugeni Neumoin:

¿Así que sugieres no usar buffers, sino trabajar con tus arrays?

¿Para qué sirven entonces los topes?

Así que propones hacer tu propia muleta, en lugar de topes :(

Y en lugar de iTime, iLow, etc. haz tus propias funciones... Reescriben todo a su manera, obviando las funciones que no funcionan de MT5...

Todo funciona allí. Pero a veces se niega el acceso. Tal vez por las actualizaciones de las series temporales, no lo sé. Si se niega, tienes que repetir la petición, porque la primera petición activa el intercambio de datos.
 
Eugeni Neumoin:

Es cierto. Necesito saber el número exacto del bar.

Entonces hay un error de lógica, tal vez. Puede que no haya un bar.