Erreurs, bugs, questions - page 2750

 
Sergey Dzyublik:

Comme solution possible à ce problème, les développeurs suggèrent d'introduire une variable prédéfinie :

Et pourquoi deux appels consécutifs à un intervalle donneraient-ils le même résultat ?

void f()
{
   MqlTick tick1, tick2; 
   SymbolInfoTick(Symbol(),tick1); //1
   /*вычисления*/
   SymbolInfoTick(Symbol(),tick2); //2
}
const MqlTick _Tick;
void f()
{
   MqlTick tick1, tick2; 
   tick1 = _Tick; //1
   /*вычисления*/
   tick2 = _Tick; //2
}
 
A100:

Et pourquoi deux appels consécutifs à un intervalle donneraient-ils le même résultat ?

Ils ne devraient pas. Mais pour un test sur un personnage natif, c'est bien.
 
A100:

Et pourquoi deux appels consécutifs à un intervalle donneraient-ils le même résultat ?

Parce que nous ne parlons que du testeur sans utiliser le sommeil- 99% des EAs.

Je ne sais pas ce qu'il en est des délais arbitraires des testeurs, car je n'ai jamais vu ce mode être utile.

 
fxsaber:

Je ne peux rien dire sur les délais aléatoires du testeur, car je n'ai jamais vu ce mode être utile.

Je ne l'ai utilisé que pour déboguer les fonctions de travail avec les commandes.

Il est très pratique de voir à quel point le graphique du testeur change de pente, c'est-à-dire à quel point la logique de négociation avec les ordres de marché est "en retard".

 
Sergey Dzyublik:

Un défaut dans le débogueur ME (build 2370) - après le déclenchement d'unpoint d'arrêt, au lieu de poursuivre l'exécution du code en appuyant sur (F5), le mêmepoint d'arrêtest en fait déclenché à nouveausans exécuter de code.

Reprise des étapes :
1) Définissez manuellement
le point d'arrêt pour les deux lignes " arr.Add()" ;
2) Démarrez le débogage (F5) ;
3) Utilisez PCM pour ouvrir le fichier imbriqué <Generic\ArrayList.mqh> dans un nouvel onglet.
4) Trouvez la ligne "if(m_size==ArraySize(m_items))" dans la fonction "bool CArrayList::Add(T item)" et placezle point d'arrêt manuellement.
5) Tout en restant dans l'onglet "
ArrayList.mqh", continuez à exécuter le code (F5).

Cela
déclenchera le mêmepoint d'arrêt que précédemment, sans exécution réelle du code.

Merci pour le message.

Corrigé par

 
fxsaber:

Parce que nous ne parlons que du testeur sans utiliser le sommeil- 99% des EAs.

Je ne peux rien dire sur les délais arbitraires des testeurs, car je n'ai jamais vu ce mode être utile.

Sans changer fondamentalement quoi que ce soit, il est plus facile de faire (ce qui est d'ailleurs le cas) cet enregistrement :

SymbolInfoTick( NULL, tick ); //1

signifierait

SymbolInfoTick( Symbol(), tick ); //2

au moins il n'y a pas de question sur la copie de chaînes de caractères

 
A100:

Sans changer fondamentalement quoi que ce soit, il est plus facile de faire (ce qui est en fait le cas) que l'entrée

signifierait

au moins la question de la copie des lignes disparaît

Ce n'est pas ce qu'il demande. Il a besoin de l'accès le plus rapide à la structure MqlTick à chaque tick.

c'est un peu un paradoxe qu'il y ait un accès à _Symbol .... mais vous n'avez pas accès à

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

bien que le langage MQL soit positionné comme le langage de développement de stratégies de trading..... Je ne sais pas ce qu'est le TS si vous ne connaissez pas les prix actuels sur le tick actuel.

 
Igor Makanu:

il demande quelque chose d'autre à la fin, il a besoin de l'accès le plus rapide possible à la structure MqlTick à chaque tick.

Et quel est le problème avec

SymbolInfoTick( NULL, tick ); //1

n'est pas assez bon ? Montrez-moi où se trouve le goulot d'étranglement ? Si c'est aussi lent, alors les développeurs ont un moyen de mettre en ligne/optimiser un tel appel - sans aucun changement fondamental.

 
A100:

Ce qui n'est pas à aimer

n'est pas assez bon ? Si c'est aussi lent, alors les développeurs ont un moyen de mettre en ligne/optimiser un tel appel.

oui c'est lent, du moins dans le testeur, je l'écris dans le testeurhttps://www.mql5.com/ru/forum/1111/page2749#comment_16487642

avec un grand nombre de passages de l'optimiseur, il y a un gain


Je ne sais pas comment expliquer, je ne sais pas comment expliquer les choses élémentaires...

Comment écrivez-vous les EA ? - Vous compilez une bibliothèque dans un style procédural ou OOP, chaque fonction est entièrement transférable à un autre projet, et pour s'en assurer vous écrivez Bid, Ask partout - mon exemple. Puis vous assemblez une stratégie de trading à partir des blancs. Ce que les développeurs proposent maintenant - écrire SymbolInfoDouble() partout.

 
Igor Makanu:

c'est un peu un paradoxe qu'il y ait un accès à _Symbol .... mais pas d'accès à

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

bien que MQL soit positionné comme un langage pour le développement de stratégies de trading

_Symbol est une constante, c'est pourquoi il n'y a pas de problème avec elle (bien qu'il soit plus correct d'appeler Symbol()). Un tick est une variable. Comment imaginez-vous qu'il soit déclaré comme const, mais que sa valeur change ?