¿Cómo mostrar el tipo de orden (venta/compra) en el gráfico? - página 3

 
pro_:

Si te funciona - bien. Me alegro. Pero mi opinión es que cualquier indicador debe ser universal en la medida de lo posible, y no bueno para alguna situación específica solamente. Lo haces una vez pero lo haces bien, para que si necesitas cambiar algo o la situación cambia en cuanto a tus posiciones funcione correctamente.

De todos modos, eres bienvenido.

No funcionará, creas el Objeto y luego intentas crearlo de nuevo en el siguiente tick, esto fallará . . así que si la primera orden es de compra y la segunda de venta el texto no se actualizará de compra a venta.
 
Como he dicho antes hay MUCHOS errores en el código. Esperaba que el solicitante trabajara en ello y entendiera un poco más la codificación. Parece que esa no es su intención. Y desafortunadamente no tengo tiempo para escribir el código por él. Sólo le di algo para empezar a trabajar, no un producto terminado.
 
RaptorUK:
No funcionará, si crea el objeto y luego intenta crearlo de nuevo en el siguiente tick, esto fallará . . así que si la primera orden es de compra y la segunda de venta el texto no se actualizará de compra a venta.


Funciona, pero sólo muestra la última orden. No sé cómo cambiarlo para la orden actual.
 

No sé si es una buena práctica o no, pero creo las etiquetas en init() y ObjectSetText sólo con un "."

Todavía no he descubierto cómo colocar una etiqueta con un texto totalmente vacío. Si lo intento me sale el texto "Etiqueta".

Por supuesto que eso está bien siempre y cuando sepa cuántas etiquetas va a necesitar.

Supongo que no debería ser demasiado difícil eliminar las etiquetas sobrantes y añadir otras nuevas cuando sea necesario en el cuerpo principal.

Este es el código que uso en init() para crear las etiquetas

int y=20;
for(int x=1;x<=10;x++)
{
ObjectCreate("Message"+x, OBJ_LABEL, 0, 0, 0);// Creating obj.
   ObjectSet("Message"+x, OBJPROP_CORNER, 1);    // Reference corner
   ObjectSet("Message"+x, OBJPROP_XDISTANCE, 10);// X coordinate
   ObjectSet("Message"+x, OBJPROP_YDISTANCE, y);// Y coordinate
   ObjectSetText("Message"+x,".",8,"Arial",CLR_NONE);  // Empty Labels
   y=y+15;
 

Ah, y en deinit()

for(int x=1;x<=10;x++)
 {
 ObjectDelete("Message"+x) ;   
 }
 
Konnj:

Funciona, pero sólo muestra el último pedido. No sé cómo cambiar el orden actual.
Publica tu último código . . .
 
{
   int    counted_bars=IndicatorCounted();
   int pos;
   string OrderTip = "OT";
   string ottt;
   color LabelColor3;

       for(int i=0;i<OrdersTotal();i++)
                    {
                     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
                     if(OrderSymbol()==Symbol() )
                       {
                        if(OrderType()==OP_BUY)  pos++;
                        if(OrderType()==OP_SELL) pos++;
                       }
                    }            
                    
      if (OrderType()==OP_BUY) { ottt="Buy";  LabelColor3 = DodgerBlue; } 
      if (OrderType()==OP_SELL){ ottt="Sell"; LabelColor3 = Red; }
      else ottt="";
     
      ObjectCreate(OrderTip, OBJ_LABEL, 0 , 0, 0, 0);
      ObjectSet(OrderTip, OBJPROP_CORNER, 1);
      ObjectSet(OrderTip, OBJPROP_XDISTANCE, 10);
      ObjectSet(OrderTip, OBJPROP_YDISTANCE, 15);
      ObjectSetText(OrderTip, "Order Type: "+ottt, 8, "Tahoma",LabelColor3);
}
 
Konnj:

Me refería a todo el código . . . pero no importa . . . prueba estos cambios.

{
   int    counted_bars=IndicatorCounted();
   int pos;
   string OrderTip = "OT";
   string ottt = " ";
   color LabelColor3 = Black;

   for(int i=0;i<OrdersTotal();i++)
      {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()==Symbol() )
         {
         if (OrderType() == OP_BUY) { ottt = "Buy";  LabelColor3 = DodgerBlue; } 
         if (OrderType() == OP_SELL){ ottt = "Sell"; LabelColor3 = Red; }
         }
      }            
     
   if (ObjectFind(OrderTip) < 0) ObjectCreate(OrderTip, OBJ_LABEL, 0 , 0, 0, 0);

   ObjectSet(OrderTip, OBJPROP_CORNER, 1);
   ObjectSet(OrderTip, OBJPROP_XDISTANCE, 10);
   ObjectSet(OrderTip, OBJPROP_YDISTANCE, 15);
   ObjectSetText(OrderTip, "Order Type: "+ottt, 8, "Tahoma",LabelColor3);
}
 
Ahora mismo está funcionando, muchas gracias.
 

Por favor, no publique consultas que no tengan nada que ver con este hilo tan antiguo

He vuelto a publicar su consulta

https://forum.mql4.com/72256

Razón de la queja: