Autoaprendizaje del lenguaje MQL5 desde cero - página 47

 

Vladimir Simakov:

Mi compañero miró esta mierda y dijo: 250.000 dólares para mí y 75.000 dólares para cada uno de mis dos chatarreros, y reescribiremos esta mierda en seis meses o nos desharemos de ella.

la solución es la correcta, a juzgar por el montaje, con el enfoque descrito siempre habrá problemas con los GP.

 
MrBrooklin:

He leído todos los posts sobre las variables globales y he entendido lo que todos los participantes en esta discusión intentaban decirme. Aprenderé a escribir el código del programa sin utilizar variables globales. Gracias a todos por estos consejos constructivos.

Sinceramente, Vladimir.

Los programadores tienen miedo de utilizar variables globales por los errores que se pueden cometer al cambiar sus valores. Esto crea una situación en la que un error es difícil de localizar, porque cada función puede cambiarlos. Por supuesto, sólo deben existir aquellas variables en el ámbito global que todas las funciones del programa deben ver. No puede ser de otra manera.

Siempre me ha gustado utilizar variables globales, porque aseguran un rápido crecimiento de la funcionalidad, y el programa se convierte en una enorme y activa obra. La gente suele culparme por la forma en que escribo el código, pero por eso es una obra de construcción: la limpias después de que el trabajo básico de construcción está hecho, y cuando la casa está terminada, puedes empezar a alicatar, pintar, limpiar la zona. Hasta entonces, la prioridad es montar el encofrado y verter el hormigón).

Sin embargo, los programadores piensan de forma diferente. Limpiarán" y "fregarán" su código, aunque sean dos líneas y media. Se fregará el código aunque tenga dos líneas y media, pero brillará como una moneda nueva). Esta actitud ante el código se justifica por su profesión de la que viven, pero desde el punto de vista creativo, son rígidos y poco desarrollados. Así es...

Mi consejo: aprende a escribir correctamente, pero a veces permítete alejarte de las reglas y experimentar para obtener una experiencia más variada. Esto le ayudará en su aprendizaje y aprenderá más rápidamente.
 
MrBrooklin:

Sigo estudiando el lenguaje de programación MQL5. Vuelvo a pegar el código revisado del script, teniendo en cuenta los consejos de los participantes de este hilo. He probado el script en todos los modos. No se ha detectado ningún problema. Para empezar, he aplicado el número mínimo de parámetros de entrada. El código del script está escrito en inglés, los comentarios al código están en ruso, para que sea más fácil de digerir. Como he prometido antes, he intentado describir el script de forma comprensible para un alumno de 1º de la escuela de programación.

Espero haber hecho exactamente lo que me dijeron los participantes de este hilo, pero puedo estar equivocado.

Saludos, Vladimir.

Es genial que hayas descubierto cómo y dónde mover la variable global bool enough_time tú mismo. Estás progresando.
 
Реter Konow:
Es genial que hayas descubierto cómo y dónde mover la variable global bool_timе. Estás haciendo un gran trabajo.

Gracias, Peter, por tu apoyo y ayuda. He movido las variables globales dentro de la función gracias a los consejos que me dieron antes los participantes de este hilo. Ahora, cuando la información está ordenada en mi cabeza, es mucho más fácil comprender las cosas nuevas.

Saludos, Vladimir.

 

¡Buenos días a todos y buen humor!

Estimados expertos en programación Me gustaría expresar mi más sincero agradecimiento por todas las sugerencias y consejos constructivos que comparten conmigo.

Sinceramente, Vladimir.

 
MrBrooklin:

¡Buenos días a todos y buen humor!

Estimados expertos en programación Me gustaría expresar mi más sincero agradecimiento por todas las sugerencias y consejos constructivos que comparten conmigo.

Sinceramente, Vladimir.


Te mueves rápido ... :-)
Es por mi formación técnica superior básica, si no me equivoco...

 
Aleksey Masterov:

Te estás moviendo rápido... :-)
Es por una educación técnica superior básica, si no me equivoco...

Hola Alexey! Sí, así es, tengo una educación técnica superior soviética relacionada con la automatización de procesos en la producción y experiencia como ingeniero electrónico en una organización que se dedicaba, en esos mismos tiempos soviéticos, a reparar ECMs.

Saludos, Vladimir

 
MrBrooklin:

Hola Alexey! Sí, así es, tengo educación técnica superior relacionada con la automatización de los procesos en la producción y experiencia laboral como ingeniero electrónico en la organización que se dedicaba, en los mismos tiempos soviéticos, a la reparación de ECM.

Sinceramente, Vladimir.


Se nota inmediatamente en ti, para mí... Al nivel y la velocidad de tus progresos en este "arte" de la traducción de las fantasías en código, ¡sobre todo de las filosóficas como en tu último guión! :-)
En mi opinión, si sigue a este ritmo, va a restregar las narices de muchos expertos a la progamación de aquí... :-)
¡¡¡Solicita un trabajo a distancia con el equipo de MT5 methaquotes!!!
 
Vasiliy Sokolov:

Continúa en

En el post anterior estaba claro que se trataba de funciones. Todo estaba dedicado a ellos y nada más que a ellos. Se podría pensar que se trata de un sesgo subjetivo evidente o de alguna "filosofía" arcana. Sin embargo, aquí no hay filosofía. Y esta atención a las funciones no es casual. La cuestión es que en la programación, la función tiene una importancia fundamental. Además, la función es una noción muy importante y fundamental en matemáticas. En los años 20 del siglo pasado, Alonzo Church desarrolló un sistema de cálculo basado en funciones. A esto se le llamó lambda-calculus. Este sistema formalizó la noción de calculabilidad y vinculó estrechamente los cálculos informáticos y las matemáticas. Los principales programadores del mundo desarrollaron los llamados lenguajes de programación funcionales basados en el lambda-cálculo, en los que las funciones ocupan el primer lugar. Por ejemplo, en el lenguaje de programación funcional Haskell, ni siquiera existe un bucle for o algo similar. En cambio, se propone llamar a una función de forma especial, recursiva, para calcular el valor deseado. Se puede demostrar que con sólo funciones y sin asignaciones, es posible escribir un lenguaje de programación completo de Turing. Se trata de un lenguaje que permitiría escribir todo lo que es posible en cualquier otro lenguaje turing-completo, como un lenguaje procedimental u OOP.

MQL no es un lenguaje funcional, sino procedimental, extensible por clases, con tipificación estricta y una rica API orientada a temas (en forma de las mismas funciones, oh sorpresa). Por otro lado, la teoría de las funciones se basa en un sólido fundamento matemático, ofrece patrones sencillos y eficaces de uso de cualquier lenguaje de programación en el que existan funciones, por lo que, al menos, no es descabellado abandonar las funciones y el fundamento matemático que las sustenta. Por eso presto tanta atención a las funciones. No importa lo bien que entiendas la estructura del array, no importa si te equivocas con algún tipo de datos. Esto se puede arreglar y corregir rápidamente. Pero si no entiendes las funciones y cómo se relacionan, no llegarás a ser un programador medio.

Por lo tanto, para aprender a prog normalmente, es decir, linealmente en el tiempo para ampliar la funcionalidad de su programa, usted necesita aprender lo siguiente:

  • Representar claramente (si no a fondo, pero claramente es necesario) el modelo de eventos de MetaTrader 4.5.
  • Saber trabajar con las funciones del sistema. Resumir sus resultados en sus propias funciones. Combine las llamadas de las funciones del sistema en sus propias funciones.
  • Ser capaz y aficionado a escribir sus propias funciones.
  • Ser capaz de entender las cadenas de llamadas a funciones: por ejemplo, cuando la función a() llama a la función b(), y b() llama a c() y e() llama a la función c().
  • Saber cómo escribir funciones limpias y entender por qué hay que escribir funciones limpias. Más adelante explicaré qué es una función pura.

Las funciones parecen sencillas. "¿Qué hay que aprender? Sólo tienes que leer un párrafo aquí, y eso es todo. Y luego las matrices, para, mientras..." - No, no lo son. Las funciones son aparentemente sencillas (y eso está bien). Pero para que realmente resuelvan las tareas con eficacia, las funciones deben tener ciertas propiedades y combinarse entre sí de una manera determinada. Cómo hacer todo esto probablemente lo escribiré más adelante.

¡Hola Vasiliy! Por favor, si no te resulta difícil, escribe una continuación sobre las propiedades de las funciones. Para mí, como para otros novatos en programación, es muy importante y útil saber que las funciones deben tener ciertas propiedades y unirse entre sí de una manera determinada.

Todos sus bloques de mensajes relacionados con las funciones ya están recogidos en un único documento de Word para mí.

Sinceramente, Vladimir.

 
Aleksey Masterov:

... ¡¡¡Solicita un trabajo a distancia con el equipo de MT5 methaquotes!!!

Alexei, ¿estás bromeando? Sí, ¡me gustaría aprender lo básico primero!

Sinceramente, Vladimir.