Errores, fallos, preguntas - página 2047

 
Alexey Navoykov:

No entiendo lo que quieres. Dije que estaba hablando de "inicialización de variables". Y en este contexto, las variables estáticas y globales se comportan de forma idéntica. Incluso te he dado un enlace a la documentación:inicialización de variables

Obsérvese que las variables estáticas y globales están juntas en todas partes.

Y no criticamos la secuencia de inicialización porque no está relacionada con el problema en cuestión. Te recuerdo que el problema es que el compilador NO genera un error donde debería. Si una variable estática está sin inicializar, no se puede acceder a ella.

Bueno, cambia el nombre de la variable global, si te molesta tanto. No afectará al resultado de ninguna manera.

Hola, aquí vamos... ¿Has leído el enlace tú mismo?

Aparte de mql también conozco, no muy bien, sólo VBA y sólo allí me encontré con la directiva que requiere la inicialización de las variables. Tenga en cuenta que queda a la entera discreción del programador. ¿Y quieres que MQ fuerce la inicialización de absolutamente todas las variables? ¿Y cambiar la secuencia de inicialización en cada reclamación de dichos usuarios? Se le dio la oportunidad de desviarse de las reglas, entendiendo lo que está haciendo, y está pidiendo que se excluya tal oportunidad?

Parece que sólo buscas algo con lo que meterte y manchar el lenguaje mql. Elimina static de una variable en una clase y serás feliz.

 

¿Qué sucede cuando la variable del sistema que obtenemos de GetTickCount() se desborda?

¿Hay alguna reacción estándar del terminal?

¿Es necesario supervisar este momento de forma programada e implementar una respuesta?

 
Alexey Viktorov:

Hola, aquí vamos... ¿Has leído este enlace tú mismo?

Aparte de mql sólo conozco, también no muy bien, VBA y sólo ahí me encontré con la directiva de inicialización obligatoria de variables. Tenga en cuenta que queda a la entera discreción del programador. ¿Y quieres que MQ fuerce la inicialización de absolutamente todas las variables?

Pues ahí está la razón. No sólo no sabes muy bien (y tú mismo lo has dicho cuántas veces), sino que además sabes VBA, que poco tiene que ver con este lenguaje. Conozco bastante bien el C++. Este es un lenguaje muy claro y estricto, no se permite el libre albedrío allí, que está fantaseando. Y MQL fue creado a imagen y semejanza de C++. Así que dejémoslo. Para empezar, familiarícese con C++ y entonces tendrá sentido discutir sobre algo.

p.d. Por cierto, me acabo de dar cuenta de que originalmente has llevado la conversación en la dirección equivocada, porque ya he olvidado dónde empezó todo, y ahora he vuelto a ver mi código original y me he dado cuenta de que tu primer ataqueaquí era completamente off-topic. ¡Y cómo no iba a prestar atención de inmediato! En mi código, la variable estática se inicializa exactamente como una constante, tal y como se describe en la documentación. Así que el problema es que no se ha inicializado una mierda. Y me has empezado a decir que es porque se debe inicializar con una constante. Y aquí vamos...

 

¿Por qué no puedo inicializar el array con variables?

void (double a, double b,double c )

{

double inp[3]={a,b,c};   // компилятор ругается 'а' - constant expression required      

}

 
Alexey Kochetkov:

¿Por qué no puedo inicializar el array con variables?

Porque en MQL sólo se puede inicializar con constantes.
 
Alexey Navoykov:

Pues ahí está la razón. No sólo no sabes muy bien (y tú mismo lo has dicho cuántas veces), sino que además sabes VBA, que poco tiene que ver con el lenguaje en cuestión. Conozco bastante bien el C++. Este es un lenguaje muy claro y estricto, no se permite el libre albedrío allí, que está fantaseando. Y MQL fue creado a imagen y semejanza de C++. Así que dejémoslo. Para empezar, familiarícese con C++ y entonces tendrá sentido discutir sobre algo.

p.d. Por cierto, me acabo de dar cuenta de que originalmente has llevado la conversación en la dirección equivocada, porque ya he olvidado dónde empezó todo, y ahora he vuelto a ver mi código original y me he dado cuenta de que tu primer ataqueaquí era completamente off-topic. ¡Y cómo no iba a prestar atención de inmediato! En mi código, la variable estática se inicializa exactamente como una constante, tal y como se describe en la documentación. Así que el problema es que no se ha inicializado una mierda. Y me has empezado a decir que es porque se debe inicializar con una constante. Y ahí va...

Te llamo por última vez para que estudies la secuencia de inicialización. Me parece que la capacidad de pensar con lógica es más importante que el conocimiento. Puede que conozcas todos los lenguajes de programación de memoria, pero necesitas entender la secuencia de inicialización.

Una variable estática NO puede ser inicializada antes que la global. Y eso lo dice todo.

 
Error de ChartNavigate
const bool Init = ChartSetInteger(0, CHART_AUTOSCROLL, false) && EventSetTimer(1);  

void OnTimer()
{  
  Print("----------")  ;
  Print(ChartGetInteger(0, CHART_FIRST_VISIBLE_BAR));  

  ChartNavigate(0, CHART_BEGIN, 100);
  
  Print(ChartGetInteger(0, CHART_FIRST_VISIBLE_BAR));
}

Resultado en ICMarkets-Demo EURCHF M1 ( barras máximas = 5000):

2017.10.18 21:16:00.800 ----------
2017.10.18 21:16:00.800 4899
2017.10.18 21:16:00.801 199930
2017.10.18 21:16:01.821 ----------
2017.10.18 21:16:01.821 199930
2017.10.18 21:16:01.821 4899
2017.10.18 21:16:02.836 ----------
2017.10.18 21:16:02.836 4899
2017.10.18 21:16:02.836 199930
2017.10.18 21:16:03.845 ----------
2017.10.18 21:16:03.845 199930
2017.10.18 21:16:03.855 4899
2017.10.18 21:16:04.864 ----------
2017.10.18 21:16:04.864 4899
2017.10.18 21:16:04.864 199930
2017.10.18 21:16:05.876 ----------
2017.10.18 21:16:05.876 4999
2017.10.18 21:16:05.886 199930

No entiendo nada en absoluto. Deberían ser los mismos números. Pero al final el gráfico salta todo el tiempo.

¿Funciona para alguien?

 
Alexey Viktorov:

Le ruego que se familiarice por última vez con la secuencia de inicialización. Me parece que la capacidad de pensar con lógica es más importante que el conocimiento. Puede que conozcas todos los lenguajes de programación de memoria, pero necesitas entender la secuencia de inicialización.

Una variable estática NO puede ser inicializada antes que una global. Y eso lo dice todo.

Lo siento, pero no voy a prestar más atención a tus provocaciones sin sentido y en ese tono. Ya siento haber perdido el tiempo en una discusión inútil con un diletante. En primer lugar, presentabas unas constantes que no tenían nada que ver con mi situación, y con la misma arrogancia agresiva que ahora. Ahora haces afirmaciones sin fundamento, sin conocer siquiera el tema y sin entender cómo se organiza un lenguaje de programación. Guarda tus "pensamientos lógicos", conjeturas y fantasías para ti. No me interesan.

 
Kirill Belousov:

¿Qué sucede cuando la variable del sistema que obtenemos de GetTickCount() se desborda?

¿Hay alguna reacción estándar del terminal?

¿Es necesario rastrear este momento de forma programada e implementar una reacción?

No es necesario aplicar ninguna reacción.

Si recibe el valor devuelto por GetTickCount en una variable de tipo uint, puede obtener con seguridad la diferencia

uint prev_count=GetTickCount();
...
...
uint diff=GetTickCount()-prev_count;

Incluso si hay un desbordamiento, obtendrá la diferencia correcta. Son peculiaridades de las operaciones con enteros sin signo. Pero eso sólo es bueno si el valor anterior se obtuvo exactamente de la misma manera (GetTickCount) y si el valor anterior se obtuvo no antes de 49 días.

Si se comprueba si hay más o menos, se necesitan más operaciones que la simple resta

 
fxsaber:
El error de ChartNavigate

Resultado en ICMarkets-Demo EURCHF M1 ( barras máximas = 5000):

No entiendo nada en absoluto. Deberían ser los mismos números. Pero al final el gráfico salta todo el tiempo.

¿Se reproduce?

¿Por qué es un error?

Navegar por una carta no es inmediato. Es un comando asíncrono. El resultado de su ejecución no está garantizado.

Es como si al pulsar el botón PageUp el gráfico se quedara parado. Y de repente se sacudió.

Razón de la queja: