Dividir las posiciones abiertas en grupos - página 2

 
Nikolay Kositsin:

Ese código es demasiado individual para que exista en forma de lista. Escribiremos una estructura con comentarios listos para todas las variantes de atributos necesarios para las posiciones y órdenes, y un Asesor Experto que analice las posiciones y órdenes y cambie esos comentarios. Estas cosas se escriben de forma independiente, o se encargan a un freelance.

Por supuesto que estoy de acuerdo contigo, pero no estoy buscando "fuera de serie", no estoy rogando y no estoy pidiendo. Me ofrezco a compartir mis conocimientos, que pueden servir (y serviré yo mismo) para poner en práctica una idea interesante, en mi opinión. Publicaré aquí también el código ejecutado, cualquier participación es bienvenida.

 
Sergey Voytsekhovsky:

Por supuesto que estoy de acuerdo contigo, pero no estoy buscando "fuera de serie", no estoy rogando y no estoy pidiendo. Me ofrezco a compartir mis conocimientos, que pueden servir (y serviré yo mismo) para poner en práctica una idea interesante, en mi opinión. Yo también publicaré aquí lo que he hecho, cualquier participación es bienvenida.

Mira en mis artículos. Ya está hecho allí. En cuál - no lo recuerdo. Pero puedes leerlo en los discursos. Hecho de dos maneras. La segunda quedó como una versión de trabajo - el almacenamiento de los ID de usuario en magik.
 
Artyom Trishkin:
Echa un vistazo a mis artículos. Ya está hecho allí. En cuál - no lo recuerdo. Pero puedes leerlo en los discursos. Hecho de dos maneras. La segunda quedó como una versión de trabajo - el almacenamiento de los ID de usuario en magik.

Gracias, mucho mirar su código, utilizarlo a menudo, gracias por su trabajo duro, pero usted tiene tantas obras que no he encontrado en este tema todavía. Intentaré buscar con el hashtag "custom identifiers", gracias por el consejo.

 
Sergey Voytsekhovsky:

Gracias, mucho mirar su código, utilizarlo a menudo, gracias por su trabajo duro, pero usted tiene tantas obras que no he encontrado en este tema todavía. Intentaré buscar con el hashtag "custom identifiers", gracias por el consejo.

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

Gracias, he entrado en el texto :-()

 
Grigori.S.B:

No aconsejo utilizar el campo de comentarios. Es, por supuesto, la forma más fácil, pero también la menos fiable, ya que este campo puede ser modificado por el CC en cualquier momento.

Pues bien, el sistema de seguimiento está diseñado para cambiar el comentario en cualquier momento si no se corresponde con el estado de la posición o del pedido. Así que para la observación visual no cambia el caso.
 
Sergey Voytsekhovsky:

No entiendo su pregunta

Me refiero a este https://www.mql5.com/ru/forum/48768

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

Buenas noches.

Hice una búsqueda rápida de los enlaces recomendados y llegué a la conclusión de que por el momento no debía complicarme demasiado.

Intentaré conformarme con una matriz bidimensional por ahora. Lo creé y escribí datos en él. Decidí comprobar si funcionaba correctamente, ¡y resultó ser un error!

//+------------------------------------------------------------------+
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);
}
//+------------------------------------------------------------------+

Para comprobar las variables creadas temporalmente y ponerlas en el Comentario, ¡no funciona correctamente!

      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"
         );}
//+--- 

¿Puede alguien sugerir - donde me equivoqué,,?

Archivos adjuntos:
Sower_1_3.mq5  17 kb
 

Si lo ejecutas en el probador, aparece que todas las posiciones (abiertas) son rentables y todas son compras

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

el comentario en la esquina superior izquierda

No sé cómo hacerlo grande, lo siento.