Auto-aprendizagem da linguagem MQL5 a partir do zero - página 29

 
Реter Konow:
Você preencheu um novato com informações inúteis).

Se a informação é útil ou não, cabe ao iniciante decidir

Vasiliy Sokolov:

Bem dito, informativo, obrigado.

 
Alexey Viktorov:

Isto sugere que você não deve ostentar seus desejos de tal forma. Vladimir poderia muito bem ter feito perguntas específicas sobre esta ou aquela função e recebido conselhos úteis, ao invés do absurdo de "especialistas" como aprender C++ ou aprender assembler. Você poderia começar estudando cartões perfurados.

Sou a favor de que o TC estude de acordo com seu plano e não "pule por cima" de sua cabeça. Tudo em tempo hábil. E você tem que aprender MQL's e na ordem certa, é claro. A filosofia acima (dada por Vasily e por mim) pode ajudar a estruturar o conhecimento, mas não a esvazia. E enquanto o estudante está no início da aprendizagem, ele tem que tentar estruturar o vazio de acordo com nossa notação filosófica.

Volte para o livro didático e esqueça por enquanto todas essas coisas de alta mente.
 
Vasiliy Sokolov:

Seguindo em frente:

  • Como há muitos eventos, há muitos manipuladores de eventos. Uma vez que os eventos são chamados de inconsistentes, seus manipuladores de eventos também são chamados de inconsistentes. Como há uma chamada inconsistente, os manipuladores de eventos não podem depender uns dos outros, e também não podem depender dos dados uns dos outros. A única construção que atende a estes requisitos estritos é uma função.
  • As funções não podem depender uma da outra. Se uma função retorna a soma a+b, e a segunda devolve o produto a*b, então o resultado destas duas funções não dependerá da seqüência de chamadas. Podemos chamar a primeira função com os argumentos 3 e 5 e obter 8. Então, ligue para a segunda função com os mesmos argumentos e ganhe 24. Em seguida, trocar suas ligações. Os resultados serão os mesmos. A função de adição sempre retornará 8 com os argumentos 3 e 5. A função de multiplicação sempre retornará 24 com os mesmos argumentos.
  • Está claro do exposto acima que o manipulador de eventos só pode ser uma função. Se ocorrer um novo evento de carrapato, este é tratado pela função OnTick. Se o evento Start (um lançamento único do roteiro) ocorrer, isto é tratado pela função especial OnStart.
  • Esta função é universal. Esta função não pode tratar apenas de eventos. A função pode devolver algo útil, por exemplo, a hora atual. Uma função pode realizar cálculos complexos com os argumentos passados a ela e retornar o resultado final desses cálculos como um valor único. Finalmente, uma função pode ser um fornecedor de dados: Você chama a função e obtém os dados necessários, tais como citações, a partir dela.
  • Internamente, o MetaTrader consiste em milhares de funções, das quais cerca de 1500 mil são gentilmente colocadas à disposição dos usuários. Estas são funções muito úteis. Eles permitem que você verifique o tempo do sistema e obtenha os dados de um instrumento que lhe interessa. As funções são usadas para enviar ordens comerciais. Você pode abrir o manual da ICL e ver que ele consiste de funções e seus argumentos. Portanto, o MetaTrader, no que diz respeito aos programas de usuário, é um grande conjunto de funções.
  • As funções universais não são suficientes. Não importa quantas funções novas sejam adicionadas ao sistema, sempre haverá falta delas. A razão é que cada um tem necessidades diferentes. Não há uma característica de tamanho único para todas as ocasiões. As características mais genéricas e universais já estão incluídas no MetaTrader e são gentilmente compartilhadas conosco. No entanto, as necessidades dos usuários são infinitas. A MetaQuotes não pode atender às necessidades individuais de 100.000 usuários de seu terminal. Em vez disso, eles fizeram algo mais flexível: eles deixaram os usuários criarem as características que eles mesmos desejam. Os usuários foram beneficiados com isso. Em vez de usar uma função do sistema que não é adequada para eles, eles podem escrever sua própria função que resolve seu problema perfeitamente. Nenhuma função do sistema é perfeita por causa de sua universalidade.
  • A habilidade que um usuário é capaz de escrever suas próprias funções e entender como elas funcionam lhe diz quão habilidoso é um programador. Se ele/ela entender que um programa é um conjunto desarticulado de manipuladores (na forma de funções) que não lidam consistentemente com eventos recebidos, ele/ela é bom. Se ele souber escrever suas próprias funções, isso é outra vantagem. Se ele pode combinar o trabalho de várias funções (tanto as suas próprias funções como as do sistema) em um algoritmo comum, isso é outra vantagem para ele.
  • Se você entender que tudo no MetaTrader (o quarto e o quinto) é de alguma forma baseado em funções, funções e funções - tudo se torna claro de repente. A ajuda não é mais apresentada como um livro grosso com um monte de trechos de código espalhados, mas como um guia para as funções disponíveis e para o que elas fazem. Tudo o mais, como tipos de dados, matrizes, estruturas, classes, é irrelevante. Trata-se de funções de apoio para que eles possam devolver algo e aceitar algo.

(por enquanto)

Ótimo!!! Vasily, você tem um talento natural para ensinar. Tudo é claro e compreensível, especialmente para aqueles que estão em um zero completo. Você já pensou em escrever um livro similar ao MQL4 Tutorial de Sergey Kovalev, só que agora seria chamado de MQL5 Tutorial de Vasily Sokolov?

Você acha queeste assunto dará um estímulo a tal iniciativa, não acha, Vasily?

Cumprimentos, Vladimir.

 
Vasily concentra sua atenção apenas em alguns aspectos particulares, considerando-os mais importantes do que outros. Por exemplo, Função ou Evento. Leia sobre funções no trabalho de S.Kovalev e você não encontrará menos (e até mais) explicações detalhadas e acessíveis, mas sem se concentrar nelas, em detrimento das outras áreas. Portanto, você tem que ler o livro didático.

Sim, Vasiliy tem escrito muito bem, mas é um pouco "enviesado" por sua compreensão subjetiva.

Não estou dizendo "aprenda comigo, eu sei como fazê-lo corretamente", estou dizendo "aprenda com um livro didático e acerte o básico, não meus conceitos formulados apressadamente sobre o que me importa agora no assunto".

P.S. No entanto, isso depende de você.
 
Реter Konow:
Vasily concentra sua atenção apenas em alguns aspectos particulares, acreditando que eles são mais importantes do que outros. Por exemplo, uma Função ou um Evento. Leia sobre as funções de S. Kovalev e você encontrará não menos (e até mais) explicações detalhadas e acessíveis, mas sem se concentrar nelas, em detrimento das outras áreas. Portanto, você tem que ler o livro didático.

Sim, Vasiliy tem escrito muito bem, mas é um pouco "enviesado" por sua compreensão subjetiva.

Não estou dizendo "aprenda comigo, eu sei como fazê-lo corretamente", estou dizendo "aprenda com um livro didático e acerte o básico, não meus conceitos formulados apressadamente sobre o que me importa agora no assunto".

P.S. No entanto, depende de você.

E você, Peter, pode propor que você e Vasily façam um bom trabalho juntos e escrevam um livro sobre a MQL5.

Escrever um livro é a melhor maneira de deixar um rastro na história da humanidade, particularmente na história da programação. Pense sobre isso!

Cumprimentos, Vladimir.

 
MrBrooklin:

Peter, proponho que você e Vasily façam um bom trabalho juntos e escrevam um livro sobre a MQL5.

Escrever um livro é a melhor maneira de deixar uma marca nahistória humana, particularmente na história da programação. Pense sobre isso!

Cumprimentos, Vladimir.

Obrigado pela sugestão, mas Vasiliy me "bate" facilmente na abordagem clássica, que é necessária em tal livro. Só posso oferecer uma compreensão abstrata do Objeto e do Meio Ambiente em sua interação dinâmica através do prisma da programação, mas este será o capítulo final. ))))
 
Реter Konow:
Obrigado pela oferta, mas Vasily me "bate" facilmente em uma abordagem clássica, que é exatamente o que eu preciso em tal livro. Só posso oferecer uma compreensão abstrata do Objeto e do Meio Ambiente em sua interação dinâmica através do prisma da programação, mas este será o capítulo final. ))))

Estou vendo. Agora eu gostaria de saber a opinião de Vasily sobre minha proposta de livro.

Neste momento estou estudando seu artigo "Universal Trading Expert Advisor: Working with Custom Trailing Stops (Parte 6)".

Atenciosamente, Vladimir.

 

Continua em

Ficou claro no post acima que o foco estava nas funções. Tudo era dedicado a eles e nada além deles. Pode-se pensar que se trata de um óbvio viés subjetivo ou de alguma "filosofia" arcana. No entanto, não há aqui nenhuma filosofia. E tal atenção às funções não é acidental. A questão é que, na programação, a função é de fundamental importância. Além disso, a função é uma noção muito importante e fundamental em matemática. Nos anos 20 do século passado, a Igreja Alonzo desenvolveu um sistema de cálculo baseado em funções. Isto foi chamado de lambda-calculus. Os principais programadores do mundo desenvolveram as chamadas linguagens de programação funcional baseadas em lambda-calculus, nas quais as funções ocupam o primeiro lugar. Por exemplo, na linguagem de programação funcional Haskell, não há sequer um loop ou algo semelhante. Em vez disso, propõe-se chamar uma função de maneira especial, recursivamente, para calcular o valor desejado. Pode ser comprovado que com apenas funções e sem atribuição, é possível escrever uma linguagem de programação Turing completa. Esta é uma linguagem que permitiria escrever tudo o que é possível em qualquer outra linguagem completa de turing, como linguagem processual ou OOP.

MQL não é uma linguagem funcional, mas sim uma linguagem processual, extensível por classes, com digitação estrita e API rica e orientada a assuntos (na forma das mesmas funções, oh surpresa). Por outro lado, a teoria das funções é baseada em uma sólida base matemática, oferece padrões simples e eficazes de utilização de qualquer linguagem de programação onde existam funções, portanto, pelo menos não é clarividente abandonar funções e bases matemáticas por trás delas. É por isso que eu presto tanta atenção às funções. Não importa o quão bem você entende o projeto da matriz, ou se você comete um erro com um determinado tipo de dado. Isto pode ser rapidamente consertado e corrigido. Mas se você não entender as funções e como elas estão relacionadas, você não se tornará nem mesmo um programador médio.

Assim, para aprender como progredirem normalmente, ou seja, linearmente ao longo do tempo para expandir a funcionalidade de seu programa, você precisa aprender o seguinte:

  • Claramente (se não completamente, mas claramente precisa) representar o modelo de evento do MetaTrader 4.5.
  • Saiba como trabalhar com as funções do sistema. Resumir seus resultados em suas próprias funções. Combine as chamadas das funções do sistema em suas próprias funções.
  • Ser capaz e gostar de escrever suas próprias funções.
  • Ser capaz de compreender cadeias de chamadas de função: por exemplo, quando a função a() chama a função b(), e b() chama c() e e() chama a função c().
  • Saiba como escrever funções limpas e entenda porque você deve escrever funções limpas. Explicarei mais tarde o que é uma função pura.

As funções parecem simples. "O que há para aprender". Você só precisa ler um parágrafo aqui, e isso é tudo. E depois arrays, para, enquanto..." - Não, não são. As funções são realmente aparentemente simples (e isso é bom). Mas para que eles realmente resolvam tarefas de forma eficiente, as funções devem ter certas propriedades e ser combinadas umas com as outras de uma certa forma. Como fazer tudo isso, talvez eu escreva mais tarde.

 
MrBrooklin:

Estou vendo. Agora eu gostaria de saber a opinião de Vasily sobre minha proposta de livro.

Atualmente estou estudando seu artigo "Universal Trading Expert Advisor: Working with Custom Trailing Stops (Parte 6)".

Atenciosamente, Vladimir.

Não. Não haverá livro. Talvez alguns artigos. Mas não no tempo mais próximo, com certeza.

 
MrBrooklin:

Peter, posso sugerir que você e Vasily façam um bom trabalho juntos e escrevam um livro sobre a MQL5.

Acho que não. Minhas opiniões com Peter e eu somos muito diferentes. Você pode dar uma olhada em alguns de nossos códigos para ver como eles são diferentes).