Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 623
![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
No, no lo necesito en el probador, sino cuando el terminal se ejecuta realmente en un gráfico - allí funcionará sólo si el historial contiene menos del número máximo de barras, ¿o me equivoco?
Y en tiempo real rates_total y Bars() se incrementarán cuando el indicador esté funcionando. En OnInit() no podrá obtener rates_total, porque el parámetro no se pasa a la función. En cualquier caso, debe comprobar el historial en OnCalculate().
Y en tiempo real rates_total y Bars() aumentarán cuando el indicador esté funcionando. No podrá obtener rates_total en OnInit(), porque el parámetro no se pasa a la función. El historial debe comprobarse en cualquier caso en OnCalculate().
Es decir, tenemos que hacer un indicador aparte, donde comprobemos el número de barras y si todo está bien, entonces llenar el buffer del gráfico con una, y luego esperar en el EA hasta que obtengamos una del indicador, y sólo entonces seguir trabajando, ¿no?
Por supuesto que no... ¿Por qué hacerlo tan complicado... Hagámoslo de nuevo. ¿Cuál es el objetivo? ¿Para obtener todo el historial disponible para el cálculo?
La situación es que para que el EA funcione correctamente, necesita calcular el historial una vez. Así, ocurre que cuando se enciende el terminal con este EA, hay un historial y, en consecuencia, se realiza la inicialización y el cálculo, pero este historial puede no ser todo y se cargará uno nuevo tras la conexión al terminal.
Creo que podemos trazar la conexión con el terminal y luego, si está disponible, comprobar los cambios de la última barra en HLCO y si está disponible, esperamos, y si no está disponible en x segundos, realizamos el cálculo.
La situación es que para que el EA funcione correctamente, necesita calcular el historial una vez. Así, ocurre que cuando se enciende el terminal con este EA, hay un historial y, en consecuencia, se realiza la inicialización y el cálculo sobre el mismo, pero este historial puede no ser todo y se cargará uno nuevo tras la conexión al terminal.
Creo que podemos trazar la conexión con el terminal y luego, si está disponible, comprobar los cambios de la última barra por HLCO y si está disponible, esperamos, pero si no está disponible en x segundos, realizamos el cálculo.
¿El Asesor Experto utiliza algún indicador personalizado?
Por ejemplo, puede hacer lo siguiente: comprueba el tamaño del historial a través de Bars(). Luego vea si Bars() > prev_bars+1 (el tamaño del historial en el tick anterior) - entonces reinicia todos los datos guardados y hace un recálculo completo del Asesor Experto desde cero. Esta construcción debe insertarse primero en OnTick().
No hay que preocuparse por la conexión con el terminal, las pausas, etc. La opción más sencilla suele ser la mejor.
¿El Asesor Experto utiliza algún indicador personalizado?
Por ejemplo, puede hacer esto: comprobar el tamaño del historial a través de Bars(). Luego vea si Bars() > prev_bars+1 (el tamaño del historial en el tick anterior) - entonces reinicia todos los datos guardados y hace un recálculo completo del Asesor Experto desde cero. Esta construcción debe insertarse primero en OnTick().
No hay que preocuparse por la conexión con el terminal, las pausas, etc. La variante más sencilla suele ser la mejor.
El Asesor Experto utiliza muchas cosas, incluyendo indicadores.
Entiendo que la variante sugerida recalculará en cada barra, ¿o me equivoco?
El Asesor Experto utiliza muchas cosas, incluyendo indicadores.
Entiendo que esta variante se recalculará en cada barra, ¿o me equivoco?
No, ¿por qué en cada bar? El Asesor Experto se recalculará completamente sólo si se añade más de 1 barra al historial. Si se añade una barra (se forma una nueva barra), no se realizará el recálculo completo.
Si se utilizan indicadores, y éstos tienen variables globales, deben ponerse a cero cuando se ejecutan por primera vez. De lo contrario, pueden aparecer artefactos en el gráfico / los indicadores pueden mostrarse incorrectamente.
No, ¿por qué en cada uno? Sólo se producirá un recálculo completo del EA si se ha añadido más de 1 barra a la historia. Si se añade una barra (se forma una nueva barra), no habrá un recálculo completo.
Si se utilizan indicadores, y éstos tienen variables globales, deben ponerse a cero cuando se ejecutan por primera vez. De lo contrario, pueden aparecer artefactos en el gráfico / los indicadores pueden mostrarse incorrectamente.
doble A;
int x, y;
x=100; y=3; A=x/y=33.000