Erreurs, bugs, questions - page 2749

 
Alexey Navoykov:

Si vous parlez du grand tableau, seule la partie gauche est visible à l'écran, le reste est coupé, donc je ne sais pas ce qu'il y a là.

Mais à en juger par le code, si cette macro est comparée

Et dans la première macro, il n'y a qu'un appel de fonction pour 100 itérations. C'est donc un non-sens.

Le compilateur n'est pas omnipotent, parfois vous devez participer et l'aider avec le bon code ;))

 
Sergey Dzyublik:
Bug dans le débogueur ME (build 2370) - StepInto (F11) et les points d'arrêt définis manuellement ne fonctionnent pas.
Le problème est que si l'action StepOver (F10) est appliquée à un appel de fonction au moins une fois, il n'y a aucun moyen de déboguer cette fonction plus tard.

Reprise des étapes :
1) Exécuter le code en mode débogage ;
2) Après le déclenchement d'un point d'arrêt, exécuter deux fois StepOver (F10) ;

Tout - maintenant il n'y a aucun moyen d'"entrer" dans la fonctionIncrement, tous les points d'arrêt définis manuellement ne sont pas déclenchés, et au lieu de l'opération StepInto (F11), c'est StepOver (F10) qui est réellement exécuté.


Merci pour cet article.

Corrigé par

 
Roman:

Le compilateur n'est pas omnipotent, il faut parfois s'impliquer :))

Que voulez-vous dire ? Vous m'avez assuré que votre construction est plus rapide, mais elle ne l'est pas. Elle est juste 100 fois moins susceptible d'être appelée dans ce code.
 
Alexey Navoykov:

Dans la première macro, il n'y a qu'un appel de fonction pour 100 itérations. C'est donc un non-sens.

Le test, si ce n'est pour s'en prendre à la précision, dont nous n'avons pas besoin ici, est plus ou moins normal.
Par rapport à : appeler 100 fois SymbolInfoTick VS appeler 1 fois SymbolInfoTick et retourner 99 fois le cache "manuel".
Montre qu'il n'est pas rentable d'utiliser la fonction standard SymbolInfoTick pour le symbole actuel lorsque la fonction sera appelée plus d'une fois en une seule passe.
Comme solution possible à ce problème, les développeurs suggèrent d'introduire une variable prédéfinie :

const MqlTick _Tick; // Текущий _Symbol-тик.



C'est juste quefxsaber a tout éparpillé sur les posts sans rien expliquer du tout, c'est un sacré truc à faire.

 
Alexey Navoykov:

Dans la première macro, il n'y a qu'un appel de fonction pour 100 itérations. C'est donc un non-sens.

Son exemple est une utilisation spécifique des données bid/ask dans différentes parties du programme MQL, plus vous accédez souvent à SymbolInfoTick(), plus les performances du test sont faibles.

J'ai trouvé quelques problèmes de performance avec TimeCurrent(), je l'ai essayé de différentes manières, puis je l'ai écarté,

J'utilise rarement la visibilité des variables globales, mais pour que tout "vole" dans le testeur, je l'écris de cette façon :

MqlTick Tick = {0};
#define  Ask Tick.ask
#define  Bid Tick.bid
#define  TimeCurrent_ Tick.time
//+------------------------------------------------------------------+
void OnTick()
{
   SymbolInfoTick(_Symbol,Tick);
  ....
}
 
Alexey Navoykov:
Que voulez-vous dire ? Vous m'avez assuré que votre conception est plus rapide, et elle n'est pas plus rapide, elle est juste 100 fois moins susceptible d'être appelée dans ce code.

Ce n'est pas ma conception, et d'après ce que j'ai compris de cet exemple, les macros ont été appelées une par une pour le test.
Et le rapport de passage est montré ensemble, même s'il est recadré, vous pouvez voir le temps d'exécution.

 
Sergey Dzyublik:

Le test, si vous ne vous souciez pas de la précision, dont vous n'avez pas besoin, est plus ou moins normal.
Comparaison : appeler 100 fois SymbolInfoTick VS appeler 1 fois SymbolInfoTick et retourner 99 fois le cache "manuel".

Oui, je comprends pour le cache. C'est juste que Roman ici présent se frottait à quelque chose à propos de l'allocation de mémoire... On dirait que vous aviez raison à propos du troll ;)

 
Alexey Navoykov:

Je sais pour le cache. C'est juste que Roman ici présent se frottait à quelque chose à propos de l'allocation de mémoire... On dirait que vous aviez raison à propos du troll ;)

Où pensez-vous que le cache est alloué ? Vous êtes des idiots.

 
Sergey Dzyublik:

Le test, si vous ne vous souciez pas de la précision, dont vous n'avez pas besoin, est plus ou moins normal.
Comparaison : appeler 100 fois SymbolInfoTick VS appeler 1 fois SymbolInfoTick et retourner 99 fois le cache "manuel".
Montre qu'il n'est pas rentable d'utiliser la fonction standard SymbolInfoTick pour le symbole actuel lorsque la fonction sera appelée plus d'une fois en une seule passe.
Comme solution possible à ce problème, les développeurs sont encouragés à introduire une variable prédéfinie :

Tu as compris mon point de vue à 100%.

La raison est quefxsaber avait tout étalé dans ses posts sans l'expliquer et c'est difficile à comprendre.

Je suis désolé, je ne le formule pas bien.

 
fxsaber:

Je suis désolé, je ne le formule pas bien.

Ce qui m'a le plus dérouté, c'est l'accent que vous avez mis au départ sur les chaînes de caractères, alors qu'il s'agit de la fonction.

Si le test avait été fait avec la fonction cache, cela aurait été beaucoup plus clair.