Características da linguagem mql4, sutilezas e técnicas - página 17

 

Fórum sobre comércio, sistemas automatizados de comércio e teste de estratégias comerciais

Características da linguagem mql5, dicas e truques

fxsaber, 2019.02.20 07:26

Os preços não são normalizados em todos os modos Tester!

Para dizer de forma branda, isto é um bug no Testador.


Se isto também se aplica ao modo Birt-mode, eu não sei.

 

Desculpe se isto é fora de tópico (não posso dizer que acompanho o desenvolvimento da linguagem), você poderia explicar exatamente o que esta linha faz?

#property strict

Deixe-me explicar.

Há um roteiro que compara dois preços (idênticos na MT).

#property strict

void OnStart()
{
   const int Total = OrdersHistoryTotal();
   int Prices1, Prices2;
   
   double open_price, close_price;
   OrderSelect("37027330", SELECT_BY_TICKET, MODE_HISTORY);
   open_price = OrderOpenPrice();
   close_price = OrderClosePrice();

   Print(open_price);
   Print(close_price);
   Print(open_price-close_price);
   
   return;
}

Na MT os preços são iguais, mas a diferença não é igual a zero (como escrito acima).

Se esta linha(#property strict) for removida, a diferença é zero.

Por quê?

 
Dmitry Rannev :

Desculpe se isto é fora de tópico (não posso dizer que acompanho o desenvolvimento da linguagem), você poderia explicar exatamente o que esta linha faz?

Deixe-me explicar.

Há um roteiro que compara dois preços (idênticos na MT).

Na MT os preços são iguais, mas a diferença não é igual a zero (como escrito acima).

Se esta linha ( #property strict) for removida, a diferença é zero.

Por quê?

"#propriedade rigorosa" só é útil com mql4. Com mql5 é inútil, pois o modo "estrito" é sempre verdadeiro.
 
Alain Verleyen:
"#propriedade rigorosa" só é útil com mql4. Com mql5 é inútil porque "rigoroso" é sempre verdade.

Este é o MT4 de que estamos falando. Houve uma discussão acima sobre o problema da normalização. Estamos tentando entender porque alguns preços na MT4 são iguais e quando comparados não são. Esta é uma continuação de.

 
Dmitry Rannev:

Este é o MT4 de que estamos falando. Houve uma discussão acima sobre o problema da normalização. Estamos tentando entender porque alguns preços na MT4 são iguais e quando comparados não são. Esta é uma continuação.

Dmitry, este tópico é usado até o chão. Perdoe-me se eu revelar um segredo, mas você tem pessoas como Kirill aka Programmer, Sergei ... Não vou dizer o sobrenome, "é muito famoso para dá-lo" © Eles sabem tudo...

 
Dmitry Rannev:

Desculpe se isto é fora de tópico (não posso dizer que acompanho o desenvolvimento da linguagem), você poderia explicar exatamente o que esta linha faz?

Deixe-me explicar.

Há um roteiro que compara dois preços (idênticos na MT).

Na MT os preços são iguais, mas a diferença não é igual a zero (como escrito acima).

Se esta linha(#property strict) for removida, a diferença é zero.

Por quê?

void OnStart()
{
  double Price1 = DBL_EPSILON;
  double Price2 = 0;

  Print(Price1 - Price2);          // 0 - грубо показывает.
  Print((Price1 - Price2) * 1 e15); // не ноль
}


O estrito não tem nenhum efeito sobre a igualdade. Somente em Impressão - ou mostra o número de forma aproximada ou mais precisa.

 
Dmitry Rannev:

Na MT os preços são iguais, mas a diferença não é zero (como escrito acima).

Se esta linha(#property strict) for removida, então a diferença é zero.

Os números do tipo duplo não podem ser verificados quanto à igualdade (incluindo zero), precisamos comparar sua diferença com o valor mínimo(DBL_EPSILON, FLT_EPSILON, Ponto)

 
Ilya Malev:

Os números do tipo duplo não podem ser verificados quanto à igualdade (incluindo zero), precisamos comparar sua diferença com o valor mínimo(DBL_EPSILON, FLT_EPSILON, Ponto)

Não é disso que estamos falando.

 
fxsaber:

Trata-se de algo mais.

Tentei imaginar o que causou a pergunta e cheguei à conclusão de que poderia ter havido alguns erros no algoritmo, não apenas uma pergunta sobre a impressão.

 
Ilya Malev:

Tentei imaginar o que causou o problema e cheguei à conclusão de que poderia ter havido alguns erros no algoritmo e não apenas uma pergunta sobre a impressão.

O problema foi descrito pelo fxsaber acima. Estamos tentando encontrar a causa.

Razão: