Comment afficher le type d'ordre (Vente/Achat) sur le graphique ? - page 3

 
pro_:

Si ça marche pour vous, tant mieux. J'en suis heureux. Mais mon point de vue est qu'un indicateur doit être universel autant que possible, et ne pas être bon pour une situation spécifique seulement. Vous le faites une fois, mais faites-le correctement, de sorte que si vous devez changer quelque chose ou si la situation change en termes de vos positions, il fonctionne correctement.

Quoi qu'il en soit, vous êtes le bienvenu.

Cela ne fonctionnera pas si vous créez l'objet et que vous essayez de le recréer lors du prochain tick. Ainsi, si le premier ordre est un achat et le second une vente, le texte ne sera pas mis à jour de l'achat à la vente.
 
Comme je l'ai déjà dit, il y a BEAUCOUP d'erreurs dans le code. J'espérais que l'auteur de la demande y travaillerait lui-même et comprendrait un peu mieux le codage. Cela ne semble pas être son intention. Et malheureusement je n'ai pas le temps d'écrire le code pour lui. Je lui ai juste donné quelque chose pour commencer à travailler, pas un produit fini.
 
RaptorUK:
Cela ne fonctionnera pas si vous créez l'objet et que vous essayez de le recréer au prochain tick. Ainsi, si le premier ordre est un achat et le second une vente, le texte ne sera pas mis à jour de l'achat à la vente.


Il fonctionne, mais n'affiche que le dernier ordre. Je ne sais pas comment le changer pour l'ordre actuel !
 

Je ne sais pas si c'est une bonne pratique ou non, mais je crée les étiquettes dans init() et ObjectSetText juste avec un ".".

Je n'ai pas encore trouvé comment placer une étiquette avec un texte totalement vide. Si j'essaie, le texte "Label" apparaît.

Bien sûr, c'est très bien si vous savez de combien d'étiquettes vous aurez besoin.

Je suppose qu'il ne devrait pas être trop difficile de supprimer les étiquettes en trop et d'en ajouter de nouvelles au besoin dans le corps principal.

Voici le code que j'utilise dans init() pour créer les étiquettes

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. et dans deinit()

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

Cela fonctionne, mais n'affiche que la dernière commande. Je ne sais pas comment le changer pour la commande en cours !
Postez votre dernier code. . .
 
{
   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:

Je voulais dire le code entier. ... mais peu importe... essayez ces changements.

{
   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);
}
 
Ça marche maintenant, merci beaucoup.
 

Veuillez ne pas poster de requêtes qui n'ont rien à voir avec ce très vieux fil de discussion.

J'ai reposté votre question

https://forum.mql4.com/72256

Raison: