Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1689
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
Si no te gusta el "-1", puedes hacer esto.
No, no se puede - el programa se bloqueará si se accede a la matriz de esa manera.
En el mejor de los casos, si accede a sus matrices internas, perderá los datos que necesita, o simplemente no los alcanzará en el bucle.
Básicamente es simple, su único resume todas las órdenes desiguales entre los diferentes magos...
Por ejemplo, hay 3 órdenes
La primera iteración de magic=1 unique=0, al final de la iteración unique será=2.
La segunda iteración magik=2unique=2, al final de la iteraciónunique será=3
Como 3>=número de todos los pedidos, el bucle while se romperá... Y la magia =3 nunca se comprobó... Así que magia =2 de nuevo y así con todo...
El primer orden se da mágico =1 por defecto. Entonces el bucle entra en acción:
Inicio de la iteración magic = 1 unique = 0, al final (cuando ya hay una orden con magic = 1) magic = 1 sigue siendo 1 y unique = 0
Segunda iteración magic = 2 unique = 0, al final magic = 2 y unique = 1 (no hay coincidencia) y la retorn se da a la segunda orden magic = 2.
La tercera debería ser igual...
Quería imprimir todo el proceso, pero algo salió mal:
En el primer orden se da por defecto magic = 1. Entonces se inicia un bucle:
Inicio de la iteración magic = 1 unique = 0, al final (cuando ya hay una orden con magic = 1 ) magic sigue siendo 1 y unique = 0
Segunda iteración magic = 2 unique = 0, al final, magic = 2 y unique = 1 (no hay coincidencia) y la retorn se asigna a la segunda orden magic = 2.
La tercera debería ser igual...
Quería imprimir todo el proceso, pero algo salió mal:
Aspirar amás: TODOS los lenguajes de programación.
Es sencillo: en los lenguajes de programación, la cuenta empieza en cero. La primera celda de un array tendrá un índice 0. Por lo tanto, hay que hacer un bucle inverso ANTES del cero INCLUYÉNDOLO. Es decir, >=0
OrdersTotal() da como resultado, por ejemplo, 10. Y empiezas un bucle desde 10, mientras que el último índice del array es 9 (¿recuerdas que empezamos desde cero?). ¿Y qué ocurrirá cuando se acceda a una celda de un array inexistente? Así es - el programa se bloqueará por un error crítico, porque has entrado en una zona de memoria no asignada, más allá de los límites del array.
Son muletas sólidas sin duda. Lee, aprende y todo llegará a ti.
Hay toneladas de cursos gratuitos y buenos sobre C/C++.
Mql está cerca de ellos y puedes aprender libremente. Afortunadamente, no se necesitan conocimientos profundos. Pero al menos la sintaxis del lenguaje y los fundamentos básicos de los algoritmos.
De lo contrario se producen tonterías en el tema, en lugar de consultas sobre la plataforma y los algoritmos, diálogos a nivel de escuelas primarias - dónde poner ; qué es un bucle y por qué los índices son 0.
Por ejemplo, hay un sitio intuit.ru - hay cursos sobre C y algoritmos, tómate tu tiempo, un par de semanas como máximo. Al mismo tiempo puedes conseguir un papel :-)
De lo contrario se producen tonterías en el tema, en lugar de consultas sobre la plataforma y los algoritmos, diálogos a nivel de escuelas primarias - dónde poner ; qué es un bucle y por qué los índices son 0.
Por ejemplo, hay un sitio intuit.ru - hay cursos sobre C y algoritmos, tómate tu tiempo, un par de semanas como máximo. Es posible que te den un papel al mismo tiempo:-)
¿Así?
OrdersTotal() da por ejemplo 10. Y empiezas el bucle desde 10. Y el último índice del array es 9 (¿recuerdas que estamos contando desde cero?). ¿Y qué ocurrirá cuando se acceda a una celda de un array inexistente? Correcto - el programa se bloqueará por un error crítico, porque ha entrado en una zona de memoria no asignada, más allá de los límites del array.
Me corrijo... No habrá un error crítico, sólo el booleano OrderSelect devolverá false... y eso es todo... Pero, por supuesto, es mejor evitarlo... Porque si se utilizan características de código incorrectas, es difícil predecir posibles errores...
En el primer orden se da por defecto magic = 1. Entonces se inicia un bucle:
Inicio de la iteración magic = 1 unique = 0, al final (cuando ya hay una orden con magic = 1 ) magic = 1 y unique = 0
Segunda iteración magic = 2 unique = 0, al final magic = 2 y unique = 1 (no hay coincidencia) y el retorn se asigna a la segunda orden magic = 2.
La tercera debería ser igual...
Sólo veo que el relleno de únicos va muy rápido y llega al límite, y la magia apenas crece... En general, era un error utilizar la misma variable tanto para el control del bucle como para la lógica dentro del bucle donde esta variable se infla...
Imprimir para encontrar una solución en este contexto, pero yo sugeriría simplemente reformular el problema... Por ejemplo encontrar el máximo magik en las órdenes por el bucle y devolverlo con +1, esa sería la solución simple correcta.
Se puede hacer de esta manera, el código se llama según sea necesario, por lo que su peso no es un problema
Para la prueba utilicé el sistema de compra/venta
Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias
Cualquier pregunta de los novatos sobre MQL4 y MQL5, consejos y discusión sobre algoritmos y códigos
Vitaly Muzichenko, 2021.10.19 23:08
Lo corregiré un poco. No habrá ningún error crítico, sólo el booleano OrderSelect devolverá false... y eso es todo... Pero, por supuesto, es mejor evitarlo... Porque si las características del código no se utilizan correctamente, es difícil predecir las posibles trampas...
Sólo veo que lo único se llena a un ritmo muy rápido y llega a su límite, mientras que la magia apenas crece... Generalmente era un error utilizar la misma variable tanto para el control del bucle como para la lógica dentro del bucle, donde esta variable infla...
Imprimir para encontrar una solución en este contexto, pero yo sugeriría simplemente reformular el problema... Por ejemplo encontrar el máximo magik en las órdenes por el bucle y devolverlo con +1, esa sería la solución simple correcta.
Se puede hacer de esta manera, el código se llama según sea necesario, por lo que su peso no es un problema
Para la prueba utilicé el sistema de compra/venta