Auto-aprendizagem da linguagem MQL5 a partir do zero - página 71
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Igor, o desejo de aprender a linguagem MQL5 não se perde, pelo contrário, ele só aumenta. Estou dividido, por que sou tão burro e não consigo entender coisas simples com este operador de laço. O principal é que sem o operador do laço o código funciona perfeitamente, mas com o laço é uma confusão completa. De qualquer forma, vou chegar ao fundo disto. No entanto, tenho muito menos tempo para o auto-estudo desde que o período de quarentena terminou e tenho raros momentos para estudar a língua no trabalho. Na maioria das vezes estudo a língua à noite e à noite.
Preciso resolver 2 tarefas para finalmente escrever o código de Trailing Stop:
Vladimir, você está se metendo em algum tipo de coisa estranha. Foi-lhe dado um modelo: https://www.mql5.com/ru/forum/352460/page58#comment_18726492 Você o ignorou e decidiu seguir em frente com sua perspicácia. Este caminho é difícil e pode levar anos. Em seu caminho, estude C, C++, Ferrugem, C#, polimorfismo, herança, desreferenciamento de ponteiros, conversão dinâmica do tipo: Verificar ou dirigir. Você deve tomar o caminho mais curto para o objetivo. Se você quiser seguir em frente, escreva "trailing". Não é necessário estudar C e C++ para fazer isso. Tudo isso como uma opção eletiva, se você tiver vontade.
A situação com o for loop é ilustrativa. É uma construção poderosa que deve ser aplicada no lugar certo. Você tem uma rede e um algoritmo auxiliar. É por isso que não há enumeração de posições, não há magos, então você não tem este laço. Claro, tudo funcionará sem ele, mas o laço só produz óleo. Mas você teimosamente tenta usá-lo, parece ser um fim em si mesmo: usar o máximo e o máximo possível, ter o máximo possível.
Vladimir, você está entrando em uma espécie de cio. Foi-lhe dado um modelo: https://www.mql5.com/ru/forum/352460/page58#comment_18726492 Você o ignorou e decidiu ir em frente com sua mente. Este caminho é difícil e pode levar anos. Em seu caminho, estude C, C++, Ferrugem, C#, polimorfismo, herança, desreferenciamento de ponteiros, conversão dinâmica do tipo: Verificar ou dirigir. Você deve tomar o caminho mais curto para o objetivo. Se você quiser seguir em frente, escreva "trailing". Não é necessário estudar C e C++ para fazer isso. Tudo isso como uma opção eletiva, se você quiser.
A situação com o for loop é ilustrativa. É uma construção poderosa que deve ser aplicada no lugar certo. Você tem uma rede e um algoritmo auxiliar. É por isso que não há enumeração de posições, não há magos, então você não tem este laço. Claro, tudo funcionará sem ele, mas o laço só faz você se sentir como óleo. Mas você está tentando obstinadamente usá-lo, então parece ser um fim em si mesmo: você pode usar o máximo de tudo e qualquer coisa para manter em estoque o máximo possível.
Olá, Vasily!
Obrigado por se juntar oportunamente ao tema e me orientar da maneira correta como sempre. Agora deixe-me explicar tudo em uma só ordem:
Vasily, sou extremamente grato a você pela orientação e crítica construtiva! Também expresso minha gratidão a todos os participantes deste tema que me ajudam em meu auto-estudo da linguagem de programação MQL5 a partir do zero.
O auto-aprendizagem continua. A ser continuado.
Cumprimentos, Vladimir.
Boa tarde a todos!
Se eu quisesse acrescentar algo interessante, acho que a idéia de "auto-treinamento em MQL5 a partir do zero" não é muito correta. Se uma pessoa é um 0 na programação, ela tem que aprender a programar primeiro. Se o objetivo é aprender a programar em MQL do zero, uma pessoa deve primeiro aprender aprogramar em C, pelo menos o básico, e depois aprender a escrever em MQL, porque MQL é de fato C, mas é especializado para uma determinada tarefa, uma pessoa não entende como funcionam os loops, e já está tentando escrever programas. É como tentar aprender latim sem saber russo...
Outra coisa é que C não é uma linguagem muito amigável para aprender programação, é simples, mas é muito concisa, é difícil para um iniciante ler e entender código sem ter um entendimento básico de algoritmos, tipos de dados, álgebra booleana. Em C três caracteres seguidos podem significar várias cadeias de caracteres em outra linguagem.
Para aprender a programar simplesmente do zero, para a base, para aprender a falar com um computador em uma (não importa o que) língua, eu aconselharia começar com Pascal, o livro mais fácil para começar com ele (2-3 semanas à vontade), depois C (lá após Pascal semana máxima se diligente, dominar a sintaxe, quero dizer o conhecimento básico da língua!) e, em seguida, utilizar idiomas especializados como MQL, porque MQL é C, que tem um pouco de torção e simplificação, uma vez que foi projetado para uma única tarefa e o compilador conhece o óbvio. E C, por sua vez, é uma espécie de Pascal comprimido RAR, mas Pascal é quase inglês =).
Agora sobre loops:
Quando aprendi a programação, a analogia com somas em álgebra me ajudou, onde você especifica o valor inicial de n, o valor final de n e a fórmula com este n para calcular.
Olá Andrey, concordo plenamente com você sobre a base. Eu não o tenho e nunca o tive. Mas como diz o ditado - Moscou não foi construída de uma só vez! Obrigado por seus conselhos e dicas!
Cumprimentos, Vladimir.
Sim. Eu concordo - seus códigos também são bons! Você está se irritando por nada. Leve seu tempo para ordenar o código sem pressa e pronto. Aqui está uma coisa elementar - selecionar e arrasto: (quanto mais fácil - apenas seu tópico de escolha da posição NECESSIDADE... :-))
Além disso, inclua arquivos - significa que eles também estão em seu código como funções e é isso.
Obrigado, Roman, pelos códigos e links! Estou lidando com os códigos com calma e certamente não se apresse em nenhum lugar!
Atenciosamente, Vladimir.
Bom dia e bom humor a todos!
Continuo estudando a linguagem de programação MQL5 . Hoje, como prometido, estou postando para que todos vejam o código do template do Expert Advisor projetado para escrever um trailing stop. Devido ao fato de que o código do modelo do EA acabou sendo bastante complicado, tivemos que reduzir os comentários o máximo possível. A versão completa do Expert Advisor com comentários detalhados sobre cada linha de código, em uma apresentação acessível a um aluno do 1º ano de uma escola de programação, será publicada posteriormente na forma de um arquivo com o nome de trabalho Trailing_Stop.mq5 para que para não produzir outra "panela" no site.
Antes de publicar o código, o EA foi testado no testador de estratégia . Nenhum problema foi identificado. O EA usa um sistema de contabilidade de posição de compensação. Este sistema de contabilidade implica que ao mesmo tempo só pode haver uma posição aberta na conta para o mesmo símbolo (instrumento financeiro).
No momento, o EA tem a capacidade de:
Além disso, o EA possui um template pré-instalado, gentilmente cedido por Vasily Sokolov, que será preenchido com código durante o processo de autoaprendizagem.
UM AVISO!!!
O Expert Advisor é desenvolvido de acordo com o plano de autoestudo para uma conta demo e apenas para fins educacionais! Não se destina a negociar em uma conta real e obter lucro!
Com os melhores cumprimentos, Vladimir.
Bom dia e bom humor para todos!
Eu continuo estudando a linguagem de programação MQL5. Ontem eu escrevi o código de Stop Loss no Breakeven para posições de Venda e Compra. Estou colando o código sem nenhum comentário ainda. Publicarei a versão completa do Expert Advisor com uma descrição detalhada de cada linha de código, em uma forma acessível aos alunos do 1º ano da escola de programação, mais tarde no arquivo com o título de trabalho Trailing_Stop.mq5. Antes de publicar o código, verificamos o desempenho do Expert Advisor no testador de estratégia. Não foram encontrados problemas.
Cumprimentos, Vladimir.
Bom dia e bom humor para todos!
Eu continuo estudando a linguagem de programação MQL5. Hoje, como prometido, estou colando o código do modelo do meu Conselheiro Especialista projetado para escrever uma parada de trilha. Devido ao fato de o código do modelo EA ser bastante incômodo, tive que cortar os comentários o mais curto possível. A versão completa do Expert Advisor com comentários detalhados sobre cada linha do código, em uma forma acessível para um estudante da 1ª série de programação da escola, será publicada posteriormente como um arquivo com o nome de trabalho Trailing_Stop.mq5, para evitar a criação de outro estrago no site.
...
Muito bom. A idéia principal é bem capturada. Especialmente eu gosto do processo de desenvolvimento:
Bom dia e bom humor para todos!
Eu continuo estudando a linguagem de programação MQL5. Ontem escrevi o código para Stop Loss at Breakeven para posições de Compra e Venda.
Isto é, tudo está correto. Não é preciso resolver o problema de uma só vez em um só lugar. Você deve resolvê-lo gradualmente, assim como fez. Primeiro, você descreve a lógica básica na função OnTick e funções básicas como OpenBUY, OpenSELL, TickUP, TickDown.
Então, quando este código básico é depurado, compilado e funciona dentro de suas capacidades, você começa a descrever as outras funções. Isto pode ser feito no dia seguinte ou até mesmo uma semana. Isto significa que você não precisa mudar o código principal. Acho que você pode ver por quê.
Agora você precisa aperfeiçoar esta forma de desenvolvimento: continue escrevendo funções, ligando a funcionalidade através delas ao código existente. O programa existente deve funcionar corretamente. A complexidade não deve aumentar. As funções a serem adicionadas devem retornar resultados simples e claros. Seus nomes devem ser tão simples e claros para você. Se você não pode fazer isso, pode ser porque você precisa escrever não uma, mas duas ou até mesmo três funções para resolver o problema. A princípio, a estrutura geral do pedido será difícil de definir. É por isso que é melhor pedir conselhos a colegas mais experientes. Com o tempo, você aprenderá a desenvolver tais modelos por conta própria.
Com o passar do tempo,você precisará usar cada vez mais construções lingüísticas dentro das funções para torná-las adequadas às suas necessidades.Neste ponto, você vai gradualmente e o mais importante, estender organicamente seus conhecimentos de construções lingüísticas, aprender loops, arrays e até mesmo trabalhar com apontadores.
Na verdade, você já aprendeu a parte mais difícil da programação, embora ainda não tenha consolidado o material que aprendeu. Tudo o que você precisa fazer agora é repeti-lo muitas vezes para consolidá-lo. Daqui não haverá nada fundamentalmente novo, tudo é o mesmo: Modelo geral -> Descrição dos nomes das funções e seus parâmetros-> Escrita do conteúdo destas funções -> Disposição destas funções na unidade central. É isso aí. Tudo o que resta é aperfeiçoar a habilidade e ser consistente. Várias construções adicionais que você começa a usar como loops e arrays são apenas detalhes, às vezes inteligentemente feitos, mas nada mais do que detalhes.
Como não há limite para a perfeição, acrescentarei mais alguns comentários sobre o código:
Destaquei dois lugares não triviais em amarelo.
1) Note que o código é repetido no primeiro se e no próximo se. A única diferença está na última linha e na ação final (OpenBUY, OpenSell).
2) As condições para entrar no outro bloco não são óbvias. Eles não são visíveis por causa da abundância de ???. Na verdade, eles dependem apenas da última linha:
Este é um sinal seguro de que uma função está faltando aqui.
Precisamos escrever uma função que retorne verdadeiro se o tempo para abrir a posição corresponder ao dado (escreverei mais tarde)
Muito bom. O ponto principal é capturado corretamente. Gostou especialmente do processo de desenvolvimento:
Isto é, tudo está certo. Você não tem que resolver o problema de uma só vez em um só lugar. Você o faz gradualmente, como aconteceu no seu caso. Primeiro, você descreve a lógica básica na função OnTick e funções básicas como OpenBUY, OpenSELL, TickUP, TickDown.
Então, quando este código básico é depurado, compilado e funciona dentro de suas capacidades, você começa a descrever as outras funções. Isto pode ser feito no dia seguinte ou até mesmo uma semana. Isto significa que você não precisa mudar o código principal. Acho que você pode ver por quê.
Agora você precisa aperfeiçoar esta forma de desenvolvimento: continue escrevendo funções, ligando a funcionalidade através delas ao código existente. O programa existente deve funcionar corretamente. A complexidade não deve aumentar. As funções a serem adicionadas devem retornar resultados simples e claros. Seus nomes devem ser tão simples e claros para você. Se você não puder fazer isso, pode ser que você precise escrever não uma, mas duas ou até mesmo três funções para resolver o problema.
Para que uma função possa realizar sua tarefa pretendida,você precisará eventualmente usar cada vez mais construções lingüísticas dentro de tais funções. É quando você vai gradualmente e o mais importante, estender organicamente seus conhecimentos de construções lingüísticas, aprender loops, arrays e até mesmo trabalhar com apontadores.
Olá, Vasily! Muito obrigado por suas sugestões e apoio oportuno. Seus comentários sobre o papel das funções e princípios de construção do código do programa me ajudaram muito no aprendizado da linguagem de programação MQL5:
Agora que a informação em minha cabeça está estruturada, é mais fácil entender o código escrito não só por mim, mas também por outros programadores. Espero que este tópico seja uma boa ajuda para aqueles que estão começando a aprender a linguagem de programação MQL5 a partir do zero.
Cumprimentos, Vladimir.