![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Tengo una idea. Escribiré más tarde.
la idea está muerta.
Pediré a los desarrolladores que hagan algo como el sistema HistoryUpdated() para comprobar si todo el historial fue actualizado o no.
Los desarrolladores no te ayudarán porque no lo harán.
Ya lo dije: si la diferencia entre rates_total y prev_calculated es mayor que 1, entonces es historyUpdated
es mayor que 0, no que 1.
И? ¿Resuelve eso el problema?
¿O no es un problema para ti recalcular toda la historia en cada nueva barra?
es mayor que 0, no que 1.
И? ¿Resuelve eso el problema?
¿O no es un problema para ti recalcular toda la historia en cada nueva barra?
Se le ha dicho correctamente. Mayor que 1. Cuando aparece una nueva barra, la diferencia es de 1.
Y eso resuelve completamente el problema.
Un indicador normal tarda muy poco tiempo en recalcularse por completo. Menos de un segundo.
Se le ha dicho correctamente. Mayor que 1. Cuando aparece una nueva barra, la diferencia es de 1.
Y eso resuelve completamente el problema.
Un indicador normal tarda muy poco tiempo en recalcularse por completo. Menos de un segundo.
Sólo funciona si los búferes están a cero.
Sólo funciona si se ponen a cero los búferes.
Lo siento, pero déjame preguntar:
- ¿por qué hay que asignar rates_total y prev_calculated a variables separadas creadas en cada tic?
- En la sentencia condicional if() y en el bucle for(), ¿por qué hay que recalcular la diferencia de estas variables?
- ¿por qué no introducir una variable para la diferencia entre rates_total y prev_calculated, por ejemplo limit?
La aplicación puede ser diferente en función de la tarea. Los matices pueden ser diferentes. ¿Por qué no ves cómo lo ponen en práctica otros, según las diferentes condiciones? Incluyendo, y con la ayuda de la imprimación para entender, decidir, formar variantes aceptables para ti, dependiendo de las tareas?P.D. Añadiré más a esto:
Tu idea sobre la puesta a cero (counted=0) en el bloque del operador condicional if(){} me parece clara.
Por si acaso le quedara más claro a qué me refiero brevemente arriba, he aquí un extracto de la Documentación, de la sección ... Conceptos básicos del lenguaje / Funciones / Funciones de manejo de eventos:
... Si desde la última llamada de OnCalculate() los datos de los precios han cambiado (se ha bombeado un historial más profundo o se han rellenado los huecos del historial), entonces el valor del parámetro de entrada prev_calculado será puesto a cero por el propio terminal.
Sólo funciona si se ponen a cero los búferes.
No es necesario reiniciar nada.
Si se pone a cero prev_caclulated, el indicador se recalculará completamente. Y esto es correcto: no se sabe qué ha cambiado exactamente en la historia. Tal vez, algún agujero fue cargado, tal vez los pernos fueron limpiados en alguna parte. Es obligatorio recalcular por completo. En todos los demás casos, sólo se recalculará una última barra (cuando aparezcauna nueva barra, las dos últimas).
Lo siento, pero déjame preguntar:
- ¿Por qué hay que asignar los valores de rates_total y prev_calculated a variables separadas en cada tick?
- En la sentencia condicional if() y en el bucle for(), ¿recalcula la diferencia de estas variables?
- ¿por qué no introducir una variable para la diferencia entre rates_total y prev_calculated, por ejemplo, limit?
La aplicación puede ser diferente en función de la tarea. Los matices pueden ser diferentes. ¿Por qué no ves cómo lo ponen en práctica otros, según las diferentes condiciones? Incluyendo, y con la ayuda de la imprimación para entender, decidir, formar variantes aceptables para usted, dependiendo de las tareas?Gracias. Buen punto.
No lo es. Es para poder recalcular todo el historial si hay un hueco.
P.D. Añadiré más a esto:
Tu idea sobre la puesta a cero (counted=0) en el bloque del operador condicional if(){} me parece clara.
Por si acaso le quedara más claro a qué me refiero brevemente arriba, he aquí un extracto de la Documentación, de la sección ... Conceptos básicos del lenguaje / Funciones / Funciones de manejo de eventos:
... Si desde la última llamada de OnCalculate() los datos de los precios han cambiado (se ha bombeado un historial más profundo o se han rellenado los huecos del historial), entonces el valor del parámetro de entrada prev_calculado será puesto a cero por el propio terminal.
No es necesario reiniciar nada.
Si se pone a cero prev_caclulated, el indicador se recalculará completamente. Y esto es correcto: no se sabe qué ha cambiado exactamente en la historia. Tal vez, algún agujero fue cargado, tal vez los pernos fueron limpiados en alguna parte. Es obligatorio recalcular por completo. En todos los demás casos, sólo se recalculará una última barra (cuando aparezcauna nueva barra, las dos últimas).