![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
Lógicamente, no debería ser igual a cero en absoluto, ¡no está claro por qué es así!
No debería ser igual a cero por lógica en absoluto, ¡no entiendo por qué ocurre así!
Ejecutado en el depurador en Si-9.18. El tiempo en los índices es de 2016 por alguna razón. Aunque el valor de i es 2189. En consecuencia, comienza el cálculo al principio del gráfico, donde no hay liquidez. El tiempo inicial entre el arranque y la parada es de 1 hora. Pero para esa hora, sólo hay un valor de tiempo. Lo encuentra tanto con la variable de inicio como con la de parada. En consecuencia, inicio = parada. Por supuesto, si los restas, obtienes cero. Todavía no he descubierto el resto.
Tienes d1 con números diminutos, yo evito esos problemas convirtiendo el precio a int, es decir, por ejemplo int bid=int((tick_array[0].bid+_Point/10)/_Point); seguro que a veces devuelve 0 si los cálculos se realizan en double
No discutamos d1 - si es necesario, pues es necesario, todo se cuenta correctamente allí. La pregunta es ¿por qué obtenemos el mismo valor para start_time y stop_time, así como para start_index y stop_index?
No discutamos d1 - si es necesario, pues es necesario, todo se cuenta correctamente allí. La pregunta es ¿por qué obtenemos el mismo valor para start_time y stop_time que para start_index y stop_index?
Después de otro cuelgue, el terminal deja de funcionar.... ¿Cómo puedo resucitarlo sin reinstalar?
Resultó estar colgado en la memoria - mató a la fuerza el proceso - se inició.
¿Cómo es posible que el tiempo se iguale? Todo funciona correctamente desde hace medio año...
Ejecutado en el depurador en Si-9.18. El tiempo en los índices es de 2016 por alguna razón. Aunque el valor de i es 2189. Por lo tanto, inicia el cálculo al principio del gráfico, donde no hay liquidez. El tiempo inicial entre el arranque y la parada es de 1 hora. Pero para esa hora, sólo hay un valor de tiempo. Lo encuentra tanto con la variable de inicio como con la de parada. En consecuencia, inicio = parada. Por supuesto, si los restas, obtienes cero. Todavía no he descubierto el resto.
Poner BarsUsed=100 en los parámetros de entrada.
Poner BarsUsed=100 en los parámetros de entrada.
Sí, así no se producen errores. Pero si te metes en algún instrumento ilíquido o en un momento ilíquido - sesión nocturna, por ejemplo, entonces puedes conseguir fácilmente 1 barra baja en una hora. Así, el límite = 0 está garantizado para ti. Y si la cotización es 2 - entonces el límite/2 seguirá dando 0 cuando se redondee.
Sí, no es un error. Pero si te metes en un instrumento sin liquidez o en un momento sin liquidez -por ejemplo, durante la sesión de la tarde, puede haber una barra baja en una hora-. Así, el límite = 0 está garantizado para ti. Y si la cotización es 2 - entonces el límite/2 seguirá siendo 0 cuando se redondee.
Tal vez, lo pensaré, gracias. Pero el problema global es otro.... El problema es que no es estable.
Depende de ti, prueba a dividir 0,0000099999 entre 2, por ejemplo
Impreso d1 - para mis propósitos es
De todos modos, ese no es el punto, gracias.