Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1884
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 estoy discutiendo. "Los grises se muestran en la foto de este post.
Sin el material de origen, estos son los
Bueno, yo estaba hablando de "estos". Cuando tuve un desbordamiento y los indicadores no se mostraban, no miré lo que aparecía en el menú que se muestra en la captura de pantalla del post que mencionas. No puedo decir nada con seguridad aquí.
Pero si los indicadores no están en el navegador, pero sí en la carpeta, significa que los nuevos no aparecerán en el navegador hasta que se eliminen algunos de los antiguos de la carpeta.
He estado allí, he hecho eso. No soy el único.
Quería evitar la necesidad de redimensionar manualmente el array dinámico simplemente asignándolo como un buffer indicador. Pero no puedo deshacerme de ArrayResize() como si se tratara de un array dinámico de búfer indicador cuyo tamaño debe ser controlado por el propio terminal y que no debe ser redimensionado manualmente:
https://www.mql5.com/ru/docs/series/bufferdirection:
Индикаторный буфер представляет из себя динамический массив типа double, размером которого управляет клиентский терминал с тем, чтобы он всегда соответствовал количеству баров, на которых индикатор рассчитывается. Обычный динамический массив типа double назначается в качестве индикаторного буфера с помощью функции SetIndexBuffer(). Для индикаторных буферов не требуется задавать размер с помощью функции ArrayResize(), исполняющая система терминала сама позаботится об этом.
Vamos a https://www.mql5.com/ru/docs/array/arrayisdynamic, ejecutamos el código y de repente descubrimos que:
2022.01.24 21:25:27.543 t (NZDUSD,D1) 3. Comprobación de la memoria intermedia del indicador:
2022.01.24 21:25:27.543 t (NZDUSD,D1) Tamaño antes de la liberación de memoria = 7278
2022.01.24 21:25:27.543 t (NZDUSD,D1) Esto es un array dinámico = Ninguno
2022.01.24 21:25:27.543 t (NZDUSD,D1) Tamaño tras la liberación de memoria = 0
al mismo tiempo:
Miro en el libro y veo un higo. ¿O hemos sido engañados todo este tiempo?
¿O tal vez es dinámico una vez (en la primera inicialización) y luego eso es todo?
No puedo deshacerme de ArrayResize(), que supuestamente es una matriz dinámica de búferes indicadores cuyo tamaño debería ser controlado por el propio terminal y que supuestamente no necesita ser redimensionado manualmente:
https://www.mql5.com/ru/docs/series/bufferdirection:
Vamos a https://www.mql5.com/ru/docs/array/arrayisdynamic, ejecutamos el código y de repente descubrimos que:
Al mismo tiempo:
Miro en el libro y veo un higo. ¿O hemos sido engañados todo este tiempo?
¿O tal vez es dinámico una vez (en la primera inicialización) y luego eso es todo?
22:23:17.002 Dynamic EURCAD,H1: +============================+
0 22:23:17.002 Dynamic EURCAD,H1: 1. Comprobación de una matriz dinámica:
0 22:23:17.002 Dynamic EURCAD,H1: Tamaño antes de la liberación de memoria = 100
0 22:23:17.002 Dynamic EURCAD,H1: Esto es Dynamic Array = Yes
0 22:23:17.002 Dynamic EURCAD,H1: Tamaño después de liberar la memoria = 0
0 22:23:17.002 Dynamic EURCAD,H1: 2. Comprobación de la matriz estática:
0 22:23:17.002 Dynamic EURCAD,H1: Tamaño antes de liberar memoria = 100
0 22:23:17.002 Dynamic EURCAD,H1: Esto es un array dinámico = Ninguno
0 22:23:17.002 Dynamic EURCAD,H1: Tamaño después de liberar la memoria = 0
0 22:23:17.002 Dynamic EURCAD,H1: 3. Compruebe el búfer del indicador:
0 22:23:17.002 Dynamic EURCAD,H1: Tamaño antes de liberar memoria = 2725
0 22:23:17.002 Dinámica EURCAD,H1: Esta es una matriz dinámica = Sí
0 22:23:17.002 Dynamic EURCAD,H1: Tamaño después de la liberación de memoria = 0
0 22:23:24.754 Dynamic EURCAD,H1: uninit reason 1
0 22:23:24.758 Indicador personalizado Dynamic EURCAD,H1: eliminado
Esto es a las 4.
Quería evitar la necesidad de redimensionar manualmente el array dinámico simplemente asignándolo como un buffer indicador. Pero no puedo deshacerme de ArrayResize() como si se tratara de un array dinámico de búfer indicador cuyo tamaño debe ser controlado por el propio terminal y que no debe ser redimensionado manualmente:
https://www.mql5.com/ru/docs/series/bufferdirection:
Vamos a https://www.mql5.com/ru/docs/array/arrayisdynamic, ejecutamos el código y de repente descubrimos que:
Al mismo tiempo:
Miro en el libro y veo un higo. ¿O nos han engañado todo este tiempo?
¿O tal vez es dinámico una vez (en la primera inicialización) y luego ya está?
sí, entonces eso es todo :-)
...después de SetIndexBuffer es imposible utilizar ArrayResize y desde el punto de vista del programa, el array es estático, con un tamaño predefinido (controlado externamente)
22:23:17.002 Dynamic EURCAD,H1: +============================+
0 22:23:17.002 Dynamic EURCAD,H1: 1. Comprobación de una matriz dinámica:
0 22:23:17.002 Dynamic EURCAD,H1: Tamaño antes de la liberación de memoria = 100
0 22:23:17.002 Dynamic EURCAD,H1: Esto es Dynamic Array = Yes
0 22:23:17.002 Dynamic EURCAD,H1: Tamaño después de liberar la memoria = 0
0 22:23:17.002 Dynamic EURCAD,H1: 2. Comprobación de la matriz estática:
0 22:23:17.002 Dynamic EURCAD,H1: Tamaño antes de liberar memoria = 100
0 22:23:17.002 Dynamic EURCAD,H1: Esto es un array dinámico = Ninguno
0 22:23:17.002 Dynamic EURCAD,H1: Tamaño después de liberar la memoria = 0
0 22:23:17.002 Dynamic EURCAD,H1: 3. Compruebe el búfer del indicador:
0 22:23:17.002 Dynamic EURCAD,H1: Tamaño antes de liberar memoria = 2725
0 22:23:17.002 Dinámica EURCAD,H1: Esta es una matriz dinámica = Sí
0 22:23:17.002 Dynamic EURCAD,H1: Tamaño después de la liberación de memoria = 0
0 22:23:24.754 Dynamic EURCAD,H1: uninit reason 1
0 22:23:24.758 Indicador personalizado Dynamic EURCAD,H1: eliminado
Esto es a las 4.
¡Fantástico! ¿Qué es esta magia? Acabo de comprobar en EURCAD,H1 - de nuevo no.
¿Y qué es el 4? Sólo hay tres puntos en el ejemplo.
¡Fantástico! ¿Qué es esta magia? Acabo de comprobar en EURCAD,H1 - "No" de nuevo.
¿Y qué es el 4? Sólo hay tres puntos en el ejemplo.
Terminal MT4
¡Fantástico! ¿Cuál es la magia? Acabo de comprobar en EURCAD,H1 - "No" de nuevo.
¿Y qué es el 4? Sólo hay tres puntos en el ejemplo.
0 23:33:06.088 test (EURUSD,D1) +============================+
0 23:33:06.088 test (EURUSD,D1) 1. Comprobación de la matriz dinámica:
0 23:33:06.088 test (EURUSD,D1) Tamaño antes de la liberación de memoria = 100
0 23:33:06.088 test (EURUSD,D1) Esta es una matriz dinámica = Sí
0 23:33:06.088 test (EURUSD,D1) Tamaño tras la liberación de memoria = 0
0 23:33:06.088 test (EURUSD,D1) 2. Prueba de matriz estática:
0 23:33:06.088 test (EURUSD,D1) Tamaño antes de liberar memoria = 100
0 23:33:06.088 test (EURUSD,D1) Este es un array dinámico = Ninguno
0 23:33:06.088 test (EURUSD,D1) Tamaño tras la liberación de memoria = 100
0 23:33:06.088 test (EURUSD,D1) 3. Comprobar el buffer del indicador:
0 23:33:06.088 test (EURUSD,D1) Tamaño antes de liberar memoria = 1054
0 23:33:06.088 test (EURUSD,D1) Esto es un array dinámico = Ninguno
0 23:33:06.088 test (EURUSD,D1) Tamaño tras la liberación de memoria = 0
Terminal MT5, sin pensamientos.
Quería evitar la necesidad de redimensionar manualmente el array dinámico simplemente asignándolo como un buffer indicador. Pero no puedo deshacerme de ArrayResize() como si se tratara de un array dinámico de búfer indicador cuyo tamaño debe ser controlado por el propio terminal y que no debe ser redimensionado manualmente:
https://www.mql5.com/ru/docs/series/bufferdirection:
Vamos a https://www.mql5.com/ru/docs/array/arrayisdynamic, ejecutamos el código y de repente descubrimos que:
Al mismo tiempo:
Miro en el libro y veo un higo. ¿O hemos sido engañados todo este tiempo?
¿O tal vez es dinámico una vez (en la primera inicialización) y luego eso es todo?
La matriz del buffer es dinámica. En MQL, las matrices dinámicas tienen signos de objetos, por lo que entendí al trabajar con ellas (como en los lenguajes de ultra alto nivel). Pero si declaras un array dinámico como un buffer (usando SetIndexBuffer), esta área de memoria se reservará. Por eso la mayoría de las funciones estándar no pueden cambiar su tamaño. A veces utilizo matrices de objetos como topes indicadores. Y si lo hago, la memoria de dichas matrices se libera en el destructor del objeto. Así, se permite la liberación de la memoria del buffer indicador por parte de la propia aplicación(u objeto). Pero esto no significa que el array pueda ser liberado justo durante el funcionamiento del indicador. Todo debe hacerse con prudencia.
Por la tarde
Me podéis aconsejar, estoy intentando escribir un Expert Advisor, y cuando lo pruebo ocurre una cosa extraña...
Tengo una función
¿Cuál es la situación, empiezo una instancia de la EA que se ejecuta en un gráfico, y ejecutar el segundo en el modo de depuración en el mismo gráfico con MT4
Los datos de entrada para la función es la misma, pero los datos de salida es diferente!!!? Yo no entiendo algo, parece...(
¡¡aconséjame en qué dirección buscar la información!!
PS: calculado la diferencia de exactamente 2,5 veces la salidaTengo una función
¿Cuál es la situación, ejecuto una instancia de la EA en un gráfico, y ejecutar el segundo en el modo de depuración en el mismo gráfico con MT4
Los datos de entrada para la función es la misma, pero los datos de salida es diferente!!!? Yo no entiendo algo, parece...(
¿puede decirme en qué dirección buscar la información?
PS: calculado la diferencia de exactamente 2,5 veces la salidaSe trata de la fórmula para calcular el ángulo. En el código se puede ver que para su cálculo se utiliza sólo una coordenada y algún coeficiente, cuya finalidad no está clara. ¿Qué es esto? Por favor, explique qué datos está utilizando para calcular el ángulo.