Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 623

 
-Aleks-:
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().

 
Buenos días a todos! Por favor, ayúdenme a encontrar un Asesor Experto. Necesito un cuadro (caja) con la configuración del tiempo de la sesión, la división en tres órdenes en cada dirección, las funciones de trailing y stop loss. Ya me he ahogado en mi búsqueda en los espacios abiertos. ¡¡¡¡Estoy casi al borde del precipicio, sólo un poco más y empezaré a aprender el idioma y el editor para escribirlo yo mismo!!!! ¡¡¡AYUDA!!!
 
Alexey Kozitsyn:

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().

En otras palabras, deberíamos crear un indicador, 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 continuar trabajando, ¿correcto?
 
-Aleks-:
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é sería tan complicado... Vamos a repasarlo de nuevo. ¿Cuál es el objetivo? ¿Para obtener todo el historial disponible para los cálculos?
 
Alexey Kozitsyn:
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.

 
-Aleks-:

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.

 
Alexey Kozitsyn:

¿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?

 
-Aleks-:

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.

 
Alexey Kozitsyn:

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.

No había prestado atención al +1 , gracias, creo que no es una mala opción.
 
¿Puede decirme por qué puede ocurrir esto?

doble A;
int x, y;

x=100; y=3; A=x/y=33.000
Razón de la queja: