Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1247

 
MrBrooklin:

Boa noite a todos!

Na minha velhice estou a tentar dominar as noções básicas da MQL5. A minha curiosidade está a matar-me - pergunto-me se não consigo dominar a programação se tiver cerca de 60 anos. Embora, tenha feito amigos com HTML simples, até criei nele os meus próprios sítios web. Simples, na verdade, mas mesmo assim... Se as minhas perguntas causarem irritação, então digam-me imediatamente, então não farei perguntas ingénuas e não deixarei as pessoas nervosas.

Assim, abri o primeiro código que vi. Comentei o significado de uma linha deste código utilizando Google Translator e MQL5 Reference. O que é que eu peço à comunidade? Olha para os comentários e se não forem verdadeiros, por favor corrige o meu pensamento:

É um livro aberto a alguns, mas para mim parece-me os mesmos caracteres chineses. Por favor, não ria muito.

Porque é que estou a fazer isto? Assim, estou apenas a tentar descobrir por mim próprio o quão desesperada estou na programação.

Cumprimentos, Vladimir.

Recomendo a utilização do helper ME - descreve o objectivo de todos os operadores e funções linguísticas.

https://www.mql5.com/ru/docs/trading/positionselect

Документация по MQL5: Торговые функции / PositionSelect
Документация по MQL5: Торговые функции / PositionSelect
  • www.mql5.com
Выбирает открытую позицию для дальнейшей работы с ней. Возвращает true при успешном завершении функции. Возвращает false при неудачном завершении функции. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError(). При независимом представлении позиций (ACCOUNT_MARGIN_MODE_RETAIL_HEDGING) по каждому символу одновременно...
 
MrBrooklin:

Boa noite a todos!

Na minha velhice estou a tentar dominar as noções básicas da MQL5. A minha curiosidade está a matar-me - pergunto-me se não consigo dominar a programação se tiver cerca de 60 anos. Embora, tenha feito amigos com HTML simples, até criei nele os meus próprios sítios web. Simples, na verdade, mas mesmo assim... Se as minhas perguntas causarem irritação, então digam-me imediatamente, então não farei mais perguntas ingénuas e não irritarei as pessoas.

Assim, abri o primeiro código que vi. Comentei o significado de uma linha deste código utilizando Google Translator e MQL5 Reference. O que é que eu peço à comunidade? Olha para os comentários e se não forem verdadeiros, por favor corrige o meu pensamento:

É um livro aberto a alguns, mas para mim parece-me os mesmos caracteres chineses. Por favor, não ria muito.

Porque é que estou a fazer isto? Assim, estou apenas a tentar descobrir por mim próprio o quão desesperada estou na programação.

Cumprimentos, Vladimir.

Se tiver a vontade, é melhor para o seu cérebro do que resolver palavras cruzadas. Basta tentar compreender imediatamente que as contas Hadge são escritas de forma diferente das contas Netting. Esta linha de código

if(PositionSelect(_Symbol)) // если выбираем открытую позицию на графике текущего символа

é utilizada para Netting, mas pode causar erros nas contas Hadge se mais do que uma posição estiver aberta.

 
Aleksey Vyazmikin:

Recomendo a utilização do helper ME - a finalidade de todos os operadores e funções linguísticas são aí descritas.

https://www.mql5.com/ru/docs/trading/positionselect

Olá Alexey!

Obrigado pelo seu feedback. Estou a utilizar a ajuda do MetaEditor. Neste momento o principal problema é compreender a finalidade dos operadores e funções, bem como o porquê de precisar de um determinado operador ou função num determinado lugar do código do programa. É mais ou menos tudo descrito na FAQ, mas como entendo esta informação não é para aqueles que começam a entrar em detalhes do zero, mas para aqueles que já têm alguma experiência em programação noutras linguagens.

Cumprimentos, Vladimir.

 
Alexey Viktorov:

Se o desejar, é melhor para o seu cérebro do que fazer palavras cruzadas. Basta tentar compreender imediatamente que as contas Hadge não são escritas da mesma forma que as contas Netting. Esta linha de código

Esta linha de código é utilizada para Netting mas pode causar erros nas contas Hadge se for aberta mais do que uma posição.

Olá Alexey!

Obrigado pela dica sobre as contas Hadge e Netting, bem como pelo apoio.

Compreendi que se não há correcção nos comentários a uma linha de código, já é bom. Isto significa que compreendi a essência desta linha de código o mais de perto possível. Continuarei a estudar a programação da MQL5 e ocasionalmente publicarei os meus comentários. Talvez, em algum momento do auto-estudo, eu seja capaz de desenvolver sozinho um simples código de Expert Advisor.

Atenciosamente, Vladimir.

Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
Документация по MQL5 - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
  • www.mql5.com
MetaQuotes Language 5 (MQL5) - язык программирования технических индикаторов, торговых роботов и вспомогательных приложений для автоматизации торговли на финансовых рынках. MQL5 является современным языком высокого уровня и разработан MetaQuotes Software Corp. для собственной торгово-информационной платформы. Синтаксис языка максимально близок...
 

Olá a todos!

Continuo a aprender MQL5 e aqui está uma nova linha de código, que não é clara mesmo depois de trabalhar com ela através da Ajuda e do Google Translate.

FileSeek(FileHandle,0,SEEK_SET); // перемещаем положение указателеля в файле с уникальным указателем на "0" байт в начале файла

O comentário é feito por mim, mas o seu significado não é totalmente claro. Ainda mal descobri o que é FileHandle. Dividi-lo em duas palavras File and Handle. O Google traduziu-o como um descritor de ficheiro. O que é um descritor e o que é que ele faz? É bom que o autor do artigo tenha explicado aqui https://www.mql5.com/ru/articles/496 que o Handle é um ponteiro único para algo (um ficheiro, um indicador, etc.) em russo.

Agora resta compreender o significado de todo o código. Estou a pedir ajuda à comunidade, passei tanto tempo com este código até às 3 da manhã, e a minha cabeça é completamente desajeitada.

Cumprimentos, Vladimir.

Быстрый старт или краткий курс для начинающих
Быстрый старт или краткий курс для начинающих
  • www.mql5.com
Здравствуй дорогой читатель. В данной статье я попробую рассказать и покажу как можно просто и быстро освоить принципы построения торговых советников, работу с индикаторами и т.д. Эта статья ориентирована на новичков, в ней не будет сложных и трудных для понимания примеров. Скорей всего, она не будет интересной и познавательной для тех, кто уже...
 
MrBrooklin:

Olá a todos!

Continuo a aprender MQL5 e aqui está uma nova linha de código, que não é clara mesmo depois de trabalhar com ela através da Ajuda e do Google Translate.

O comentário é feito por mim, mas o seu significado não é totalmente claro. Ainda mal descobri o que é FileHandle. Dividi-lo em duas palavras File and Handle. O Google traduziu-o como um descritor de ficheiro. O que é um descritor e o que é que ele faz? É bom que o autor do artigo tenha explicado aqui https://www.mql5.com/ru/articles/496 que o Handle é um ponteiro único para algo (um ficheiro, um indicador, etc.) em russo.

Agora resta compreender o significado de todo o código. Estou a pedir ajuda à comunidade, passei tanto tempo com este código até às 3 da manhã, e a minha cabeça é completamente desajeitada.

Atenciosamente, Vladimir.

Mas porque deve traduzir algo no google quando a documentação tem tudo escrito em russo?

Move a posição do ponteiro do ficheiro pelo número especificado de bytes em relação à posição especificada.

E eu traduziria o seu comentário da seguinte forma: "Move o ponteiro do ficheiro desde o início por 0 bytes. Por outras palavras, até ao início do ficheiro".

Ponto de referência para a compensação. Pode tomar um dos valores de ENUM_FILE_POSITION

Identificador

Descrição

SEEK_SET

Início do ficheiro

SEEK_CUR

Posição actual do ponteiro do ficheiro

VER_PONTO

Fim do ficheiro

Документация по MQL5: Файловые операции / FileSeek
Документация по MQL5: Файловые операции / FileSeek
  • www.mql5.com
//|                                                Demo_FileSeek.mq5 | //|                        Copyright 2013, MetaQuotes Software Corp. | //|                                              https://www.mql5.com | //| Script program start function                                    |...
 
Alexey Viktorov:

E porquê traduzir algo com o google, quando a documentação diz tudo em russo?

E eu traduziria o seu comentário como: "Move o ponteiro do ficheiro desde o início para 0 bytes. Por outras palavras, até ao início do ficheiro".

Identificador

Descrição

SEEK_SET

Início do ficheiro

SEEK_CUR

Posição actual do ponteiro do ficheiro

VER_PONTO

Fim do ficheiro

Olá Alexey!

Pesquisei no Google o significado da combinação da palavra FileHandle. Queria compreender o que era e de onde veio. A Ajuda não me ajudou, por isso tive de recorrer ao Google. Quando descobri, verificou-se que o próprio autor do código tinha criado uma variável para armazenar o ficheiro com um ponteiro único. Em termos de FileSeek e SEEK_SET a ajuda ajudou-me, mas o significado da corda não foi claro. Agora, com a ajuda da sua dica, tornou-se claro para que serve num ficheiro com um ponteiro único.

Muito obrigado pela vossa ajuda!

Atenciosamente, Vladimir.

Документация по MQL5: Константы, перечисления и структуры / Константы ввода/вывода / Позиционирование внутри файла
Документация по MQL5: Константы, перечисления и структуры / Константы ввода/вывода / Позиционирование внутри файла
  • www.mql5.com
Большая часть файловых функций связана с операциями чтения/записи информации. При этом с помощью функции FileSeek() можно указывать положение файлового указателя на позицию внутри файла, с которой будет...
 
MrBrooklin:

Olá Alexey!

Pesquisei no Google o significado da frase FileHandle. Eu queria compreender o que é e de onde veio. A Ajuda não foi útil, por isso tive de ir ao Google. O texto de ajuda para FileSeek e SEEK_SET foi muito útil, mas o significado da corda não foi claro. Agora, com a ajuda da sua dica tornou-se claro para que serve no ficheiro com um ponteiro único.

Muito obrigado pela vossa ajuda!

Cumprimentos, Vladimir.

O ponteiro não é único, é apenas a posição inicial de uma escrita ou leitura. É como se escrevêssemos uma declaração. O cabeçalho começa na segunda metade da página, o resto do texto na margem esquerda da página. Ou começamos um novo parágrafo um pouco atrás da borda da linha. Este é o início da linha e este é o ponteiro. Podemos mover o início de uma linha para qualquer lugar do texto existente e escrever ou ler a partir desse lugar.

O cabo do ficheiro é único. Também pode ser chamado um identificador. Na realidade, é uma variável habitual. Pode chamar-lhe abrakadabra e atribuir-lhe um cabo de ficheiro.

 
Sergey:

Boa tarde!

Estou a tentar descobrir o código indicador. Preso numa linha.

O que significa a última linha e como pode ser reescrita de uma forma mais simples (mais clara)?

É escrito de forma muito mais simples do que qualquer outra construção. É chamado: operador ternário

cancl[i] = (acD==1 && aoD==1) ? 0 : (acD==2 && aoD==2) ? 1 : (acD==1 && aoD==2)? 2 : 3;
cancl[i] = if(acD==1 && aoD==1) { 0 } else { if(acD==2 && aoD==2) { 1 else { (acD==1 && aoD==2)? 2 : 3;
Eu mostrei o código convencionalmente, por isso esperemos que lhe apanhe o jeito
Документация по MQL5: Основы языка / Операторы / Условный оператор ?:
Документация по MQL5: Основы языка / Операторы / Условный оператор ?:
  • www.mql5.com
В качестве первого операнда – "выражение1" – может быть использовано любое выражение, результатом которого является значение типа bool. Если результат равен , то выполняется третий операнд – "выражениеЗ". Второй и третий операнды, то есть "выражение2" и "выражениеЗ", должны возвращать значения одного типа и не должны иметь тип void. Результатом...
 
Sergey:

Boa tarde!

Estou a analisar o código do indicador. Estou preso numa linha.

O que significa a última linha e como pode ser reescrita de uma forma mais simples (mais clara) ?

// cancl[i] = (acD==1 && aoD==1) ? 0 : (acD==2 && aoD==2) ? 1 : (acD==1 && aoD==2)? 2 : 3;

if      (acD==1 && aoD==1)   { cancl[i]=0; }
else if (acD==2 && aoD==2)   { cancl[i]=1; }
else if (acD==1 && aoD==2)   { cancl[i]=2; }
else                         { cancl[i]=3; }

mas não é mais simples ou mais claro na minha opinião. Está quase no estilo do MT :-) Para estar no estilo deve haver mais cordas e elas devem ir num estilo de "escadas" :-)