Erreurs, bugs, questions - page 2309

 

Qu'est-ce qui a pu changer dans le testeur pour que certains EAs fonctionnent maintenant en mode visualisation, mais pas en exécution normale simple ?

Et comment, dans ces conditions, identifier la cause de ce problème ?

 

Pouvez-vous me dire où je suis stupide ?

template <typename T1, typename T2>
T1 f( T2 Value )
{
  return((T1)Value);
}

double d = f<double>(0); // 'f' - wrong template parameters count
 
fxsaber:

Pouvez-vous me dire où je suis stupide ?

Soit vous spécifiez tous les paramètres explicitement, soit vous ne le faites pas.

 
TheXpert:

Soit vous spécifiez tous les paramètres explicitement, soit vous ne le faites pas.

Il semble que le code ne soit pas du tout ambigu. T2 est int, T1 est double.

 
fxsaber:

Il semble qu'il n'y ait aucune ambiguïté dans le code. T2 est int, T1 est double.

oui. cela n'a pas d'importance, vous devez toujours spécifier les deux paramètres

 
TheXpert:

Oui. Cela n'a pas d'importance, vous devez toujours spécifier les deux paramètres.

Je n'avais pas réalisé, merci !

 

Comment obtenir une valeur par défaut pour le paramètre d'entrée d'une fonction ?

typedef void (*FUNC)();

void f1() {};

void f2( FUNC g = f1 ) {} // 'f1' - constant expected
 
fxsaber:

Comment obtenir une valeur par défaut pour le paramètre d'entrée d'une fonction ?

Par surcharge ?
 
TheXpert:
Par surcharge ?

C'est compréhensible. Je ne demandais pas une solution de contournement, mais la syntaxe correcte, afin que le compilateur ne génère pas d'erreur. Je pense qu'il est possible de le faire en C++ et très probablement en MQL5.

 
ExpertRemove ne fonctionne pas correctement en mode Optimisation.
input int Range = 0; // 1 .. 10

bool FuncInit()
{
  ExpertRemove();
  
  return(true);
}

int Count = 0;

void OnTick()
{
  static const bool Init = FuncInit();
  
  Count++;
}

double OnTester()
{
  return(Count);
}


Optimisation de l'exécution. Vous pouvez voir dans le code que toutes les passes doivent être terminées par ExpertRemove. Mais cela ne se produit pas :

Core 5  pass 8 tested with error "expert removed itself in global initialization function" in 0:00:00.312
Core 5  pass 9 returned result 331851.00 in 0:00:00.125
Core 4  pass 6 tested with error "expert removed itself in global initialization function" in 0:00:00.265
Core 4  pass 7 returned result 331851.00 in 0:00:00.140
Core 1  pass 0 tested with error "expert removed itself in global initialization function" in 0:00:00.312
Core 1  pass 1 returned result 331851.00 in 0:00:00.125
Core 3  pass 4 tested with error "expert removed itself in global initialization function" in 0:00:00.296
Core 3  pass 5 returned result 331851.00 in 0:00:00.156
Core 8  pass 2 tested with error "expert removed itself in global initialization function" in 0:00:00.265
Core 8  pass 3 returned result 331851.00 in 0:00:00.140
Tester  optimization finished, total passes 10
Statistics      optimization done in 0 minutes 01 seconds
Statistics      shortest pass 0:00:00.125, longest pass 0:00:00.156, average pass 0:00:00.137
Statistics      local 10 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)

La moitié des passes ont ignoré ExpertRemove. Est-il reproductible ?


ZY Cela entraîne des divergences entre les passages uniques et les optimisations.