Come mostrare il tipo di ordine (Sell/Buy) sul grafico? - pagina 3

 
pro_:

Se funziona per voi - bene. Sono contento. Ma la mia opinione è che qualsiasi indicatore dovrebbe essere universale il più possibile, e non buono solo per qualche situazione specifica. Lo fai una volta, ma fallo correttamente, in modo che se hai bisogno di cambiare qualcosa o la situazione cambia in termini di posizioni, funziona correttamente.

Comunque, sei il benvenuto.

Non funzionerà, tu crei l'oggetto e poi provi a crearlo di nuovo al prossimo tick, questo fallirà . . quindi se il primo ordine è un Buy e il secondo un Sell il testo non si aggiornerà da Buy a Sell.
 
Come ho detto prima ci sono MOLTI errori nel codice. Speravo che il richiedente ci lavorasse da solo e capisse un po' di più il codice. Questo non sembra essere la sua intenzione. E purtroppo non ho tempo di scrivere il codice per lui. Gli ho solo dato qualcosa per iniziare a lavorare, non un prodotto finito.
 
RaptorUK:
Non funzionerà, tu crei l'oggetto e poi provi a crearlo di nuovo al prossimo tick, questo fallirà . . quindi se il primo ordine è un Buy e il secondo un Sell il testo non si aggiornerà da Buy a Sell.


Funziona, ma mostra solo l'ultimo ordine. Non so come cambiarlo per l'ordine corrente!
 

Non so se è una buona pratica o no, ma creo le etichette in init() e ObjectSetText solo con un ".

Non ho ancora capito come mettere un'etichetta con un testo totalmente vuoto. Se provo, viene fuori il testo "Label".

Naturalmente questo va bene finché si sa di quante etichette si avrà bisogno.

Immagino che non dovrebbe essere troppo difficile cancellare le etichette in eccesso e aggiungere nuove etichette quando necessario nel corpo principale.

Questo è il codice che uso in init() per creare le etichette

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;
 

Oh, e in deinit()

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

Funziona, ma mostra solo l'ultimo ordine. Non so come cambiarlo per l'ordine attuale!
Pubblica il tuo ultimo codice . . .
 
{
   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:

Intendevo l'intero codice. . . ma non importa . . . provate queste modifiche.

{
   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);
}
 
Adesso funziona, grazie mille.
 

Si prega di non postare domande che non hanno nulla a che fare con questo thread molto vecchio

Ho ripubblicato la tua domanda

https://forum.mql4.com/72256