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 3

 
Eugeni Neumoin:

He intentado responder a la pregunta. Los datos no están disponibles.

El registro se encuentra en el tooltip. El código para la información sobre la herramienta se da. Se ha generado la serie temporal. Se construye un gráfico con series temporales W1. Dostap está ausente. La función iBarShift genera un error. El mismo error no se ve en MT4.

Una vez más ignoras la petición de mostrar el código y el resultado del trabajo.

Por favor, proporcione un código MQL5 reproducible.

 
Eugeni Neumoin:

Artem, ¿fuiste tú el que borró mi post en el hilo que discutía el artículo? ¿Dónde he respondido a la petición de un miembro del foro?

Estaba tocando el tema planteado en este hilo del foro. Y me enfureció esta actitud displicente. Así que he creado este hilo del foro.

======

Ya he tenido desacuerdos en este foro. No quieres discutir aquí. Hay muchos foros en los que se pueden decir muchas cosas sin censura.

Ya en 2005 un moderador (HQ) hizo algo parecido en el foro de Alpari. Y entonces casi todo el foro se trasladó de Alpari a Onyx.

No, no he borrado nada

 
Vladimir Karputov:

Una vez más ignoras la petición de mostrar el código y el resultado del trabajo.

Por favor, proporcione un código MQL5 reproducible.

La cuestión es que el código tiene unas 50 000 líneas. No lo publicaré.

La situación es flotante. Pero... Intentaré crear otro código. Tampoco será pequeño.

Y llevará tiempo.

Espero que haya leído mis enlaces en la Guía de Idiomas a la que me refiero. Dice en blanco y negro por alguien en Metakvotes que el acceso a los datos puede ser terminado en cualquier momento.

Aquí está la cita completa del manual de idiomas:

Disponibilidad de datos.

La disponibilidad de datos en formato HCC o incluso en formato HC listo para usar no siempre significa que estos datos estén incondicionalmente disponibles 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 tiene que ver con el hecho de 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.

El historial de precios para todos los plazos se construye a partir de los datos comunes en formato HCC y cualquier actualización del servidor conlleva la actualización de los datos para todos los plazos y el recálculo del indicador. Por lo tanto,el acceso a los datos puede ser denegado incluso si estos datos estaban disponibles hace un momento.

También puedes hacerlo de forma más sencilla. Ya he conseguido que varias personas compren este programa. Si recibo alguna queja de ellos sobre este hilo, publicaré sus mensajes aquí. Y que todo el mundo sepa que esto está estipulado por los desarrolladores del lenguaje: elacceso a los datos puede ser denegado incluso si estos datos estaban disponibles hace un momento.

 
Eugeni Neumoin:


Proporcione la configuración del terminal junto con el código: número de barras en el gráfico.

 
Vladimir Karputov:

Proporcione la configuración del terminal junto con el código: número de barras en el gráfico.

El número de barras es el predeterminado. Alrededor de 100.000. Y el acceso se niega en los ejemplos anteriores a 271 bares.

 
Eugeni Neumoin:

El número de barras es por defecto. Alrededor de 100.000. Y el acceso se niega en los ejemplos anteriores a 271 bares.

Cuando se trabaja ya en H1, se trata de un número insignificante de barras.

Por lo tanto: código reproducible, configuración del terminal(número de barras en el gráfico).


Sin este mínimo simplemente no hay nada que discutir - como hasta ahora es el aire.

 
Eugeni Neumoin:

El número de barras es por defecto. Alrededor de 100.000. Y el acceso se niega en los ejemplos anteriores a 271 bares.

Cada dos minutos necesitamos obtener datos de todos los plazos y símbolos utilizados en el indicador.

En el manejador OnTimer(), en otras palabras - en el temporizador, aplicar una vez cada 90 segundos a todos los plazos, que son necesarios para el trabajo del indicador. Puede utilizar cualquier función de copia. Sólo hay que obtener los datos "en medio de la nada", por ejemplo de la primera barra o de la actual para cada marco temporal utilizado. Esto será suficiente para mantener actualizados todos los datos de todos los plazos.

Y al principio de OnCalculate() comprueba lo que devuelve la función que accede a los datos de los plazos deseados. Si devuelve -1, entonces salga antes del siguiente tick.

 
Artyom Trishkin:

Cada dos minutos debería recibir datos de todos los plazos y símbolos utilizados en el indicador.

En el manejador OnTimer(), en otras palabras - en el temporizador, cada 90 segundos más o menos abordar todos los plazos, que son necesarios para el trabajo del indicador. Puede utilizar cualquier función de copia. Simplemente obtenga los datos de "ningún lugar", por ejemplo de la primera barra o de la barra actual para cada uno de los marcos temporales utilizados. Esto será suficiente para mantener actualizados todos los datos de todos los plazos.

Y al principio de OnCalculate() comprobar lo que devuelve la función, que accede a los datos de los plazos deseados. Si es -1, sale antes del siguiente tick.

No hay problema con OnCalculate(). Todo el GUI funciona a través de OnChartEvent() . Hay más de 400 botones en la interfaz gráfica de usuario. Algunos de los botones no interactúan con las series de tiempo de ninguna manera. Las funciones OnCalculate() y OnTrade() pueden esperar hasta el siguiente tick. Esto no se nota psicológicamente. Y es más complicado con OnChartEvent(). Aquí entra en juego la psicología humana. El usuario del programa pulsa el botón GUI. Y no obtiene la respuesta que desea. ¿Cuál es su reacción? Una de las reacciones es que pulse el mismo botón por segunda vez. He hecho que una segunda pulsación en muchos de los botones desactive la funcionalidad conectada por ese botón. Me anticipo a tu sugerencia de hacer que la acción del botón se desactive de alguna otra manera. Pero existe el mismo programa para MT4. Allí funciona normalmente. Resultará que MT4 tiene un algoritmo de interacción con la interfaz gráfica, mientras que MT5 tiene otro diferente. Este comportamiento del mismo programa sólo provocará el rechazo.

Hice algo similar al traducir a MT5 - habilité la salida desde OnChartEvent(). No quiero mentir, por eso la GUI se estaba muriendo.

Y en mi caso la referencia a las series de tiempo en OnTimer() ocurre después de 5 minutos. Lo haré después de 2 minutos. Comprobaré lo que ocurrirá.

Artem, tus sugerencias también fueron útiles antes.

 
Vladimir Karputov:

Cuando se trabaja ya en H1 es un número insignificante de barras.

Por lo tanto: código reproducible, configuración del terminal(número de barras en el gráfico).


Sin este mínimo simplemente no hay nada que discutir - como hasta ahora es el aire.

Por favor, no interfieran más en los problemas que planteo en el foro.

La comunicación con usted no ha sido nada útil ni antes ni ahora.

Puedes escribir algo en otras ramas del foro. Y en mis sucursales por favor no participen.

 
Artyom Trishkin:

He hecho que todos los plazos se accedan cada dos minutos. La comprobación del acceso a los plazos enOnCalculate() no parece causar dificultades en el funcionamiento del programa.

Pero la comprobación enOnChartEvent() afecta al funcionamiento. En algunos casos, la interfaz gráfica de usuario se niega a funcionar.

Observaré cómo funciona el programa cuando se accede a todos los tf's una vez cada dos minutos.

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

Por cierto, he encontrado una diferencia más entre MT5 y MT4.

La vinculación de las herramientas gráficas a través de la interfaz gráfica se realiza con los números de los extremos de los zagzags o con los símbolos del marcado de ondas.

La vinculación se realiza cuando el programa "ve" un número o un símbolo. Permítanme explicar lo que significa esto. Al pasar el ratón por encima de un número o símbolo, aparece una información sobre la herramienta.

Si aparece el tooltip, el programa "ve" el número o símbolo. Si no hay información sobre la herramienta, el número o símbolo permanece invisible. La herramienta gráfica no se adjunta. Por lo tanto, la herramienta gráfica no se muestra en el gráfico.

Si, por ejemplo, el Pitchfork de Andrews ya está vinculado a este número o símbolo (no lo he comprobado con otras herramientas gráficas), el tooltip aparece en MT4. Pero el tooltip aparece muy pocas veces en MT5. Pero si oculto la horquilla de Andrews vinculada al número dado, el tooltip se mostrará normalmente.

Tengo la sensación de que si hay algunos otros objetos gráficos cerca del número, MT5 será menos sensible a la hora de mostrar el tooltip. Pero no descarto que ocurra porque MT5 tiene que hacer algunas actualizaciones de series temporales adicionales que no están disponibles en MT4. Estas actualizaciones adicionales pueden estar causando un retraso en algunas funciones de MT5. (Esta es mi fantasía, no conozco el funcionamiento interno de MT5).

Использование аналитических объектов - Графики котировок, технический и фундаментальный анализ - MetaTrader 5
Использование аналитических объектов - Графики котировок, технический и фундаментальный анализ - MetaTrader 5
  • www.metatrader5.com
Определение трендов, построение каналов, выявление циклов и уровней поддержки/сопротивления — все эти и многие другие задачи решаются при помощи аналитических объектов. Всего в торговой платформе доступно 46 таких инструментов. Среди них имеются геометрические фигуры, различные каналы, инструменты Ганна, Фибоначчи, Эллиотта и многое другое. В...
Razón de la queja: