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

 
MrBrooklin:

Devemos chamar as coisas pelos nomes próprios - no momento sou tão burro quanto uma rolha na programação! Eu não entendo as coisas elementares. Tenho que chamá-lo pelo nome - no momento, sou burro em programação e não entendo as coisas básicas. No fim de semana passado, usei um multímetro e a lupa do meu avô para encontrar um condensador SMD defeituoso de dimensões microscópicas. Apresentava uma falha, curto-circuito ou "koza", como costumava ser chamado pela abreviatura de curto-circuito, ou seja, curto-circuito. Aqui está uma foto do capacitor SMD "perfurado" com ampliação 4x em um smartphone e posterior processamento em Tinta, pois é um elemento muito microscópico.


Decidiu divagar um pouco e ao menos mostrar algo!

E sobre o desejo de aprender a linguagem, eu a tenho, bem como uma esperança de dominar o básico da programação.

Cumprimentos, Vladimir!


Legal! Estas coisas, por sinal, são próximas umas das outras.
Quando eu era estudante nos anos 90, esses departamentos estavam localizados no mesmo departamento de tecnologia da informação.
 
Roman Shiredchenko:

Aqui - deixe-me discordar de você, você pode e deve codificar, o que impede que você chegue ao fundo da questão... para entender e assim por diante... também IMHO, há artigos, há robôs em kodobase - leia, analise o código já pronto - aprenda o estilo de escrever imediatamente. Por que você iria querer reinventar a roda? Aprenda imediatamente com o código alfabetizado.

Aqui está um arrasto de V. Karputov - está em ROBOTS, veja - ajuste-o às suas necessidades (termos e suas fantasias).

P.S. Graças a você, o assunto deste ramo, comecei a entender o código, suas características ..., a estudar artigos e a repetir coisas básicas para mim mesmo ...

Obrigado pela dica! :-) (não brinca)

Olá Roman! É gratificante ler que o assunto criado ainda é útil para alguém que não eu. Obrigado!

Com relação aos códigos escritos por Vladimir Karputov, para mim está, até agora, fora do meu alcance. Em geral, eu não entendo os códigos que incluem arquivos e classes. Porque um ou outro arquivo foi incluído em outro EA é um grande mistério!

Estou principalmente procurando e estudando os códigos escritos sem os arquivos e aulas incluídos. Os consultores especializados escritos por Vladimir Khlystov são muito bons para o auto-aprendizagem. Um GRANDE OBRIGADO especial a ele! É uma pena que haja muito poucos Expert Advisors na MQL5.

Agora quero explicar por que estou pedindo que não usem um código pronto. A razão é que o código pronto pode indicar-lhe e você não está mais interessado em estudar o idioma. Agora você inseriu o código pronto em seu Expert Advisor; ele se tornou eficaz, então de que lhe servirá? E, pelo contrário, quando você não consegue entender e escrever imediatamente algo, como, por exemplo, o atual mal-entendido do operador de laço, é muito revigorante e motivador!

Não vejo nada de errado em aprender MQL5. Estou passando por uma etapa semelhante em minha vida, quando estudava eletrônica e passei do estudo de uma base de elementos para o estudo de outra. A única diferença é que tudo é percebido e assimilado mais facilmente na juventude do que agora. Eu já experimentei isso.

Obrigado a TODOS pelas palavras de apoio e sugestões construtivas! Eu continuo estudando a MQL5! Por meio dia eu "desaparecerei", porque preciso ir para o outro lado de Moscou em negócios, e então continuarei.

Atenciosamente, Vladimir.

 
Aleksey Masterov:

Legal! A propósito, estas coisas estão todas por perto...
Na minha universidade, estudei nos anos 90, esses departamentos estavam no mesmo departamento de TI.

nos anos 90, eles estavam comprando diplomas.

- não se pode ver agora, há estes chefes de departamento sentados em todos os escritórios

 
SanAlex:

nosanos 90, comprando diplomas.

- Você não vê agora, há estes moradores de púlpitos em todos os escritórios?

Não se trata sequer da possibilidade de comprar um diploma naquela época, o fato é que nos últimos 30 anos a tecnologia avançou tanto que falta MUITO o conhecimento, por exemplo, tive que aprender um autocad que não existia naquela época, também fiz um MUITO C++ básico. e assim, em tudo, você precisa aprender, melhorar, acompanhar os tempos constantemente)

 
VVT:

Não se trata nem da capacidade de comprar um diploma na época, o fato é que nos últimos 30 anos, a tecnologia avançou tanto que o conhecimento já está MUITO faltando, por exemplo, eu tive que terminar de aprender autocad que depois simplesmente não existia, também fez um MUITO C++ básico. e assim em tudo, você precisa constantemente aprender, melhorar, acompanhar os tempos)

Atecnologia chegou até agora nos últimos 30 anos - ela ainda está usando esses desenvolvimentos dos anos 60

 

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 linguagens especializadas 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 eu estava aprendendo a programar, a analogia da soma 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.

 
VVT:

Não se trata sequer da possibilidade de comprar um diploma na época, o fato é que nos últimos 30 anos a tecnologia foi tão longe que falta MUITO esse conhecimento, por exemplo eu tive que aprender autocad que não existia naquela época, também fez MUITO C++ básico. e assim, em tudo, você precisa aprender constantemente mais, melhorar, acompanhar os tempos)



:-) o autocad estava por perto. Tivemos aulas baseadas nisso para aprender circuitos e o layout das camadas... placas de circuito
 
Aleksey Masterov:
:-) o autocad era. Tivemos uma aula baseada nela para aprender circuitos e layout de camadas...de placas de circuito impresso
.

Tínhamos apenas 22 computadores, que eram carregados apenas no final da aula) o professor só os mantinha ligados durante o dia, era impossível trabalhar, nem sequer falávamos de cad...

 
MrBrooklin:

Olá Roman! É bom ler que o tópico está ajudando outra pessoa que não eu. Obrigado!

Quanto aos códigos escritos por Vladimir Karputov, eles estão fora do meu alcance por enquanto. Em geral, não entendo os códigos que contêm os arquivos e as classes incluídas. Porque um ou outro arquivo foi incluído em outro EA é um grande mistério!

Estou principalmente procurando e estudando os códigos escritos sem os arquivos e aulas incluídos. Os consultores especializados escritos por Vladimir Khlystov são muito bons para o auto-aprendizagem. Um GRANDE OBRIGADO especial a ele! É uma pena que haja muito poucos Expert Advisors na MQL5.

Agora quero explicar por que estou pedindo que não usem um código pronto. A razão é que o código pronto pode indicar-lhe e você não está mais interessado em estudar o idioma. Você simplesmente cola o código pronto em seu Expert Advisor, ele funciona, então de que servirá? E, pelo contrário, quando não se pode compreender e escrever imediatamente algo, como, por exemplo, o atual mal-entendido do operador de laço, é tão estimulante e motivador que dificilmente se pode acreditar nisso!

Não vejo nada de errado em aprender MQL5. Estou passando por uma etapa semelhante em minha vida, quando estudava eletrônica e passei do estudo de uma base de elementos para o estudo de outra. A única diferença é que tudo é percebido e assimilado mais facilmente na juventude do que agora. Eu já experimentei isso.

Obrigado a TODOS pelas palavras de apoio e sugestões construtivas! Eu continuo estudando a MQL5! Por meio dia eu "desaparecerei", porque preciso ir para o outro lado de Moscou em negócios, e então continuarei.

Atenciosamente, Vladimir.

Eu concordo - seus códigos também são bons! Você se irrita por nada. Resolva o código em silêncio, sem pressa, e isso é tudo. Aqui está uma coisa elementar - escolha e arrasto: (quanto mais fácil - apenas seu tópico de escolha Posição necessária ... :-))

//--- при таком методе мы будет сюда попадать на каждом тике.
   for(int i=PositionsTotal()-1;i>=0;i--)
      if(m_position.SelectByIndex(i))
         if(m_position.Symbol()==Symbol() && m_position.Magic()==m_magic)
           {
            //--- TrailingStop -> подтягивание StopLoss у ПРИБЫЛЬНОЙ позиции
            if(m_position.PositionType()==POSITION_TYPE_BUY)
              {
               //--- когда у позиции ещё нет StopLoss
               if(m_position.StopLoss()==0)
                 {
                  //--- пока StopLoss равен 0.0, TrailingStep не учитываем
                  if(m_symbol.Bid()-ExtTrailingStop>m_position.PriceOpen())
                    {
                     //--- модификация позиции
                     m_trade.PositionModify(m_position.Ticket(),m_position.PriceOpen(),0.0);
                    }
                 }
               //--- у позиции уже есть StopLoss
               else
                 {
                  //--- теперь TrailingStep нужно учитывать, иначе мы будет модифицировать
                  //--- поизцию НА КАЖДОМ ТИКЕ, а это ПЛОХО
                  if(m_symbol.Bid()-ExtTrailingStop-ExtTrailingStep>m_position.StopLoss())
                    {
                     //--- модификация позиции
                     m_trade.PositionModify(m_position.Ticket(),
                                            NormalizeDouble(m_symbol.Bid()-ExtTrailingStop,m_symbol.Digits()),0.0);
                    }
                 }
              }

            if(m_position.PositionType()==POSITION_TYPE_SELL)
              {
               //--- когда у позиции ещё нет StopLoss
               if(m_position.StopLoss()==0)
                 {
                  //--- пока StopLoss равен 0.0, TrailingStep не учитываем
                  if(m_symbol.Ask()+ExtTrailingStop<m_position.PriceOpen())
                    {
                     //--- модификация позиции
                     m_trade.PositionModify(m_position.Ticket(),m_position.PriceOpen(),0.0);
                    }
                 }
               //--- у позиции уже есть StopLoss
               else
                 {
                  //--- теперь TrailingStep нужно учитывать, иначе мы будет модифицировать
                  //--- поизцию НА КАЖДОМ ТИКЕ, а это ПЛОХО
                  if(m_symbol.Ask()+ExtTrailingStop+ExtTrailingStep<m_position.StopLoss())
                    {
                     //--- модификация позиции
                     m_trade.PositionModify(m_position.Ticket(),
                                            NormalizeDouble(m_symbol.Ask()+ExtTrailingStop,m_symbol.Digits()),0.0);
                    }
                 }
              }
           }
  }

Além disso, inclua arquivos - significa que você também os tem em seu código como funções e é isso.

#include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>  
 

Aqui está outro artigo - arrasto 2010 - o arrasto está no conselheiro da entrega padrão MACD.



Aqui está outra grande mastigação no cálculo do volume de posições!!! Eu mesmo me envolvi profundamente... :-)

Outra maneira de determinar o volume total da posição em um símbolo é passar por todas as posições do laço, o número de posições é determinado pela função PositionsTotal(). Ao verificar com a função PositionGetSymbol(), encontrar o símbolo necessário e determinar o volume e a direção da posição(PositionGetDouble() com o identificador POSITION_VOLUME e PositionGetInteger() com o identificador POSITION_TYPE).

Neste caso, a função completa terá o seguinte aspecto

double fSymbolLots(string aSymbol)
  {
   double TmpLots=0;
   for(int i=0;i<PositionsTotal();i++) // Перебор всех позиций
     {
      if(PositionGetSymbol(i)==aSymbol) // Найдена позиция с заданным символом
        {
         TmpLots=PositionGetDouble(POSITION_VOLUME);
         if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
           {
            TmpLots*=-1; // В зависимости от направления позиции устанавливаем знак числа
           }
         break;
        }
     }
   TmpLots=NormalizeDouble(TmpLots,2);
   return(TmpLots);
  }
Как создать свой Trailing Stop
Как создать свой Trailing Stop
  • www.mql5.com
Перед тем как приступить к разговору на тему статьи, предлагаю расставить точки над i. Лишний раз не помешает определиться с понятиями "позиция" и "ордер": Позиция - это рыночное обязательство, количество купленных или проданных контрактов по финансовому инструменту. Позиция по одному инструменту может быть только одна. Ордер - это распоряжение...
Razão: