Errores, fallos, preguntas - página 2490

 
Slava:

¿Has leído atentamente mi cita en el post de abajo?

Este comportamiento siempre ha existido desde la introducción de la configuración del " número máximo de barras por gráfico", es decir, desde el inicio de MT4. Y hemos explicado muchas veces a lo largo de esos 15 años por qué no recortamos el número de barras según ese ajuste cada vez. Y ahora no recortamos cada vez.

Nadie lee la documentación. Pero es una paradoja. Todavía nos piden que escribamos algo más en la documentación que no leen.

Slava, no tengo ninguna queja. He leído con atención y no sólo su cita y esta

Foro sobre comercio, sistemas de comercio automatizados y prueba de estrategias de comercio

Bichos, errores, preguntas

Slava, 2019.06.29 18:25

rates_total siempre muestra el número de barras disponibles en el gráfico actual.

No entiendo el significado de su declaración

y esto

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

Bichos, errores, preguntas

Slava, 2019.06.29 18:42

Ahora mismo no tengo el terminal del cliente a mano para citar la ayuda. Desde el dispositivo móvil en dos clicshttps://www.metatrader5.com/ru/terminal/help/startworking/settings#max_bars

Párrafo especialmente destacado.

Para un cálculo más económico, los indicadores pueden tener más barras disponibles que las especificadas en el parámetro "Barras máximas en la ventana". A medida que llegan nuevas barras, las más antiguas no se eliminan inmediatamente de la caché de datos. Esto permite no recalcular el indicador completamente en cada nueva barra, sino sólo calcular adicionalmente sus valores para las nuevas barras.

He leído la documentación más de una vez. Pero he hecho fotos en el terminal recién estrenado. Sólo había 5000 barras en la ventana, las nuevas aún no han tenido tiempo de cargarse.

Por supuesto, no entiendo algo, por eso vuelvo a preguntar y trato de entender. Supongo que no habrá ningún cambio. Por favor, no tome mis declaraciones como una queja.

 
Igor Makanu:

La referencia no es correcta, es engañosa, escribíhttps://www.mql5.com/ru/forum/304239/page57#comment_11519307

En MQL5 los buffers en general funcionan como arrays habituales, en MT4 el terminal se ocupaba de los buffers - los restablecía a EMPTY_VALUE, luego ... No recuerdo dónde escribí sobre la diferencia entre los indicadores de MT5 y MT4

Tienes que borrar los buffers - los borras como un array normal, el terminal sólo establece el tamaño del array-buffer en sí.

Igor, ¿podrías explicarlo en ruso sencillo: si cada agujero del búfer del indicador se llenará con algunos valores, que sustituirán a la basura allí contenida, cuál es el propósito de forzar estos agujeros antes de llenarlos con los valores correctos? ¿Por la pérdida de velocidad de ejecución?

 
Alexey Viktorov:

Igor, ¿podrías explicarlo en ruso sencillo: si cada agujero del búfer del indicador se llenará con algunos valores que sustituirán a la basura allí contenida, cuál es el propósito de limpiar forzosamente estos agujeros antes de llenarlos con los valores necesarios? ¿Por la pérdida de velocidad de ejecución?

el llenado de "agujeros" es crítico sólo en un indicador con "flechas", en MT4 durante la inicialización del indicador estos "agujeros" se llenarán automáticamente por el valor EMPTY_VALUE

en MT5 debe hacerlo el programador

o en MT5 el programador debe llenar los buffers de los indicadores a través de la construcción if() else

Es decir, esto funcionará en MT4:

if(...) Buf[i] = high[i];

en MT5 tienes que escribir:

if(...) Buf[i] = high[i]; else Buf[i] = EMPTY_VALUE;

o en MT5 es necesario borrar los buffers de los indicadores, de lo contrario el indicador sacará "basura" del array, que está limitado por el buffer del indicador ...., cuando cambie el TF. es una cuestión de gusto cómo escribir y qué tener en cuenta


SZY: ¿velocidad? Bueno, mide la velocidad, en el 99% de los casos las funciones incorporadas son más rápidas, pero no hay diferencia de rendimiento entre llenar cada barra del bucle EMPTY_VALUE y una inicialización con ArrayInitialize(Buf,EMPTY_VALUE)

 
Igor Makanu:

el llenado de "agujeros" es crítico sólo en un indicador con "flechas", en MT4 durante la inicialización del indicador estos "agujeros" se llenarán automáticamente por el valor EMPTY_VALUE

en MT5 debe hacerlo el programador

o en MT5 el programador debe llenar los buffers de los indicadores a través de la construcción if() else

Es decir, esto funcionará en MT4:

en MT5 tienes que escribir:

o en MT5 es necesario borrar los buffers de los indicadores, de lo contrario el indicador sacará "basura" del array, que está limitado por el buffer del indicador ...., cuando cambie el TF. es una cuestión de gusto cómo escribir y qué tener en cuenta


Bien, mide la velocidad, en el 99% de los casos las funciones incorporadas corren más rápido, pero no hay diferencia de rendimiento entre llenar cada barra en el bucle EMPTY_VALUE e inicializarla una vez con ArrayInitialize(Buf,EMPTY_VALUE).

Todo esto es un regaño. Así fue, así lo quiero, es difícil cambiar mis hábitos y otras razones.

La construcción if else puede sustituirse fácilmente por

Buf[i] = условие ? high[i] : EMPTY_VALUE;
 
Alexey Viktorov:

Todo esto es un regaño. Así fue, así lo quiero, es difícil cambiar mis hábitos y otras razones.

La construcción if else se puede sustituir fácilmente por

Si me pongo quisquilloso, los consejos para aumentar el rendimiento en C++ o C# recomiendan no utilizar el "operador condicional ? : " Creo que una vez leí un artículo sobre Habra (no lo he probado, escribo lo más cómodo posible)

;)

 
Igor Makanu:

Si me pongo quisquilloso, el consejo sobre cómo mejorar el rendimiento en C++ o C# es no utilizar el "operador condicional ? : " Creo que una vez leí un artículo sobre Habra (no lo he probado, yo mismo escribo lo más cómodamente posible)

;)

El compilador no es idiota y optimiza mejor que un gurú en Habra.
 
Artyom Trishkin:
Pues el compilador de aquí no es idiota, y optimiza mejor que los "gurús" del hubr

En esas ocasiones siempre repito: "El sol sale por la mañana y se pone por la tarde...". - ¿Ves alguna lógica en esto? - Sí, es lógico, pero ¿hay información en mi frase? - No está ahí.

¿No lo probaré? : , máquina compiladora.... Hubr, bueno...

 
Igor Makanu:

¿No lo probaré? :

Probado en MT5:

2019.06.30 13:37:04.230 tst (EURUSD,H1) Probando if() cycles=99999999999999 tiempo=10859 ms

2019.06.30 13:37:15.116 tst (EURUSD,H1) Probando ? : ciclos=999999999999 tiempo=10891 ms

2019.06.30 13:38:05.348 tst (EURUSD,H1) Probando if() cycles=99999999999999 tiempo=10843 ms

2019.06.30 13:38:16.190 tst (EURUSD,H1) Probando ? : ciclos=999999999999 tiempo=10844 ms

2019.06.30 13:38:32.111 tst (EURUSD,H1) Probando if() cycles=9999999999999999 tiempo=10860 ms

2019.06.30 13:38:42.955 tst (EURUSD,H1) Probando ? : ciclos=999999999999 tiempo=10843 ms

Probado el MT4:

2019.06.30 13:46:09.087 tst EURUSD,H1: Probando ? : ciclos=999999999999 tiempo=33234 ms

2019.06.30 13:45:35.854 tst EURUSD,H1: Probando if() cycles=99999999999999 tiempo=32953 ms

2019.06.30 13:44:43.421 tst EURUSD,H1: Probando ? : ciclos=999999999999 tiempo=333298 ms

2019.06.30 13:44:10.094 tst EURUSD,H1: Probando if() cycles=99999999999999 tiempo=33016 ms

2019.06.30 13:42:56.925 tst EURUSD,H1: Probando ? : ciclos=999999999999 tiempo=33344 ms

2019.06.30 13:42:23.584 tst EURUSD,H1: Probando if() cycles=99999999999999 tiempo=32953 ms

¡Los desarrolladores de MT, como siempre en la cima del juego!
 
Hace tiempo que me he dado cuenta de que resaltar los nombres de las macros personalizadas en un proyecto grande no siempre funciona. Muchas macros definidas en otros archivos no se resaltan por alguna razón. Todavía no puedo averiguar el patrón. Todo lo que veo es que todas las macros definidas en un determinado archivo después de una determinada línea dejan de resaltarse en otros archivos. ¿Alguien más ha visto esto en sí mismo?
 
Alexey Navoykov:
Hace tiempo que me he dado cuenta de que el resaltado de los nombres de las macros definidas por el usuario en un proyecto grande no siempre funciona. Muchas macros definidas en otros archivos no se resaltan por alguna razón. Todavía no puedo encontrar un patrón. Todo lo que veo es que todas las macros definidas en un determinado archivo dejan de resaltarse en otros archivos después de una determinada línea. ¿Alguien más ha visto que esto le ocurre?

Me he dado cuenta de que si escribes como parámetro de alguna función, no se ilumina. Creo que esto es de un tipo de partido no completo. O cómo llamarlo de forma más precisa no lo sé.

Razón de la queja: