Autoaprendizaje del lenguaje MQL5 desde cero - página 29

 
Реter Konow:
Has llenado de información inútil a un novato).

El principiante debe decidir si la información es útil o no.

Vasiliy Sokolov:

Bien dicho, informativo, gracias

 
Alexey Viktorov:

Esto sugiere que no deberías hacer alarde de tus deseos de esa manera. Vladimir también podría haber preguntado específicamente sobre tal o cual función y recibir consejos útiles, en lugar de las tonterías de los "expertos" como aprender C++ o aprender ensamblador. Puedes empezar estudiando las tarjetas perforadas.

Soy partidario de que TC estudie según su plan y no se "salte" la cabeza. Todo a su tiempo. Y, por supuesto, hay que aprender los MQL y en el orden correcto. La filosofía anterior (dada por Vasily y por mí) puede ayudar a estructurar el conocimiento, pero no a vaciarlo. Y mientras el estudiante está en el comienzo del aprendizaje, tiene que tratar de estructurar el vacío de acuerdo con nuestra notación filosófica.

Vuelve al libro de texto y olvídate de todo ese rollo de las altas miras por el momento.
 
Vasiliy Sokolov:

Siguiendo adelante:

  • Como hay muchos eventos, hay muchos manejadores de eventos. Dado que los eventos son llamados de forma inconsistente, sus manejadores de eventos también son llamados de forma inconsistente. Como hay llamadas inconsistentes, los manejadores de eventos no pueden depender unos de otros, y tampoco pueden depender de los datos de los demás. La única construcción que cumple estos estrictos requisitos es una función.
  • Las funciones no pueden depender unas de otras. Si una función devuelve la suma a+b, y la segunda devuelve el producto a*b, el resultado de estas dos funciones no dependerá de la secuencia de llamadas. Podemos llamar a la primera función con los argumentos 3 y 5 y obtener 8. A continuación, llame a la segunda función con los mismos argumentos y obtenga 24. Entonces intercambia sus llamadas. Los resultados serán los mismos. La función de suma siempre devolverá 8 con los argumentos 3 y 5. La función de multiplicación siempre devolverá 24 con los mismos argumentos.
  • De lo anterior se desprende que el manejador de eventos sólo puede ser una función. Si se produce un nuevo evento de tick, éste se gestiona con la función OnTick. Si se produce el evento Start (un lanzamiento único del script), éste se gestiona mediante la función especial OnStart.
  • Esta función es universal. Esta función puede manejar no sólo eventos. La función puede devolver algo útil, por ejemplo, la hora actual. Una función puede realizar cálculos complejos con los argumentos que se le pasan y devolver el resultado final de estos cálculos como un único valor. Por último, una función puede ser un proveedor de datos: Llamas a la función y obtienes de ella los datos que necesitas, como las cotizaciones.
  • Internamente, MetaTrader consta de miles de funciones, de las cuales unas 1500 mil se ponen amablemente a disposición de los usuarios. Son funciones muy útiles. Permiten comprobar la hora del sistema y obtener los datos de un instrumento que le interesa. Las funciones se utilizan para enviar órdenes comerciales. Puedes abrir el manual de ICL y ver que consta de funciones y sus argumentos. Así que MetaTrader, en lo que respecta a los programas de usuario, es un gran conjunto de funciones.
  • Las funciones universales no son suficientes. No importa cuántas funciones nuevas se añadan al sistema, siempre habrá escasez de ellas. La razón es que cada persona tiene necesidades diferentes. No existe una función única para todas las ocasiones. Las características más genéricas y universales ya están incluidas en MetaTrader y son amablemente compartidas con nosotros. Sin embargo, las necesidades de los usuarios son infinitas. MetaQuotes no puede satisfacer las necesidades individuales de 100.000 usuarios de su terminal. En su lugar, hicieron algo más flexible: dejaron que los usuarios crearan ellos mismos las funciones que querían. Los usuarios se beneficiaron de ello. En lugar de utilizar una función del sistema que no les conviene, pueden escribir su propia función que resuelva perfectamente su problema. Ninguna función del sistema es perfecta debido a su universalidad.
  • La habilidad de un usuario para escribir sus propias funciones y entender cómo funcionan indica la habilidad de un programador. Si entiende que un programa es un conjunto desarticulado de manejadores (en forma de funciones) que no manejan consistentemente los eventos entrantes, es bueno. Si sabe escribir sus propias funciones, es otra ventaja. Si puede combinar el trabajo de varias funciones (tanto las suyas como las del sistema) en un algoritmo común, eso es otro punto a su favor.
  • Si entiendes que todo en MetaTrader (el cuarto y el quinto) se basa de alguna manera en funciones, funciones y funciones - todo se vuelve claro de repente. La ayuda ya no se presenta como un grueso libro con un montón de fragmentos de código dispersos, sino como una guía de las funciones disponibles y lo que hacen. Todo lo demás, como los tipos de datos, las matrices, las estructuras, las clases, es irrelevante. Se trata de apoyar las funciones para que puedan devolver algo y aceptar algo.

(por ahora)

¡¡¡Grandioso!!! Vasily, tienes un talento natural para la enseñanza. Todo es claro y comprensible, sobre todo para aquellos que están en un completo cero. ¿Ha pensado alguna vez en escribir un libro similar a MQL4 Tutorial de Sergey Kovalev, sólo que ahora se llamaría MQL5 Tutorial de Vasily Sokolov?

¿Crees queeste tema dará un estímulo a tal iniciativa, no es así, Vasily?

Saludos, Vladimir.

 
Vasily sólo centra su atención en algunos aspectos concretos, considerándolos más importantes que otros. Por ejemplo, Función o Evento. Lea sobre las funciones en la obra de S.Kovalev y encontrará explicaciones no menos (e incluso más) detalladas y accesibles, pero sin concentrarse en ellas, en detrimento de las demás áreas. Por lo tanto, hay que leer el libro de texto.

Sí, Vasiliy ha escrito muy bien, pero está un poco "sesgado" por su comprensión subjetiva.

No estoy diciendo "¡aprende de mí, que sé cómo hacerlo bien!", estoy diciendo "aprende de un libro de texto y haz lo básico bien, no mis conceptos formulados apresuradamente de lo que me importa ahora en la asignatura".

P.D. Sin embargo, eso depende de ti.
 
Реter Konow:
Vasily centra su atención sólo en algunos aspectos particulares, creyendo que son más importantes que otros. Por ejemplo, una Función o un Evento. Lea sobre Funciones de S. Kovalev y encontrará una explicación no menos (e incluso más) detallada y accesible, pero sin centrarse en ellas, en detrimento de las otras áreas. Por lo tanto, hay que leer el libro de texto.

Sí, Vasiliy ha escrito muy bien, pero está un poco "sesgado" por su comprensión subjetiva.

No estoy diciendo "¡aprende de mí, que sé cómo hacerlo bien!", estoy diciendo "aprende de un libro de texto y haz lo básico bien, no mis conceptos formulados apresuradamente de lo que me importa ahora en la asignatura".

P.D. Sin embargo, depende de ti.

Y tú, Peter, puedes proponerte a ti y a Vasily hacer un buen trabajo juntos y escribir un libro así sobre MQL5.

Escribir un libro es la mejor manera de dejar una huella en lahistoria de la humanidad, especialmente en la historia de la programación. Piénsalo.

Saludos, Vladimir.

 
MrBrooklin:

Peter, os propongo a ti y a Vasily que hagáis un buen trabajo juntos y escribáis un libro así sobre MQL5.

Escribir un libro es la mejor manera de dejar una huella enla historia de la humanidad, especialmente en la historia de la programación. Piénsalo.

Saludos, Vladimir.

Gracias por la sugerencia, pero Vasiliy me "gana" fácilmente el enfoque clásico, que es necesario en un libro así. Sólo puedo ofrecer una comprensión abstracta de Objeto y Entorno en su interacción dinámica a través del prisma de la programación, pero será el último capítulo. ))))
 
Реter Konow:
Gracias por la oferta, pero Vasily me "gana" fácilmente a un enfoque clásico, que es exactamente lo que necesito en un libro de este tipo. Sólo puedo ofrecer una comprensión abstracta de Objeto y Entorno en su interacción dinámica a través del prisma de la programación, pero será el último capítulo. ))))

Ya veo. Ahora me gustaría saber la opinión de Vasily sobre mi propuesta de libro.

Actualmente estoy estudiando su artículo "Asesor Experto en Comercio Universal: Trabajando con Trailing Stops personalizados (Parte 6)".

Sinceramente, Vladimir.

 

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 y ofrece patrones sencillos y eficaces de utilización 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 el diseño del array, o si te equivocas con un determinado 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 parecen 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 quizás lo escriba más adelante.

 
MrBrooklin:

Ya veo. Ahora me gustaría saber la opinión de Vasily sobre mi propuesta de libro.

Actualmente estoy estudiando su artículo "Asesor Experto en Comercio Universal: Trabajando con Trailing Stops personalizados (Parte 6)".

Sinceramente, Vladimir.

No. No habrá libro. Tal vez algunos artículos. Pero seguro que no en el tiempo más cercano.

 
MrBrooklin:

Peter, puedo sugerirte a ti y a Vasily que hagáis un buen trabajo juntos y escribáis un libro así sobre MQL5.

No lo creo. Mis puntos de vista con Peter y yo son muy diferentes. Puedes echar un vistazo a algunos de nuestros códigos para ver lo diferentes que son).