Versão beta do livro online sobre programação MQL4 - por Sergey Kovalev (SK.) - página 11

 

para SK

1. O tutorial foi postado como uma versão beta, ou seja, com uma oferta de crítica.
2. bem, sublinhei a frase e encontrei a linha "todos os arrays são estáticos por definição"))) ou seja, este não é o meu problema.
3. se seguirmos arbitrariamente esta linha criticada do livro de texto, supostamente todas as matrizes por definição são estáticas, podemos obter um erro de endereço "incorrred start position 0 for ArrayMinimum function" no traçador
(esta única linha não diminui os méritos do livro didático, kudos para você SK)
4) Assim. Uma matriz estática é, antes de tudo, no sentido da alocação de memória,
ou não, pode haver uma nova inicialização de cada elemento.
O que vemos na MQL4? A cada chamada, cada elemento é ordenadamente inicializado com zero padrão, explicitamente a partir da definição.
Isto é, os dados em subprogramas não são armazenados sem pré-definição estática.
Isso significa que os subprogramas MQL4 são executados com alocação dinâmica de memória variável.
Todas as variáveis e todas as arrays sem tamanho explícito nos subprogramas MQL4 são dinâmicas por padrão. Caso contrário, elas devem ser fixadas com uma descrição estática.
5. Por exemplo, a alocação dinâmica de memória é uma oportunidade de declarar o dobro a[][]...[]; com dimensões vazias,
mas é necessário mencionar que o programador deve ser responsável pela abordagem.
(No exemplo acima, a função padrão é abordada por uma referência antiga e não se enquadra dentro dos limites da matriz).

 
Korey:

para SK


OK.
 
A questão é a seguinte.

O livro é escrito em russo. Os desenvolvedores dizem que a tradução para o inglês está em processo, e depois aparecerá em chinês. Tenho certeza de que apenas as explicações são traduzidas; ninguém vai tocar no código fonte.

Muitos programadores por natureza dão nomes compreensíveis a variáveis de sua linguagem, por exemplo aqui no site que conheci massiv (masiv), Koef e mesmo MuH_IIIuPuHa_KaHaJIa. Assim, enquanto folheava um livro didático, encontrei o seguinte código:




O que um residente de Chinatown tem a dizer olhando para a variável Tip ? Nós sabemos o que é, mas o que os outros sabem?

( Encontrado aqui: https://book.mql4.com/ru/trading/orderclose )
 
Parabellum:
A questão é a seguinte.

O livro é escrito em russo. Os desenvolvedores dizem que a tradução para o inglês está em processo, e depois aparecerá em chinês. Tenho certeza de que apenas as explicações são traduzidas; ninguém vai tocar no código fonte.

Muitos programadores por natureza dão nomes compreensíveis a variáveis de sua linguagem, por exemplo aqui no site que conheci massiv (masiv), Koef e mesmo MuH_IIIuPuHa_KaHaJIa. Assim, enquanto folheava um livro didático, encontrei o seguinte código:




O que um residente de Chinatown tem a dizer olhando para a variável Tip ? Nós sabemos o que é, mas o que os outros sabem?

( Encontrado aqui: https://book.mql4.com/ru/trading/orderclose )

Obrigado pela observação!
Os nomes das variáveis nos exemplos, naturalmente, não tocarão - em chinês, por exemplo, o código fonte não usa hieróglifos, eles têm que lidar com o alfabeto latino em qualquer caso. Para entender o significado desta variável, o "habitante de Chinatown" simplesmente olhará para o comentário. Além disso, os habitantes dos países de língua inglesa também não perceberão a palavra Tip como "tipo". Porque "tipo" em inglês seria "type". E dica é "dica" ou mesmo "dica". Mas isso não os impede de entender os códigos dos desenvolvedores que falam russo. ))
 

Mas eu acho que um falante nativo ainda deve olhar para os nomes das variáveis. Para não pisar em um ancinho. E se a variável Tip - seu som é o mesmo que a palavra russa de três letras, que tem no meio a letra U (.u.) . E se não for? Não ficaria bem em um livro.

Pode ser mais simples e mais correto.

int _OrdetType=OrderType();

se ( _OrdetType > 1 ) ....

 

A suposição é que o leitor ainda vai pensar um pouco...

 

Aqui https://book.mql4.com/ru/build/lots faltam marcas de divisão

Lots_New=MathFloor(Free*Percent100One_Lot/Step)*Step;// Calcular

Precisamos de

Lots_New=MathFloor(Free*Percent/100/One_Lot/Step)*Step;// Calcular


É um pouco embaraçoso, acho que consigo ver o código. Eu quero pegar uma fatia, mas não toda. Isto é, eu copio o que vejo no buffer e o colo no texto do meu programa. Mas não está inserido corretamente. O código inteiro vai para uma linha. O código de fim de linha no livro e no editor MQL muito provavelmente não coincidem

 

aqui está outra pequena edição.

https://book.mql4.com/ru/build/trading

O controle da chave() é passado para a etiqueta da caixa 10 (bloco 2-3).


Necessidade

.... (bloco 2).

 
Prival:

Aqui https://book.mql4.com/ru/build/lots faltam marcas de divisão

Lots_New=MathFloor(Free*Percent100One_Lot/Step)*Step;// Calcular

Precisamos de

Lots_New=MathFloor(Free*Percent/100/One_Lot/Step)*Step;// Calcular


É um pouco embaraçoso, acho que consigo ver o código. Eu quero pegar uma fatia, mas não toda. Isto é, eu copio o que vejo no buffer e o colo no texto do meu programa. Mas não está inserido corretamente. O código inteiro vai para uma linha. O código de fim de linha no livro e no editor MQL muito provavelmente não coincidem


Sim, são os mesmos problemas de formatação. Consertaremos isso amanhã.

Obrigado por encontrar o erro.

Há arquivos autenticados para todos os códigos acabados. Acredita-se que o código nos arquivos esteja correto. A propósito, ele também pode ser usado como referência para procurar erros de digitação e imprecisões.

 
Prival:

aqui está outra pequena edição.

https://book.mql4.com/ru/build/trading

O controle da chave() é passado para a etiqueta da caixa 10 (bloco 2-3).


Necessidade

.... (bloco 2).



Não há necessidade de corrigir aqui. Todos os blocos têm um ponto de partida e um ponto de chegada. Neste caso, 2 é o começo, 3 o fim.

Obrigado de qualquer forma:)