Répartir les postes ouverts en groupes - page 8

 
Sergey Voytsekhovsky:

S'il vous plaît dites-moi, l'article https://www.mql5.com/ru/articles/567 a le code suivant et mentionne

Mais je ne l'ai pas trouvé dans le paquet standard. La recherche n'est pas bonne ou l'article est périmé ?

Non, j'ai juste fait une erreur.

Vous tirez des morceaux de code d'ici, là, et là, et nous sommes censés deviner.

Le code pour ajouter un élément à la fin de la liste que vous avez montré est très similaire au code pour ajouter un élément à la fin de la liste de la bibliothèque standard.

Et il s'avère que tu as pris quelque chose de quelque part...

 
Sergey Voytsekhovsky:

L'idée est claire, on ne sait pas pourquoi ne pas utiliser des algorithmes éprouvés, mais pour les "trois boucles", c'est très compréhensible, merci. Lorsque vous obtenez des solutions simples de haute qualité, je me demande toujours pourquoi je ne l'ai pas compris moi-même, car c'est tellement évident. Merci.

Il y a beaucoup d'erreurs là aussi, et chercher des problèmes dans le code d'autres personnes est absolument impossible pour moi. En outre, si vous trouvez soudainement une erreur, vous la réparez vous-même et même si vous la signalez, cela ne signifie pas qu'ils verront le message et le corrigeront. Et la prochaine mise à jour recommencera tout.
 
Alexey Viktorov:
Il y a beaucoup d'erreurs là aussi, et chercher un problème dans le code de quelqu'un d'autre est absolument impossible pour moi. De plus, si vous trouvez soudainement une erreur, vous la corrigez vous-même et même si vous la signalez, il n'est pas certain que le message sera vu et corrigé. Et la prochaine mise à jour recommencera tout.

Êtes-vous sûr qu'il y a beaucoup de bogues dans le SB ? Ou vous n'aimez pas les chats parce que vous n'avez pas de livre de cuisine ?

 
Artyom Trishkin:

Non, j'ai juste fait une erreur.

Vous "tirez" des morceaux de code d'ici, là, là..., et nous devons deviner.

Le code pour ajouter un élément à la fin de la liste que vous nous avez montré est très similaire au code pour ajouter un élément à la fin de la liste de la bibliothèque standard.

Et il s'avère que tu as tiré quelque chose de quelque part...

Le code pour ajouter un élément à la fin de la liste provient de la bibliothèque standard, vous avez raison. Et j'ai essayé de le "tirer" après n'avoir pas trouvé ce code dans l'article. :-))

 
Artyom Trishkin:

Etes-vous sûr de savoir qu'il y a beaucoup d'erreurs dans le SB ? Ou simplement que vous n'aimez pas les chats à cause de l'absence de livre de cuisine ?

Dis, Artyom, tu te souviens du problème de la fermeture partielle d'une position? Vous souvenez-vous qu'ils ont ensuite ajouté une autre méthode au lieu de trouver la raison de ce comportement ?

Je ne sais pas comment deviation=ULONG_MAX a fait pour que toute la méthode ne fonctionne pas, mais je l'ai remplacé par deviation=1000 et tout a bien fonctionné. J'ai écrit à ce sujet dans le fil "Bugs bugs...", mais le sujet s'est développé si vite que ce message est tombé dans l'oubli et n'a pas été remarqué. Par conséquent, une autre méthode est apparue, mais est-elle vraiment nécessaire ? Et comment peut-on maintenant être sûr qu'il n'y a pas d'erreurs ailleurs ? Comment pouvez-vous être sûr que le message sera remarqué ?

 
Sergey Voytsekhovsky:

Le code pour ajouter un élément à la fin de la liste provient de la bibliothèque standard, vous avez raison. Et j'ai essayé de le "tirer" après n'avoir pas trouvé ce code dans l'article. :-))

Si vous utilisez la bibliothèque standard pour stocker vos données représentées par des objets, alors les données ne doivent pas être une structure, mais un objet basé sur CObject de la bibliothèque standard, et vous pouvez alors utiliser des tableaux dynamiques de pointeurs vers des objets de la bibliothèque standard pour les stocker. Il n'y a aucun moyen de retirer un morceau.

Документация по MQL5: Стандартная библиотека / Базовый класс CObject
Документация по MQL5: Стандартная библиотека / Базовый класс CObject
  • www.mql5.com
Класс CObject обеспечивает всем своим потомкам возможность быть элементом связанного списка. Кроме того определяется ряд виртуальных методов для дальнейшей реализации в классах-потомках.
 
Alexey Viktorov:

Dis, Artyom, tu te souviens du problème de la fermeture partielle d'une position? Vous souvenez-vous qu'ils ont ensuite ajouté une autre méthode au lieu de trouver la raison de ce comportement ?

Je ne sais pas comment deviation=ULONG_MAX a pu empêcher l'ensemble de la méthode de fonctionner, mais je l'ai remplacé par deviation=1000 et tout a fonctionné correctement. J'ai écrit à ce sujet dans le fil "Bugs bugs...", mais le sujet s'est développé si vite que ce message est tombé dans l'oubli et n'a pas été remarqué. Par conséquent, une autre méthode est apparue, mais est-elle vraiment nécessaire ? Et maintenant, comment peut-on être sûr qu'il n'y a plus d'erreurs nulle part ? Comment pouvez-vous être sûr que le message sera remarqué ?

Non, je ne me souviens pas du problème de la fermeture partielle. Et je ne sais pas si la déviation affecte l'opération. Et je ne peux même pas imaginer comment un écart maximal égal à ULONG_MAX points (ce qui est équivalent à aucun écart) pourrait affecter la fermeture partielle. Et je n'ai pas entendu parler de la nouvelle méthode. Quelle est la méthode ?

Et pour être sûr que le message n'est pas perdu - trouvez-le, copiez-le dans votre poche, et postez-le avec une note indiquant qu'il est probablement perdu quelque part dans la discussion sur"MQL != C++, et devrait être ==".

 
Artyom Trishkin:

Non, je ne me souviens pas d'un problème de fermeture partielle. Et je ne sais pas si la déviation affecte le fonctionnement. Et je ne peux même pas imaginer comment un écart maximal de points ULONG_MAX (ce qui équivaut à aucun écart) pourrait affecter la fermeture partielle. Et je n'ai pas entendu parler de la nouvelle méthode. Quelle méthode ?

Et pour que le message ne soit pas perdu - trouvez-le, copiez-le dans une pochette et repostez-le avec une note indiquant que quelque part, il s'est probablement perdu dans la discussion sur le fait que"MQL != C++, et devrait être ==".

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

Répartir les postes ouverts en groupes

Alexey Viktorov, 2020.04.08 09:13

Dis-moi Artem, te souviens-tu du problème de la fermeture partielle des positions? Vous souvenez-vous que plus tard, ils ont ajouté une autre méthode au lieu de trouver la cause de ce comportement ?

Je ne sais pas comment deviation=ULONG_MAX a affecté l'inopérabilité de toute la méthode, mais je l'ai remplacé par deviation=1000 et tout a fonctionné correctement. Dans le sujet "Bugs bugs..." a écrit à ce sujet, mais le sujet a pris tellement d'ampleur que ce message a disparu dans l'abîme et n'a pas été remarqué. Par conséquent, une autre méthode est apparue, mais est-elle vraiment nécessaire ? Et comment peut-on maintenant être sûr qu'il n'y a pas d'erreurs ailleurs ? Comment pouvez-vous être sûr que le message sera remarqué ?


 
Artyom Trishkin:

Non, je ne me souviens pas d'un problème de fermeture partielle. Et je ne sais pas si la déviation affecte le fonctionnement. Et je ne peux même pas imaginer comment un écart maximal de points ULONG_MAX (qui est équivalent à aucun écart) pourrait affecter la fermeture partielle. Et je n'ai pas entendu parler de la nouvelle méthode. Quelle méthode ?

Lemessage n'est donc pas perdu - trouvez-le, copiez-le dans une pochette, et repostez-le avec une note indiquant que quelque part, il s'est probablement perdu dans la discussion sur"MQL != C++, et si cela devrait être ==".

Suggérez-vous donc de repousser les autres messages ? Que personne n'en parle ? Ce n'est pas juste.

À mon avis, il serait préférable de définir une section de forum distincte où chaque problème serait un sujet distinct. Le nombre de sujets est beaucoup plus faible que le nombre de messages par sujet. Par conséquent, malgré le grand nombre de sujets, ils ne seront pas repoussés aussi loin que les questions individuelles et les rapports de bogue le sont maintenant.

 
Alexey Viktorov:

Supprimez le forçage brutal des positions pour déterminer "que la position est effectivement nouvelle". Trouvez un autre moyen. Par exemple dans OnTradeTransaction. Et essayez d'utiliser la fonction ArrayRemove au lieu du débordement du tableau.

Si je vous comprends bien, c'est la bonne façon de procéder. En tant que camarade plus expérimenté, veuillez me dire si un tel filtre fonctionnera dans le but d'attraper des positions naissantes. Ou peut-être y a-t-il une meilleure option ?

void OnTradeTransaction(const MqlTradeTransaction& trans,
                        const MqlTradeRequest& request,
                        const MqlTradeResult& result)
 {
     if(trans.type == TRADE_TRANSACTION_DEAL_ADD)
      {
         if(trans.type != TRADE_TRANSACTION_ORDER_DELETE)
            {
             if(HistoryDealGetInteger(trans.deal, DEAL_ENTRY) == DEAL_ENTRY_IN) // открылась позиция
               {