Répartir les postes ouverts en groupes - page 2

 
Nikolay Kositsin:

Un tel code est trop individuel pour exister sous une forme toute faite. Nous rédigerons une structure avec des commentaires prêts à l'emploi pour toutes les variantes des attributs nécessaires pour les positions et les ordres, ainsi qu'un conseiller expert qui analyse les positions et les ordres et modifie ces commentaires. De telles choses sont soit écrites indépendamment, soit commandées à un indépendant.

Bien sûr, je suis d'accord avec vous, mais je ne cherche pas à obtenir du "prêt-à-porter...", je ne supplie pas et je ne commande pas. Je propose de partager mes connaissances, qui peuvent être appliquées (et le seront moi-même) pour mettre en œuvre une idée intéressante, à mon avis. Je vais poster le code exécuté ici aussi, toute participation est la bienvenue.

 
Sergey Voytsekhovsky:

Bien sûr, je suis d'accord avec vous, mais je ne cherche pas à obtenir du "prêt-à-porter...", je ne supplie pas et je ne commande pas. Je propose de partager mes connaissances, qui peuvent être appliquées (et le seront moi-même) pour mettre en œuvre une idée intéressante, à mon avis. Je posterai ce que j'ai fait ici aussi, toute participation est la bienvenue.

Regardez dans mes articles. C'est déjà fait là-bas. Dans lequel - je ne me souviens pas. Mais vous pouvez le lire dans les discours. Fabriqué de deux façons. La seconde a été laissée comme une version de travail - le stockage des identifiants d'utilisateurs dans magik.
 
Artyom Trishkin:
Jetez un coup d'œil à mes articles. C'est déjà fait là-bas. Dans lequel - je ne me souviens pas. Mais vous pouvez le lire dans les discours. Fabriqué de deux façons. La seconde a été laissée comme une version de travail - le stockage des identifiants d'utilisateurs dans magik.

Merci, je regarde beaucoup votre code, je l'utilise souvent, merci pour votre travail acharné, mais vous avez tellement de travaux que je n'ai pas encore trouvé sur ce sujet. Je vais essayer de faire une recherche avec le hashtag "custom identifiers", merci pour le conseil.

 
Sergey Voytsekhovsky:

Merci, je regarde beaucoup votre code, je l'utilise souvent, merci pour votre travail acharné, mais vous avez tellement de travaux que je n'ai pas encore trouvé sur ce sujet. Je vais essayer de faire une recherche avec le hashtag "custom identifiers", merci pour le conseil.

https://www.mql5.com/ru/articles/7394
 
Artyom Trishkin:
https://www.mql5.com/ru/articles/7394

Merci, je suis allé dans le texte :-()

 
Grigori.S.B:

Je vous déconseille d'utiliser le champ de commentaires. C'est bien sûr le moyen le plus simple, mais aussi le moins fiable, car ce champ peut être modifié par le DC à tout moment.

Eh bien, le système de suivi est conçu pour modifier le commentaire à tout moment s'il ne correspond pas à l'état de la position ou de la commande. Donc, pour une observation visuelle, cela ne change rien à l'affaire.
 
Sergey Voytsekhovsky:

Je ne comprends pas votre question

Je veux dire ce https://www.mql5.com/ru/forum/48768

комментарий к ордеру
комментарий к ордеру
  • 2003.03.17
  • www.mql5.com
Общее обсуждение: комментарий к ордеру
 

Bonsoir.

J'ai fait une recherche rapide des liens recommandés et je suis arrivé à la conclusion que, pour l'instant, je ne devais pas trop compliquer les choses.

Je vais essayer de me contenter d'un tableau à deux dimensions pour le moment. Je l'ai créé et j'ai écrit des données dedans. J'ai décidé de vérifier si cela fonctionnait correctement, et il s'est avéré que c'était faux !

//+------------------------------------------------------------------+
int Array_Creating_Caste_Positions()
{
   int n = 0;
   int size = PositionsTotal();
   for(int i=0; i<size; i++)
   {
      if(m_position.SelectByIndex(i))
      {
         int profit = (m_position.Profit()+m_position.Commission()+m_position.Swap())>0?1:-1;
         int type   = m_position.Type()==POSITION_TYPE_BUY?0:1;
         ArrayResize(arr_position,size,2);
         
         arr_position[i][0] = m_position.Identifier();
         arr_position[i][1] = m_position.Magic();
         arr_position[i][2] = profit;
         arr_position[i][3] = type;
         arr_position[i][4] = -1; //N_Caste (-1 = нет данных)
         n++;
      }
   }
return(n);
}
//+------------------------------------------------------------------+

Pour vérifier les variables créées temporairement et les mettre dans le commentaire, cela ne fonctionne pas correctement !

      int N = Array_Creating_Caste_Positions();
      
      int profit_Plus  = 0;
      int profit_Minus = 0;
      int N_Buy        = 0;
      int N_Sell       = 0;
      int size = PositionsTotal();
      
      for(int i=0; i<size; i++)
      {
         if(arr_position[i][2] > 0) profit_Plus++;
            else profit_Minus++ ;
         if(arr_position[i][3] < 1) N_Buy++;
            else N_Sell++ ;
      }
//+--- 
      if(InpCommentLog){
         Comment("Выводим данные \n"
         "всего записей в массиве ",N,"\n"
         "-----------------------: ",0,"\n"
         "profit_Plus:  ",profit_Plus,"\n"
         "profit_Minus: ",profit_Minus,"\n"
         "-----------------------: ",0,"\n"
         "N_Buy: ",N_Buy,"\n"
         "N_Sell: ",N_Sell,"\n"
         );}
//+--- 

Quelqu'un peut-il suggérer - où j'ai fait une erreur,,, ?

Dossiers :
Sower_1_3.mq5  17 kb
 

Si vous l'exécutez dans le testeur, il apparaît que toutes les positions (ouvertes) sont rentables et que toutes sont des achats.

profit_Plus == N_Buy == N  чего в принципе не должно быть.
 

le commentaire dans le coin supérieur gauche

Je ne sais pas comment l'agrandir, désolé.
Raison: