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 12

 
Vict:

fxsaber tiene razón - hay una opción

Es un poco kitsch - EXPR se calculará dos veces, pero sigue siendo más flexible. No se puede decir que sea universal (sólo para los tipos aritméticos. El valor del error debe ser igual, lo cual es desagradable. Intenté evitarlo mediante la especialización explícita de la estructura/función, pero no es posible.

¡Saludos!

Me gustaría abrir un nuevo tema, no puedo formular el problema... Tengo problemas con él )))) Pero el material es bastante fresco e interesante

Habéis hecho un gran trabajo, os gustaría finalizarlo - ¡la usabilidad (@fxsaber tiene todo su trabajo una vez enchufado con un inluder) es práctica!

Y para que todo tenga un aspecto profesional, debes utilizar la sintaxis de C++ / C# (o acercarte lo máximo posible)

 
Artyom Trishkin:

Puedo darte mi opinión:

Hagamos tranquilamente de lo que tenemos en este momento, no te quejes, ayuda a encontrar errores y pide con la expectativa de que se arreglen - se arreglan y aparecen nuevas características agradables.

Estoy de acuerdo con este enfoque.

---------

En parte, ya tengo una especie de caché desde las primeras versiones. Es decir, he creado arrays con el tiempo, los valores de los mínimos y los valores de los máximos para los 10 primeros zigzags extremos.

En la versión para MT5, también añadí una matriz que contiene números de barra. Para los 10 primeros extremos. Esto ayuda en la mayoría de los casos. En MT5 sólo se ven afectadas las fijaciones no estándar.

No voy a crear un caché completo para el historial disponible para los 21 plazos. La memoria de su ordenador no será suficiente con este enfoque.

Para entender: algunos entusiastas muestran hasta 9 indicadores para MT4 en un gráfico. Hay muchos gráficos para varios pares de divisas abiertos al mismo tiempo. Y todos tienen 9 copias del indicador. Esta aplicación del indicador se realiza para el sistema DML&EWA creado por Putniuk. Él mismo ha emitido hasta 72 instancias del indicador. Es decir, en 8 pares de divisas.

Si se utiliza de esta manera, una caché adicional de 21 TFs junto con 28 buffers cargará mucho la memoria.

Esto sólo tiene en cuenta la carga de memoria. Es demasiado pesado rediseñar un código grande para utilizar la caché en lugar de las funciones iTime, iLow, iHight, iClose, iBarShift

=================

He pasado varias veces por estos maratones.

1. Un maratón sobre la inclusión de varios indicadores externos en zigzag en el cuerpo del programa principal. Se deshizo de los indicadores externos para que el mercado aceptara el programa.

2. Conversión de todos los zigzags de búfer simple a búfer doble. Esto llevó alrededor de medio año.

3. Creación de la interfaz gráfica. En total, me llevó más de dos años. Unos 3 años. Y hay más ideas interesantes para la interfaz gráfica. Pero aún no tengo el valor suficiente para ponerlas en práctica.

4. Originalmente trató de traducir de MT4 a MT5 hace un año. No tuve éxito entonces. Ya puedo hacerlo. Pero no estoy satisfecho con la calidad de la traducción.

También hubo otros maratones.

Crear un caché puede llevar a un callejón sin salida. Es peligroso meterse con...

------------

Artem, tu planteamiento (citado anteriormente) está totalmente respaldado.

 
De nuevo, esta es una cita del primer post:

...cita de la guía de lenguaje MQL5. En el apartado Organización del acceso a los datos.

"...Accesibilidad de los datos

La disponibilidad de datos en formato HCC o incluso en formato HC ready no siempre significa la disponibilidad incondicional de estos datos para su visualización en un gráfico o para su uso en programas mql5.

Al acceder a los datos de los precios o a los valores de los indicadores desde los programas mql5, hay que tener en cuenta que no se garantiza que estén disponibles en un momento determinado, o a partir de un punto determinado...".

--------------

El problema sigue siendo.

El programa tiene varios cientos de accesos al historial de cotizaciones en diferentes partes del programa. El listado de programas contiene unas 50 000 cadenas.

A veces, debido a la especificidad del acceso al historial, se devuelve el valor -1. La consecuencia de esto es un error: un desbordamiento del array. También hay otros errores. En algunos fragmentos del programa he comprobado si se devuelve -1 al acceder al historial. Al recibir -1 en este caso no se dibujan los elementos individualesde las construcciones gráficas. Si añadimos un par de cientos de comprobaciones al código, se producirán retrasos que ya existen debido a las peculiaridades del acceso al historial.

Es posible crear un programa para MT5 también. Pero requiere cambiar toda la arquitectura. No tengo tiempo para esas hazañas.

He decidido que no es necesario realizar una tarea tan inútil. El programa funciona en MT4. No pienso cambiar a MT5. He hecho ZUP para MT5 gratis.

He hecho ZUP gratis para MT5. Todo el que quiera puede descargarlo y ver cómo funciona en MT5. Y también compararlo con mi versión en MT4.

Ahora he terminado con MT5. Es una pérdida de tiempo.

He publicado mensajes similares en otros foros.

 
Renat Fatkhullin:
¿Y puede demostrar de forma reproducible la inaccesibilidad de los datos?

Afirmas sin pruebas reproducibles.

El servicedesk describe cómo reproducir el problema. El código fuente para reproducir el problema también está ahí.

==========

Texto de la documentación de MQL5 https://www.mql5.com/ru/docs/series/timeseries_access :

Disponibilidad de datos

La disponibilidad de los datos en formato HCC o incluso en formato HC listo para usar no siempre significa la disponibilidad incondicional de estos datos para su visualización en un gráfico o para su uso en programas mql5.

Al acceder a los datos de precios o a los valores de los indicadores desde los programas mql5, debemos recordar que no se garantiza que estén disponibles en un momento determinado, o desde un punto determinado. Esto se debe a que MetaTrader 5 no almacena la copia completa de los datos necesarios para el programa mql5, sino que da acceso directo a la base de datos del terminal para ahorrar recursos.


Este texto, traducido al ruso, significa lo siguiente. No importa lo que haga en cualquier momento el acceso a los datos puede no estar disponible.

Es decir, no hay manera de evitar los errores debidos a la interrupción del acceso a los datos.

Así es como yo entiendo este texto.

Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
  • www.mql5.com
MetaQuotes Language 5 (MQL5) - язык программирования технических индикаторов, торговых роботов и вспомогательных приложений для автоматизации торговли на финансовых рынках. MQL5 является современным языком высокого уровня и разработан MetaQuotes Software Corp. для собственной торгово-информационной платформы. Синтаксис языка максимально близок...