Wie kann man die Auftragsart (Verkauf/Kauf) im Diagramm anzeigen? - Seite 3

 
pro_:

Wenn es für Sie funktioniert - gut. Ich bin froh. Aber meine Ansicht ist, dass jeder Indikator sollte universell so viel wie möglich, und nicht gut für einige spezifische Situation nur sein. Sie tun es einmal, aber tun Sie es richtig, so dass, wenn Sie etwas ändern müssen oder Situation ändert sich in Bezug auf Ihre Positionen es richtig funktioniert.

Wie auch immer, Sie sind willkommen.

Es wird nicht funktionieren, wenn Sie das Objekt erstellen und dann versuchen, es beim nächsten Ticken erneut zu erstellen, wird dies fehlschlagen. Wenn also der erste Auftrag ein Kauf und der zweite ein Verkauf ist, wird der Text nicht von Kauf auf Verkauf aktualisiert.
 
Wie ich schon sagte, gibt es eine Menge Fehler im Code. Ich hatte gehofft, der Fragesteller würde selbst daran arbeiten und den Code etwas besser verstehen. Das scheint aber nicht seine Absicht zu sein. Und leider habe ich keine Zeit, den Code für ihn zu schreiben. Ich habe ihm nur etwas zum Arbeiten gegeben, kein fertiges Produkt.
 
RaptorUK:
Es wird nicht funktionieren, wenn Sie das Objekt erstellen und dann versuchen, es beim nächsten Tick erneut zu erstellen, wird dies fehlschlagen. Wenn also der erste Auftrag ein Kauf und der zweite ein Verkauf ist, wird der Text nicht von Kauf auf Verkauf aktualisiert.


Es funktioniert, aber es wird nur die letzte Order angezeigt. Ich weiß nicht, wie ich es für die aktuelle Order ändern kann!
 

Ich weiß nicht, ob es gute Praxis ist oder nicht, aber ich erstelle die Beschriftungen in init() und ObjectSetText nur mit einem "."

Ich habe noch nicht herausgefunden, wie ich ein Label mit völlig leerem Text platzieren kann. Wenn ich es versuche, wird der Text "Label" angezeigt.

Das ist natürlich in Ordnung, solange man weiß, wie viele Labels man braucht.

Ich denke, dass es nicht allzu schwierig sein sollte, überflüssige Beschriftungen zu löschen und neue Beschriftungen bei Bedarf im Hauptteil hinzuzufügen.

Dies ist der Code, den ich in init() verwende, um die Labels zu erstellen

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. und in deinit()

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

Es funktioniert, aber es wird nur die letzte Bestellung angezeigt. Ich weiß nicht, wie ich es für die aktuelle Bestellung ändern kann!
Posten Sie Ihren letzten 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:

Ich meinte den gesamten Code . . aber egal ... versuchen Sie diese Änderungen.

{
   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);
}
 
Es funktioniert jetzt, vielen Dank.
 

Bitte stellen Sie keine Anfragen, die nichts mit diesem sehr alten Thema zu tun haben.

Ich habe Ihre Anfrage neu gepostet

https://forum.mql4.com/72256

Grund der Beschwerde: