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

 
MrBrooklin:

Eu continuo aprendendo a linguagem de programação MQL5. Anteriormente publiquei o código do laço que inicia a enumeração das posições em aberto. Agora, depois que o loop foi iniciado, começamos a trabalhar com o símbolo no gráfico atual:

Publicarei periodicamente o código escrito com meus próprios comentários para fornecer um feedback imediato. Peço aos participantes deste tópico que me corrijam, se houver alguma imprecisão em meus códigos e comentários.

Atenciosamente, Vladimir.

Print("Выбираем позицию на символе ", PositionGetSymbol(i), "Тикет", i);

Os comentários contendo dados são mais práticos.

 
Valeriy Yastremskiy:

Os comentários contendo dados são mais práticos.

Obrigado, Valery! Sua versão da mensagem é mais informativa. Vou mudar o código imediatamente.

Cumprimentos, Vladimir.

 

Prezados especialistas em programação!

Por favor, explique duas perguntas:

  1. Primeira pergunta sobre o Magic Number - ele é criado em parâmetros de entrada apenas para ordens pendentes e posições abertas (ou apenas para posições abertas?), ou para a própria EA ele também pode ser criado? Se a resposta for "sim", para que propósito isto deve ser feito. Eu realmente me confundi com esta pergunta e não tenho uma boa resposta.
  2. A segunda pergunta sobre o Magic Number - se houver mais de uma posição aberta no gráfico atual, então é possível aplicar tal parâmetro de entrada para determinar cada posição:
input int Magic_Number=-1;

Talvez eu tenha um mal-entendido sobre a aplicação do Magic Number na programação.

Cumprimentos, Vladimir.

 

Embora haja uma explicação no artigo de Artem Trishkin https://www.mql5.com/ru/articles/7394#node02, mas ainda não a entendo, porque ele a torna muito complicada.

Atenciosamente, Vladimir.

 
MrBrooklin:

Prezados especialistas em programação!

Por favor, explique duas perguntas:

  1. Primeira pergunta sobre o Magic Number - ele é criado em parâmetros de entrada apenas para ordens pendentes e posições abertas (ou apenas para posições abertas?), ou para a própria EA ele também pode ser criado? Se a resposta for "sim", para que propósito isto deve ser feito. Eu realmente me confundi com esta pergunta e não tenho uma boa resposta.
  2. A segunda pergunta sobre o Magic Number - se houver mais de uma posição aberta no gráfico atual, então é possível aplicar tal parâmetro de entrada para determinar cada posição:

Talvez eu tenha um mal-entendido sobre a aplicação do Magic Number na programação.

Atenciosamente, Vladimir.

Por que você precisa do Magic Number agora? Realmente, de que adianta se preocupar com isso agora? A parada de arrasto será obviamente usada como um elemento de comércio semi-automático: alguém fez um pedido, e a EA começa a arrastá-lo através dele. Quem se importa com quem fez o pedido? Se outro robô o colocou, e você abre uma rede de arrasto, seu Conselheiro Especialista também arrastrará seu pedido. Se você não definir a rede de arrasto, ela não o fará. Este é exatamente o caso quando você não precisa de um magik. Se de repente você precisar dele mais tarde, poderá escrevê-lo mais tarde.

 
MrBrooklin:

Embora haja uma explicação no artigo de Artem Trishkin https://www.mql5.com/ru/articles/7394#node02, mas ainda não a entendo, porque ele a torna muito complicada.

Atenciosamente, Vladimir.

Você definitivamente não precisa ler isto.

 
MrBrooklin:

Continuando a aprender a linguagem de programação MQL5. Anteriormente publiquei o código do laço que inicia a enumeração das posições em aberto. Agora, depois que o loop foi iniciado, começamos a trabalhar com o símbolo no gráfico atual:

Publicarei periodicamente o código escrito com meus próprios comentários para fornecer um feedback imediato. Peço aos participantes deste tópico que me corrijam, se houver alguma imprecisão em meu código ou comentários.

Atenciosamente, Vladimir.

Novamente você está começando com uma idéia errada e o código contém um erro. Comece com as funções. Escreva uma estrutura do algoritmo usando apenas suas próprias funções. Depois pensaremos como implementá-los. Comece com o modelo padrão que é aberto ao criar um novo EA em metaeditor.

É melhor fazer a parada para que a conta líquida comece. Desta forma, será mais fácil trabalhar com a posição, pois haverá apenas uma posição para um símbolo. Na segunda versão, será possível transformá-la em um híbrido.

 
Vasiliy Sokolov:

Por que você precisa de Magia agora? Realmente, de que adianta se preocupar com isso agora? A parada de arrasto será obviamente usada como um elemento de comércio semi-automático: alguém coloca uma ordem, e a EA começa a arrastá-la. Quem se importa com quem fez o pedido? Se outro robô o colocou, e você abre uma rede de arrasto, seu Conselheiro Especialista também arrastrará seu pedido. Se você não definir a rede de arrasto, ela não o fará. Este é exatamente o caso quando você não precisa de um magik. Se de repente você precisar dele, por favor, escreva-o mais tarde.

Olá Vasily! Entendo tudo sobre o Número Mágico, mas o problema é que ele foi fortemente recomendado por Andrey Novichkov aqui.

Cumprimentos, Vladimir.

 
Vasiliy Sokolov:

Você definitivamente não precisa ler este aqui.

Estou vendo.

Com todo o respeito, Vladimir.

 
Vasiliy Sokolov:

Você está começando do lugar errado novamente, e o código contém um erro. Comece com as funções. Escreva a estrutura do algoritmo usando apenas suas próprias funções. Depois pensaremos como implementá-los. Comece com o modelo padrão que é aberto ao criar um novo EA em metaeditor.

É melhor fazer a parada para que a conta líquida comece. Desta forma, será mais fácil trabalhar com a posição, pois haverá apenas uma posição para um símbolo. Na segunda versão, será possível convertê-lo em um híbrido.

O modelo padrão foi criado. Comecei a escrever o código nele e afixarei aqui os fragmentos que já foram escritos. Eu não tinha adivinhado sobre a estrutura do algoritmo com minhas próprias funções, obrigado pela dica! Obrigado também pela dica sobre a conta netting!

Se não é segredo, qual é o erro no código?

Se estiver aqui:

 for(i; i>=0; i--)

Eu já corrigi isso:

 for(i; i>0; i--)

Atenciosamente, Vladimir.

Razão: