Errores, fallos, preguntas - página 1392

 
Ilya Malev:

...

De todos modos, se muestra de forma torcida que llamar a OnCalculate desde OnTimer funciona)

Hay que añadir la transmisión de valores correcta en las series temporales

El artículo muestra precisamente este ejemplo. )

Aquí hay otro ejemplo para pruebas con el mismo método:MQL5 Recipes - Development of Multicurrency Indicator for Price Divergence Analysis >>>

 
Karputov Vladimir:

La variable count debe incrementarse antes de salir de OnCalculate() - entonces esta variable contará correctamente todas las ejecuciones en OnCalculate.

No debería contar todas, sino sólo hasta el cálculo del Ishimoku. Durante todo ese tiempo, el recuento fue mayor o igual a 0 y luego a -1. En realidad, no importa. Lo importante es que

1) En el primer inicio del indicador, se llamó una vez (OnCalculate) y no se ha iniciado hasta el siguiente tick (en fines de semana y festivos hasta varios días), si no pulsamos el botón "Refresh".

2) En esta primera llamada, el indicador Ishimoku no ha tenido tiempo de calcular (y mucho menos indicadores más complejos)

3) Si se utiliza OnTimer en lugar de OnCalculate (o se llama a OnCalculate desde OnTimer), un usuario puede iniciar un indicador que se construirá automáticamente, de lo contrario tiene que pulsar el botón Actualizar (probablemente varias veces) o esperar a los próximos ticks. Lo cual es un inconveniente evidente, comparado con el mismo MT4.

Anatoli Kazharski:
Es bastante normal en los indicadores simples. Pero en las más complejas a veces no funciona correctamente. )
En mi opinión, es más fácil utilizar OnTimer en lugar de OnCalculate.
 
Ilya Malev:

Allí no había que contar todo, sino sólo hasta el cálculo del Ishimoku. Todo ese tiempo el recuento fue mayor o igual a 0 y luego -1. En general, no importa. Lo importante es que

...

La idea es que el usuario vea el número de entradas en OnCalculate. Al mismo tiempo, en el propio OnCalculate, cuando el resultado deCopyBuffer es superior a cero, se muestran mensajes sobre el éxito de la introducción de los valores en el buffer. Como resultado, el número de entradas exitosas en OnCalculate es visualmente visible.
 
Karputov Vladimir:
La idea es que el usuario vea el número de entradas en OnCalculate. En este caso, en el propio OnCalculate, cuando el resultado deCopyBuffer es mayor que cero, se emiten los mensajes sobre la recepción exitosa de valores en el buffer. Como resultado, visualmente podemos ver el número de entradas exitosas en OnCalculate.

Lo entiendo, es que ya hemos avanzado un poco más allá de este ejemplo. Se ha utilizado, ordenado y devuelto al tema principal. El ejemplo confirmó que desde la primera ejecución el cálculo no se produce en el fin de semana. Al menos a mí me lo ha confirmado. Habría tenido que hacer clic constantemente en "Actualizar". Personalmente, esto me parece inaceptable para los usuarios. Así que intentaré hacerlo a través de OnTimer.

 

No es posible esperar a que las series de tiempo estén listas en OnCalculate, porque todo se colgará. Por lo tanto, si no está listo, hacemos un EventTimer durante un milisegundo y comprobamos la disponibilidad en OnTimer. Tan pronto como la serie de tiempo esté lista, llamamos a OnCalculate y matamos el temporizador con KillTimer.

Tengo otra pregunta, ¿cómo puedo estar 100% seguro de que todas las series temporales requeridas están listas o no?

 

Parece que OnTimer en los indicadores, que son llamados desde otros indicadores, no se ejecuta en absoluto. Por lo tanto, no podrá actualizarlos a través de OnTimer. Parece que tengo que aguantar docenas de clics innecesarios en el gráfico "Refresh" durante la operación, en comparación con MT4.

Y como mala suerte se hará cada vez usando el ratón desde el menú, porque no hay tal opción en la Barra de Herramientas, ni hay una tecla de acceso rápido para ello. Y hay indicadores "pesados", que se construyen mucho más allá de 1 segundo.

 
Ilya Malev:

... Y hay indicadores "pesados" que tardan mucho más de 1 segundo en construirse.

Me he encontrado con el problema de los indicadores "pesados". Mira los enlaces en orden - te interesará.

El punto clave - un indicador pesado para un símbolo ralentiza el trabajo de todos los EAs en este símbolo.Incluso en otro chat!!! Los indicadores pesados son malvados :)

2)Un tema con una descripción y opciones para resolver el problema

3.la solución del problema dentro del Mercado

 
Andrey Miguzov:

Se han encontrado con el problema de los indicadores "pesados". Echa un vistazo a los enlaces en orden - te interesará.

No necesito intercambiar datos entre los EAs y los indicadores, y los propios indicadores, aunque son "pesados" en parte, pero realizan cálculos relativamente largos sólo en el momento del cálculo de toda la historia al inicio.

El problema es que no puedo esperar a que se calculen todos los demás indicadores utilizados en este indicador en el primer inicio de OnCalculate, y el propio OnCalculate se llama de nuevo sólo en el siguiente tick, lo que no ocurre, por ejemplo, en el fin de semana. No se puede utilizar OnTimer en lugar de (o junto con) OnCalculate, porque no será llamado en los indicadores que no fueron llamados por un usuario, pero por ejemplo fueron llamados desde otro indicador usando iCustom (es hasta ahora según mis pruebas). Me gustaría encontrar una solución para que el indicador espere automáticamente el cálculo de todos los indicadores utilizados en él y proporcione información sin la interferencia del usuario (sin pulsar regularmente el botón "Actualizar" del menú desplegable del gráfico, si la frecuencia de nuevos ticks no es suficiente para ello).

 
Ilya Malev:

No necesito intercambiar datos entre los Asesores Expertos y los indicadores, y los propios indicadores, aunque son "pesados" en parte, pero realizan cálculos relativamente largos sólo en el momento del cálculo de todo el historial al inicio.

El problema es que no puedo esperar a que se calculen todos los demás indicadores utilizados en este indicador en el primer inicio de OnCalculate, y el propio OnCalculate se llama de nuevo sólo en el siguiente tick, lo que no ocurre, por ejemplo, en el fin de semana. No se puede utilizar OnTimer en lugar de (o junto con) OnCalculate, porque no será llamado en los indicadores que no fueron llamados por un usuario, pero por ejemplo fueron llamados desde otro indicador usando iCustom (es hasta ahora según mis pruebas). Me gustaría encontrar una solución, que el indicador fuera capaz de esperar automáticamente el cálculo de todos sus indicadores y proporcionar información sin la intervención del usuario (sin pulsar regularmente el botón "Actualizar" del menú desplegable del gráfico, si la frecuencia de nuevos ticks no es suficiente para ello).

Si la tarea está planteada de esta manera, realmente no es necesario.

Pero podemos crear un Asesor Experto que creará indicadores, recibirá datos de ellos, procesará los datos y pasará el resultado al visualizador de indicadores. Entonces no habrá todos estos problemas que has descrito. Y muchos otros problemas también...

La solución no es muy agradable, pero ayuda a deshacerse de los problemas descritos.

 

HOLA, ¿PODRÍAIS ACONSEJARME, CUANDO ABRO UNA CUENTA REAL EN MT5, CUÁNTO TIEMPO TARDA UN EMPLEADO DE LA EMPRESA EN LLAMARME Y COMPLETAR EL PROCEDIMIENTO DE APERTURA DE LA CUENTA?