Características da linguagem mql5, subtilezas e técnicas - página 115

 
A100:

Não vou escrever o que posso, no caso de se tornar simples e pavimentar_ novamente

Não compreendo o seu comportamento.

 
Comentários não relacionados com este tópico foram transferidos para "Perguntas dos principiantes do MQL5 MT5 MetaTrader 5".
 
Alexey Navoykov:
Fundir um ponteiro não faz nada. Não importa como se funde, o objecto é o mesmo.

Estou corrigido.

 

Quem tentou testar com carrapatos reais, é necessário criar um histórico de 1 minuto ou este será formado com base em carrapatos descarregados(símbolo personalizado)?

De alguma forma não tenho um teste, carreguei sete dias de carraças, estou a fazer o teste e isto é o que está nos registos:

2018.12.24 22:04:16.925 Core 1  no data synchronized, 41 bytes read
2018.12.24 22:04:16.925 Core 1  symbol EURUSD_custom synchronization error
2018.12.24 22:04:16.925 Core 1  cannot get history EURUSD_custom,M1
 
forexman77:

Quem tentou testar com carrapatos reais, é necessário criar um histórico de 1 minuto ou este será formado com base em carrapatos descarregados (símbolo personalizado)?

De alguma forma não vou testar, carregado sete dias de carraças, executar o teste é o que está nos registos:

Até agora.

 

O DoubleToString para cálculos de preços "mesmos" pode dar resultados diferentes. Neste caso, o DoubleToString pode ser diferente do NormalizeDouble.

#property strict

#define  PRINT(A) Print(#A + " = " + (string)(A))

void OnStart()
{
  const double Koef =  0.25;
  const int iDelta = 32;
  const double point = 0.00001;
  
  const double high = 1.06736;
  const double low = 1.06676;
  
  const double Avg = (high + low) * 0.5;  
  const double Size = (high - low) * Koef * 0.5;
  
  // Вычисление одной и той же цены разной последовательностью сложения одного и того же количества пипсов
  const double Price1 = Avg - Size - point * iDelta;
  const double Price2 = Avg - (Size + point * iDelta);  
  
  PRINT(DoubleToString(Price1, 5));   // DoubleToString(Price1,5) = 1.06666
  PRINT(DoubleToString(Price2, 5));   // DoubleToString(Price2,5) = 1.06667

  PRINT(NormalizeDouble(Price1, 5)); // NormalizeDouble(Price1,5) = 1.06667
  PRINT(NormalizeDouble(Price2, 5)); // NormalizeDouble(Price1,5) = 1.06667
}
 
fxsaber:

O DoubleToString para cálculos de preços "mesmos" pode dar resultados diferentes. Neste caso, o DoubleToString pode ser diferente do NormalizeDouble.

O comportamento descrito não é uma característica exclusiva da linguagem MQL5."A forma como os números reais são representados na memória da máquina é definida pela norma IEEE 754 e é independente de plataformas, sistemas operativos e linguagens de programação. "
 

Se alguém precisar de um modelo de variável estática não resolvida baseado em https://www.mql5.com/ru/forum/1111/page2364#comment_10048274

O problema é resolvido através da implementação do método no local da declaração. Não é muito agradável, mas funciona.

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2018.12.28
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 
Ilya Malev:

Se alguém precisar de um modelo de variável estática não resolvida baseado em https://www.mql5.com/ru/forum/1111/page2364#comment_10048274

O problema é resolvido através da implementação do método no local da declaração. Não é muito agradável, mas funciona.

Tem aí uma palavra extra estática. Não é utilizado fora de uma classe

 
Alexey Navoykov:

Tem aí uma palavra extra estática listada. Não é utilizado fora da classe.

(cansado) se fosse o problema, o erro "'k' - redefinição; modificadores de tipo diferente" teria aparecido, mas não está na imagem do ecrã. Portanto, o compilador não se importa e não é só isso.


Razão: