Erreurs, bugs, questions - page 2009

 
Alexey Viktorov:

Parce qu'il est initialisé.

Alors quelle différence cela fait-il ? Il est initialisé avec une constante. Même ce code devrait générer un avertissement

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

Parce que la variable et le tableau ne sont impliqués nulle part.

 
fxsaber:

Alors quelle différence cela fait-il ? Il est initialisé avec une constante. Même ce code devrait générer un avertissement

Parce que la variable et le tableau ne participent nulle part.

Je pense qu'un tel code ne doit pas du tout compiler car la taille du tableau n'est pas définie. Mais c'est juste un détail.

Alors, comment se fait-il qu'ils ne participent pas ? Une variable se voit attribuer une valeur de cellule de tableau. C'est à cela que servent les calculs auxquels ils participent. Comment le compilateur peut-il connaître vos projets futurs ? Je pense que le faire de la manière dont vous le voyez serait probablement juste, mais très difficile. Si vous essayez de présenter un algorithme de cette vérification, vous pouvez écrire ce qui suit : le programmeur vérifie si une valeur est attribuée à une variable. Si ce n'est pas le cas, cela signifie qu'il n'est pas utilisé. Essayez de donner un algorithme approximatif pour déterminer qu'une variable est initialisée, mais n'est pas utilisée ailleurs dans les calculs.

Le nombre de variables avec le même nom est discutable.

 
Alexey Viktorov:

Comment le compilateur pourrait-il connaître vos projets futurs ?

Le compilateur rejette parfois des morceaux entiers car il sait que

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

Implémentations alternatives de fonctions/approches standard

Renat Fatkhullin, 2016.09.01 23:50

Pour éviter que le compilateur ne jette la boucle parce qu'elle est inutile, vous devez utiliser les résultats des calculs. Par exemple, faites de la variable Print un prix.

 
fxsaber:

Le compilateur jette parfois des morceaux entiers parce qu'il sait que...

Eh bien, si Renat n'en a pas assez de répondre, attendons sa réponse. Et en principe, je suis personnellement satisfait de tout.

 
S'il vous plaît, si le travail dans la kodobase a été mis à jour (l'auteur a modifié le code), marquez le fil de discussion correspondant comme non lu.
 

Comment faire un #uninclude ?

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

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

#uninclude <Test.mqh>

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

Corriger soit la valeur, soit l'unité

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:

Comment faire un #uninclude ?

Vous ne pouvez pas le faire directement. Le refactoring du code (structure de fichier différente ou OOP) sera utile.

 
dans le testeur CopyTicks renvoie des zéros, est-ce normal ?
 
Andrey Dik:
dans le testeur CopyTicks renvoie des zéros, est-ce normal ?
Est-ce que vous testez, par hasard, en mode OHLC M1 ou en prix d'ouverture?