Errores, fallos, preguntas - página 2009

 
fxsaber:
¿Por qué no hay advertencias de que la variable no se utiliza?

Porque se inicializa.

 
Alexey Viktorov:

Porque se inicializa.

Entonces, ¿qué diferencia hay? Se inicializa con una constante. Incluso este código debería generar una advertencia

void OnStart()
{
  int Array[];
  int i;
  
  i = Array[0];
  i = Array[1];
  i = Array[2];
}

Porque la variable y el array no intervienen en ninguna parte.

 
fxsaber:

Entonces, ¿qué diferencia hay? Se inicializa con una constante. Incluso este código debería generar una advertencia

Porque la variable y el array no participan en ninguna parte.

Creo que ese código no debe compilar en absoluto porque el tamaño del array no está definido. Pero es sólo un detalle.

¿Cómo es que no participan? A una variable se le asigna un valor de celda del array. Esto es lo que se lleva a cabo en los cálculos. ¿Cómo puede el compilador conocer sus planes futuros? Creo que hacerlo como tú lo ves sería probablemente correcto, pero muy difícil. Si se intenta presentar un algoritmo de dicha comprobación, se puede escribir lo siguiente: el programador comprueba si una variable tiene asignado algún valor. Si no, significa que no se utiliza. Intenta darnos un algoritmo aproximado para determinar que una variable está inicializada, pero no se utiliza en ningún otro lugar en los cálculos.

El número de variables con el mismo nombre... es cuestionable.

 
Alexey Viktorov:

¿Cómo puede saber el compilador sus planes futuros?

El compilador a veces desecha trozos enteros porque sabe que

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

Implementaciones alternativas de funciones/enfoques estándar

Renat Fatkhullin, 2016.09.01 23:50

Para evitar que el compilador tire el bucle porque es inútil, hay que utilizar los resultados de los cálculos. Por ejemplo, haga la variable de impresión Precio.

 
fxsaber:

El compilador tira trozos enteros a veces porque sabe que

Bueno, si Renat no se ha cansado de contestar, esperemos su respuesta. Y en principio estoy personalmente satisfecho con todo.

 
Por favor, si el trabajo en la kodobase ha sido actualizado (el autor ha retocado el código), marque el hilo de discusión correspondiente como no leído.
 

¿Cómo se hace un #uninclude?

// Test.mqh
void Func() {};
#include <Test.mqh>

// Здесь видна Func();

#uninclude <Test.mqh>

// Здесь не видна Func();
 

Corregir el valor o la unidad

2017.09.21 11:37:27.564 Tester  EURUSD: preliminary downloading of history ticks started, it may take quite a long time
2017.09.21 11:37:32.564 Tester  EURUSD: "bases\FIBOGroup-MT5 Server\ticks\EURUSD\201708.tkc" download (836044.77 Kb/sec)
2017.09.21 11:37:41.565 Tester  EURUSD: 45% ticks downloaded (535.34 Kb/sec)
2017.09.21 11:37:49.565 Tester  EURUSD: 53% ticks downloaded (518.17 Kb/sec)
2017.09.21 11:38:01.571 Tester  EURUSD: 61% ticks downloaded (530.69 Kb/sec)
2017.09.21 11:38:12.571 Tester  EURUSD: 70% ticks downloaded (547.64 Kb/sec)
2017.09.21 11:38:26.572 Tester  EURUSD: 82% ticks downloaded (543.88 Kb/sec)
2017.09.21 11:38:38.573 Tester  EURUSD: 94% ticks downloaded (552.07 Kb/sec)
2017.09.21 11:38:50.573 Tester  EURUSD: preliminary downloading of history ticks completed, 44.41 Mb in 1:23.008 (547.80 Kb/sec)
 
fxsaber:

¿Cómo se hace un #uninclude?

No puedes hacerlo directamente. La refactorización del código (estructura de archivos diferente u OOP) ayudará.

 
en el comprobador de CopyTicks devuelve ceros, ¿es esto normal?