Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1414
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
o hacer una función de impresión de matrices por separado:
Y llámalo desde cualquier lugar
Alexey, he estado mucho tiempo en silencio, pero no veo esto tranquilamente... ¿Por qué usar IntegerToString() cuando una conversión de tipo explícita es mucho más simple y menos costosa...
no sé, la costumbre :)
o hacer una función de impresión de matrices por separado:
Y llamar desde cualquier lugar
Muchas gracias por su comprensión y aclaración. Me detengo a estudiar y comprender la información que es nueva para mí.
Alexey, he estado mucho tiempo en silencio, pero no lo veo tranquilo... ¿Por qué usar IntegerToString() cuando una conversión de tipo explícita en este caso es mucho más fácil y menos costosa...
Y gracias también por sus valiosas aportaciones.
Puedes decirme por favor dónde buscar y leer sobre la creación de una ventana externa para EA.
en el foro y en las publicaciones sobre C#, Delphi y todo lo demás...
o hacer una función de impresión de matrices por separado:
Y llamar desde cualquier lugar
He decidido hacer una función de impresión de matrices personalizada por separado. O más bien, no hacer uno, utilizar el ( PrintArray() ) Lo cual ya has hecho.
¿Qué he hecho?
He colocado la llamada a la función PrintArray() del usuario dentro de la función OnTick()... como se describe en el tutorial de Kovalev.
2. He colocado el cuerpo de la función PrintArray() fuera de la función OnTick()... ... como se describe en el tutorial de Kovalev.
Todas las nuevas variables del cuerpo de esta función son locales. Se declaran e inicializan dentro de esta función.
No he hecho ningún cambio en su función. Pero el compilador da 6 errores por alguna razón. Y todos ellos están relacionados con la función del usuario.
Les agradecería mucho que me dijeran qué he hecho mal.
Gracias.
He decidido hacer una función de impresión de matrices personalizada por separado. O más bien, no hacer uno, utilizar el ( PrintArray() ) Lo cual ya has hecho.
¿Qué he hecho?
He colocado la llamada a la función PrintArray() del usuario dentro de la función OnTick()... como se describe en el tutorial de Kovalev.
2. He colocado el cuerpo de la función PrintArray() fuera de la función OnTick()... ... como se describe en el tutorial de Kovalev.
Todas las nuevas variables del cuerpo de esta función son locales. Se declaran e inicializan dentro de esta función.
No he hecho ningún cambio en su función. Pero el compilador produce 6 errores por alguna razón. Y todas ellas están relacionadas con una función del usuario.
Le estaré muy agradecido si me dice qué he hecho mal.
Gracias.
No recuerdo exactamente y me da pereza comprobarlo. Prueba a añadir corchetes
Aleksei Stepanenko:
Creo que por fin lo he descubierto (soy un poco lento) ......
En la primera iteración, la variable de cadena str está vacía. Los caracteres =+ ordenan a str que se asigne a sí misma vacía (sin valores) y a sí misma vacía añada una cadena con valores, a saber"--LoY["+IntegerToString(r)+"]--, "+DoubleToString(LoY[r],4)+",";. El valor de esta cadena es " --LoY[0]--, --1.6104-- ". Después de estas operaciones , str obtiene el valor "--LoY[0]--, --1.6104-- " en la primera iteración. Según he entendido en su terminología, esto se llama el primer elemento.
En la segunda iteración str ya tiene el primer elemento con el valor " --LoY[0]--, --1.6104-- " Los caracteres =+ indican a str que se asigne con el valor del primer elemento y que mismo con el valor del primer elemento, añade una cadena con otros valores, a saber "--LoY["+"+IntegerToString(r)+"]--, "+DoubleToString(LoY[r],4)+",";. El valor de esta cadena ya es " --LoY[1]--, --1.6105--". Después de estas operaciones, str obtiene el valor"--LoY[0]-- --1.6104-- --LoY[1]-- --1.6105--" en la segunda iteración.Es decir, str tiene el segundo elemento y en la trigésima iteración str contendrá 30 elementos con diferentes valores de los elementos del array.
Cuando el bucle termine, la variable de cadena str con 30 elementos se imprimirá fuera del bucle una vez.
Me costó mucho tiempo entender este algoritmo porque cuando hablabas de la suma sólo me fijé en el signo rojo "--LoY["+IntegerToString(r)+"]--,"+DoubleToString(LoY[r],4)+", no en str+=
Así que sigue siendo un misterio para mí qué papel juegan esos pluses rojos "--LoY["+IntegerToString(r)+"]--, "+DoubleToString(LoY[r],4)+" en este algoritmo
Gracias por su ayuda.
No lo recuerdo exactamente y me da pereza comprobarlo. Prueba a añadir corchetes
He añadido corchetes void PrintArray(double &eArray[]) El compilador no ha mostrado ningún error ni advertencia.
PERO..... la función Print() no imprimió una sola vez por alguna razón.
Entiendo tu pereza, porque yo también soy así. Si no te da pereza y mi entusiasmo lo sustituye, te agradeceré que me digas qué más falla en la función personalizada.
Gracias por su ayuda y disculpe las molestias.