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

 

Vladimir Simakov:

Meu amigo olhou para esta merda e disse: 250 mil para mim e 75 mil cada um para minhas duas porcarias, e reescreveremos esta merda em seis meses ou nos livraremos dela.

a solução é a correta, a julgar pela configuração, com a abordagem descrita sempre haverá problemas com os GPs.

 
MrBrooklin:

Li todos os posts sobre variáveis globais e entendi exatamente o que todos os participantes desta discussão queriam me dizer. Aprenderei a escrever o código do programa sem utilizar variáveis globais. Obrigado a todos vocês por este conselho construtivo!

Atenciosamente, Vladimir.

Os programadores têm medo de usar variáveis globais por causa dos erros que podem ser cometidos ao alterar seus valores. Cria uma situação em que um erro é difícil de localizar, pois cada função pode alterá-los. Naturalmente, somente essas variáveis devem existir no escopo global que todas as funções do programa devem ver. Não pode ser de outra forma.

Sempre gostei de utilizar variáveis globais, porque elas garantiam um rápido crescimento da funcionalidade, enquanto o programa se transformou em um enorme e ativo canteiro de obras. As pessoas frequentemente me culpam pela maneira como escrevo o código, mas é por isso que é um canteiro de obras: você limpa depois que o trabalho básico de construção é feito, e quando a casa está terminada, você pode começar a azulejar, pintar, limpar a área. Até lá, a prioridade é montar a cofragem e despejar concreto).

No entanto, os programadores pensam de maneira diferente. Eles vão "limpar" e "esfregar" seu código, mesmo que sejam duas linhas e meia. Esfregarão seu código mesmo que tenha duas linhas e meia de comprimento, mas brilhará como... como uma nova moeda). Esta atitude em relação ao código é justificada por sua profissão pela qual vivem, mas do ponto de vista criativo, eles são rígidos e pouco desenvolvidos. É assim que é...

Meu conselho: aprenda a escrever corretamente, mas às vezes deixe-se afastar das regras e experimente para ganhar uma experiência mais variada. Isto ajudará na sua aprendizagem e você aprenderá mais rapidamente.
 
MrBrooklin:

Eu continuo estudando a linguagem de programação MQL5. Estou novamente colando o código revisto do roteiro, levando em conta as dicas dos participantes deste tópico. Eu testei o roteiro em todos os modos. Nenhum problema detectado. Para começar, eu apliquei o número mínimo de parâmetros de entrada. O código do roteiro é escrito em inglês, os comentários ao código estão em russo, para que seja mais fácil de digerir. Como prometi anteriormente, tentei descrever o roteiro de uma forma compreensível para um aluno do 1º ano da escola de programação.

Espero ter feito exatamente o que me foi dito pelos participantes deste tópico, mas posso estar errado.

Cumprimentos, Vladimir.

É ótimo que você mesmo tenha descoberto como e para onde mover a variável global bool_time suficiente. Você está fazendo progressos.
 
Реter Konow:
É ótimo que você tenha descoberto como e para onde mover a variável global bool_timе. Você está fazendo um ótimo trabalho.

Obrigado, Peter, por seu apoio e ajuda. Eu movi as variáveis globais dentro da função graças às dicas que me foram dadas anteriormente pelos participantes deste tópico. Agora, quando as informações são resolvidas na minha cabeça, torna-se muito mais fácil entender as coisas novas.

Cumprimentos, Vladimir.

 

Bom dia a todos e bom humor!

Prezados especialistas em programação! Gostaria de expressar minha sincera gratidão por todas as dicas e conselhos construtivos, que vocês compartilham comigo!

Atenciosamente, Vladimir.

 
MrBrooklin:

Bom dia a todos e bom humor!

Prezados especialistas em programação! Gostaria de expressar minha sincera gratidão por todas as dicas e conselhos construtivos, que vocês compartilham comigo!

Atenciosamente, Vladimir.


Você está se movendo rapidamente ... :-)
É por causa da minha educação técnica superior básica, se não estou enganado.

 
Aleksey Masterov:

Você está se movendo rápido... :-)
É por causa de uma educação técnica superior básica, se não me engano.

Olá Alexey! Sim, é verdade, tenho uma educação técnica superior soviética ligada à automação de processos na produção e experiência como engenheiro eletrônico em uma organização que, naqueles mesmos tempos soviéticos, consertava computadores eletrônicos.

Cumprimentos, Vladimir

 
MrBrooklin:

Olá Alexey! Sim, é verdade, tenho formação técnica superior ligada à automação de processos na produção e experiência de trabalho como engenheiro eletrônico na organização que se dedicava, na mesma época soviética, ao reparo de ECM.

Atenciosamente, Vladimir.


É imediatamente perceptível para você, para mim... No nível e velocidade de seu progresso nesta "arte" de tradução das fantasias em código, especialmente as filosóficas, como em seu último roteiro! :-)
IMHO, se você continuar neste ritmo, você vai esfregar os narizes de muitos especialistas em la progam aqui ... :-)
Candidate-se a um trabalho remoto com a equipe de methaquotes MT5!!!
 
Vasiliy Sokolov:

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 quão bem você entenda a estrutura da matriz, não importa se você comete um erro com algum 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, provavelmente escreverei mais tarde.

Olá Vasiliy! Por favor, se não for difícil para você, escreva uma seqüência sobre as propriedades funcionais. Para mim, como para outros novatos em programação, é muito importante e útil saber que as funções devem ter certas propriedades e se unir de uma certa maneira.

Todos os seus blocos de mensagens relacionados às funções já estão coletados em um único documento Word para mim.

Com os melhores cumprimentos, Vladimir.

 
Aleksey Masterov:

... Candidate-se a um trabalho remoto com a equipe de methaquotes MT5!!!

Alexei, você está brincando? Sim, eu gostaria de aprender o básico primeiro!

Atenciosamente, Vladimir.