Características del lenguaje mql4, sutilezas y técnicas - página 17

 

Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading

Características del lenguaje mql5, consejos y trucos

fxsaber, 2019.02.20 07:26

Los precios no están normalizados en todos los modos de comprobación.

Por decirlo suavemente, se trata de un error en el Probador.


Si esto también se aplica al modo Birt, no lo sé.

 

Disculpa si esto es off-topic (no puedo decir que siga el desarrollo del lenguaje), ¿podrías explicar exactamente qué hace esta línea?

#property strict

Déjeme explicarle.

Hay un script que compara dos precios (idénticos en 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;
}

En MT los precios son iguales, pero la diferencia no es igual a cero (como se ha escrito anteriormente).

Si se elimina esta línea(#property strict), la diferencia es cero.

¿Por qué?

 
Dmitry Rannev :

Disculpa si esto es off-topic (no puedo decir que siga el desarrollo del lenguaje), ¿podrías explicar exactamente qué hace esta línea?

Déjeme explicarle.

Hay un script que compara dos precios (idénticos en MT).

En MT los precios son iguales, pero la diferencia no es igual a cero (como se ha escrito anteriormente).

Si se elimina esta línea ( #propiedad estricta), la diferencia es cero.

¿Por qué?

" #property strict" sólo es útil con mql4. Con mql5 es inútil, ya que el modo "estricto" es siempre verdadero.
 
Alain Verleyen:
" #property strict" sólo es útil con mql4. Con mql5 es inútil porque "strict" es siempre verdadero.

Estamos hablando de la MT4. Más arriba se ha hablado del problema de la normalización. Estamos tratando de entender por qué algunos precios en MT4 son iguales y cuando se comparan no lo son. Esto es una continuación de.

 
Dmitry Rannev:

Estamos hablando de la MT4. Más arriba se ha hablado del problema de la normalización. Estamos tratando de entender por qué algunos precios en MT4 son iguales y cuando se comparan no lo son. Esto es una continuación.

Dmitry, este tema está agotado. Perdóname si revelo un secreto, pero tienes gente como Kirill alias Programador, Sergei ... No diré el apellido, "es demasiado famoso para darlo" © Lo saben todo...

 
Dmitry Rannev:

Disculpa si esto es off-topic (no puedo decir que siga el desarrollo del lenguaje), ¿podrías explicar exactamente qué hace esta línea?

Déjeme explicarle.

Hay un script que compara dos precios (idénticos en MT).

En MT los precios son iguales, pero la diferencia no es igual a cero (como se ha escrito anteriormente).

Si se elimina esta línea(#property strict), la diferencia es cero.

¿Por qué?

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

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


Lo estricto no afecta a la igualdad. Sólo en la impresión: muestra el número de forma aproximada o más precisa.

 
Dmitry Rannev:

En MT los precios son iguales, pero la diferencia no es cero (como se ha escrito anteriormente).

Si se elimina esta línea(#property strict), la diferencia es cero.

No se puede comprobar la igualdad de los números de tipo doble (incluido el cero), hay que comparar su diferencia con el valor mínimo(DBL_EPSILON, FLT_EPSILON, Point)

 
Ilya Malev:

No se puede comprobar la igualdad de los números de tipo double (incluido el cero), hay que comparar su diferencia con el valor mínimo(DBL_EPSILON, FLT_EPSILON, Point)

No estamos hablando de eso.

 
fxsaber:

Se trata de otra cosa.

Intenté imaginar cuál era la causa de la pregunta y llegué a la conclusión de que podía haber algún error en el algoritmo, no sólo una pregunta sobre la impresión.

 
Ilya Malev:

Intenté imaginar cuál era la causa del problema y llegué a la conclusión de que podía haber algún error en el algoritmo y no sólo una cuestión de impresión.

El problema fue descrito por fxsaber más arriba. Estamos tratando de encontrar la causa.