[SOLVED] Los indicadores no se instancian correctamente cuando se llaman/crean desde un indicador de un marco de tiempo de trabajo diferente. - página 2
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Usted está repitiendo "fallando al instanciar", pero eso no es exacto. El indicador se instala en todos los casos.
El problema es que los datos no están disponibles de forma sincronizada, tienes que lidiar con ello. NO es un bug de MT5, es una CARACTERÍSTICA.
Propongo dejar la discusión y esperar la respuesta de SD.
Tal vez no articulé bien que por más bucles y esperas, no podrás acceder a los datos del indicador (de diferentes TF) hasta después de la primera pasada de (*edit) OnCalculate();
Estoy perfectamente dispuesto a aceptar que puedo estar equivocado, por lo que tengo una recompensa de 10 dólares si puedes demostrar lo contrario. Por favor... demuestre que estoy equivocado. Necesito una solución para este estúpido error, perdón, quiero decir "función".
Tal vez no articulé adecuadamente que no importa cuántos bucles y esperas, no podrá acceder a los datos del indicador (de diferentes TF) hasta después de la primera pasada de (*edit) OnCalculate();
Estoy perfectamente dispuesto a aceptar que puedo estar equivocado, por lo que tengo una recompensa de 10 dólares si puedes demostrar lo contrario. Por favor... demuestre que estoy equivocado. Necesito una solución para este estúpido error, perdón, quiero decir "función".
¿Por qué lo necesitas en la primera "pasada"? Si los datos necesarios no están disponibles, hay que esperar a que lo estén, eso es todo.
Porque estoy desarrollando un indicador que requiere el acceso a los datos del mismo indicador (mismo símbolo) en un marco de tiempo diferente. Dado que no se procesará hasta después del segundo tick, esto significa que el indicador no funcionará fuera de línea, y sólo funciona cuando llega el segundo tick.
¿Por qué tenemos que comprometernos por este error? ¿Por qué lo defiendes con tanta furia?
Porque estoy desarrollando un indicador que requiere el acceso a los datos del mismo indicador (mismo símbolo) en un marco de tiempo diferente. Dado que no se procesará hasta después del segundo tick, esto significa que el indicador no funcionará fuera de línea, y sólo funciona cuando llega el segundo tick.
¿Por qué tenemos que comprometernos por este error? ¿Qué hay para que lo defiendas con tanta furia?
???
Yo no defiendo nada, y desde luego no "furiosamente". Por favor, mantén la calma.
???
No defiendo nada, y mucho menos "furiosamente". Por favor, mantén la calma.
Foro sobre trading, sistemas automatizados de trading y prueba de estrategias de trading
[MQL5 BUG] Los indicadores no se instancian correctamente cuando se llaman/crean desde un indicador de diferente marco temporal de trabajo.
Alain Verleyen, 2017.01.31 12:46
Ok no me crees, estás en tu derecho, pero te equivocas
Sólo puedo sugerirte que escribas al ServiceDesk, y que por favor informes de su respuesta aquí.
OK.
He colgado este trabajo por si a alguien le interesa echarle un cable.
https://www.mql5.com/en/job/57516
Esto significa que si los datos están disponibles inmediatamente para un script o EA, entonces estarían igualmente disponibles para el indicador (como en este caso no es un problema de disponibilidad de datos). El indicador simplemente no se instala antes de la segunda pasada de OnCalculate() (también conocido como el primer tick)
Usted entiende la palabra "disponibilidad" demasiado literalmente. Mientras que algunos datos pueden existir en la memoria del terminal, el propio terminal puede contener alguna lógica de sincronización que bloquee las actualizaciones para cualquier marco temporal mientras se comprueban los datos subyacentes para un marco temporal (probablemente otro). O pueden bloquear las peticiones de datos de un indicador hasta que termine su propia creación (por favor, recuerde que los indicadores son gestionados por las llamadas asas, mientras que los expertos y los scripts no) y esto es lógico para mí. Estas son sólo suposiciones, que he hecho desde el punto de vista de los desarrolladores de MQ. Puedes preguntarles directamente a través de th service desk.
Su trabajo es imposible de realizar debido al punto 3:
3. Debe acceder al buffer en la inicialización
Esto va en contra de la arquitectura del terminal y de la documentación:
No se puede acceder a los datos del indicador justo después de su creación, ya que el cálculo de los valores del indicador requiere algún tiempo
Lea también la función CopyBuffer:
Nota
Cuando se solicitan datos del indicador, si las series de tiempo solicitadas aún no están construidas o necesitan ser descargadas del servidor, la función devolverá inmediatamente-1, pero se iniciará el proceso de descarga/construcción.
Cuando se solicitan datos de un Asesor Experto o un script, se iniciará la descargadesde el servidor, si el terminal no tiene estos datos localmente, o se iniciará la construcción de una serie temporal requerida, si los datos pueden ser construidos desde el historial local pero no están listos todavía. La función devolverá la cantidad de datos que estarán listos en el momento de la expiración del tiempo de espera.
Así, los expertos y los scripts se procesan de forma sincrónica hasta un tiempo de espera predefinido, pero los indicadores - de forma asincrónica.
En cuanto a tu tarea específica, se puede hacer fácilmente de otra manera. No eres el primero que construye un indicador en el indicador y quiere que funcione sin conexión. Utiliza un temporizador.
Lo intenté. No ha funcionado.
Publique una pregunta más específica con un código de ejemplo. Es posible que haya un error. El enfoque me funciona.