Errores, fallos, preguntas - página 1782
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
¿Cuáles funcionan?
La regla de perder los dígitos significativos y rellenarlos con obras al azar
El resultado es largo, pero en los cálculos intermedios del doble y ahí es donde se pierden los dígitos significativos
(Dígitos+1)*3-1=17
La regla de perder los dígitos significativos y rellenarlos con obras al azar
El resultado es largo, pero en los cálculos intermedios del doble y ahí es donde se pierden los dígitos significativos
(Dígitos+1)*3-1=17
Gracias por la información.
Sin embargo, la información es difícil de captar, es decir, el número puede ser así, pero no se pueden hacer cálculos con él...
Este es un ejemplo de código donde se convierte de cadena a número
Print ("CalcY=",CalcY);
Imprime el número 11111111111104.
Es decir, no hay cálculos aquí o me equivoco?
¿Es posible manejar estos números o se trata de limitaciones lingüísticas?
Entonces no hay cálculos aquí, ¿o me equivoco?
Un cálculo es cualquier operación (en estecaso una conversión). Para el número especificado StringToDouble devuelve el doble con pérdida de precisión
StringToInteger devuelve long, pero otras funciones que operan con double no pueden utilizarse en los cálculos sin pérdida de precisión, como NormalizeDouble, MathPow
Cálculo - cualquier operación (en este caso una conversión). StringToDouble devuelve doble - hay una pérdida de precisión
StringToInteger devuelve long, pero otras funciones que operan con double no pueden utilizarse en los cálculos sin pérdida de precisión, como NormalizeDouble, MathPow,
StringToInteger funcionó para expresar el número, pero luego se pone peor, supongo que hay que descomponer el número en sus componentes para las operaciones matemáticas...
Print ("CalcZ=",CalcZ);
double Test=CalcZ;
Print ("Test=",Test);
Test=1.111111111111111e+17
De nuevo, está escrito en el servicio de ayuda
INT_MAX
Valor máximo que puede ser representado por el tipo int
2147483647
Entonces, ¿cómo StringToInteger realiza la conversión y la almacena en long si el número es mayor que el permitido?
Entonces, ¿cómo StringToInteger convierte y almacena en long si el número es mayor que el permitido?
StringToInteger devuelve originalmente long dentro deLONG_MINLONG_MAX(también podría llamarse StringToColobok)
StringToInteger devuelve originalmente long (también podría haberse llamado StringToBoob)
Esto es cierto, pero el archivo de ayuda es muy inteligente.
"
Convierte una cadena que contiene una representación de caracteres de un número en un número int(entero).
"
Eso es lo que me confundió.
Gracias por la información.
¿Supongo que la representación numérica anterior no cabrá en el búfer gráfico?
¿Supongo que el número anterior no cabrá en el búfer gráfico?
Se escriben como B'11111111111111111111111111111111'
Afirmo (y propongo que se compruebe) que cuando se cambia el timeframe de M5 a M15 no se envía el comando M5 Deinit al primer indicador (y sólo a él - en este caso M5) y no se descargará del gráfico hasta que el usuario borre el EA
Tenga en cuenta que en MT5, el núcleo de cálculo del indicador es un recurso compartido con un contador de uso en su propio gestor. Si diferentes programas o ventanas utilizan el indicador con los mismos parámetros, una copia de cálculo con el contador de uso funciona realmente. Esto ahorra mucho dinero cuando un operador utiliza los mismos indicadores en los gráficos y en un Asesor Experto.
El gestor de indicadores está diseñado para que elimine físicamente los indicadores de forma asíncrona y con un retraso. Y mientras tanto, se crea una nueva copia de trabajo con nuevos parámetros, que a menudo se inicializa antes de borrar físicamente la copia antigua.
El gestor de indicadores está diseñado para que elimine físicamente los indicadores de forma asíncrona y con un retraso. Y, mientras tanto, se crea una nueva copia de trabajo con nuevos parámetros, que suele inicializarse antes de borrar físicamente la copia antigua.
Simplifiquemos el indicador
void Prn( string f, int i = -1 ) { Print( f, "->", StringSubstr( EnumToString( Period()), 7 ), (i == -1 ? "" : ":" + i )); }
void OnInit() { Prn( __FUNCTION__ ); }
void OnDeinit( const int reason ) { Prn( __FUNCTION__, reason ); }
int OnCalculate( const int, const int, const int, const double& [] ) { return 0; }
Vamos a adjuntar el Test.mq5 al gráfico M5 y a continuación cambiar el periodo del gráfico de M5->M15
Resultado:
2017.02.06 00:54:20.897 OnInit->M5
2017.02.06 00:54:25.553 OnInit->M15
Pregunta: ¿Cuándo se llamará a OnDeinit->M5?
Mi respuesta: ¡Nunca!
Su respuesta anterior: de forma asíncrona y con retraso