mql5 + PositionGetString(POSITION_COMMENT) liefert nichts zurück

 

Hallo

ich habe einen Pool mit offenen Orders und diese Positionen haben alle einen Kommentar übergeben, den ich auch im Terminal sehen kann.

Doch mit folgender Schleife, wird mir kein Kommentar zurückgegeben. Was mach ich hier falsch? Das korrekte Orderticket kann ich mir ja auch ausgeben.

  for ( int i = 0; i < PositionsTotal(); i++ )
   {   
   ulong ticket = PositionGetTicket(i);
         bool selected = PositionSelectByTicket(ticket);
         Print("ticket ="+ticket+" selected= "+selected);
      if ( PositionSelect(_Symbol))
      {   
        Print("PositionGetString(POSITION_COMMENT)="+PositionGetString(POSITION_COMMENT));
Alternativ
         string GetComment = "";
         PositionGetString(POSITION_COMMENT,GetComment);
Print(" PositionGetString(POSITION_COMMENT) = "+GetComment);  
    }
  } 
 

Weil du die Funktion falsch verwendest, du setzt GetComment auf 0 und fragst dann eine Bool ab. Das kann nicht funktionieren


https://www.mql5.com/de/docs/trading/positiongetstring

Dokumentation zu MQL5: Handelsfunktionen / PositionGetString
Dokumentation zu MQL5: Handelsfunktionen / PositionGetString
  • www.mql5.com
Funktion gibt die angeforderte Eigenschaft der offenen Position zurück, die vorher für die Funktion PositionGetSymbol oder PositionSelect...
 

sunshineh Du bringst Kraut und Rüben durcheinander: PositionGetTicket(i) UND(??) PositionSelect(_Symbol) ??

  1. Lies mal nach, was die Funktionen machen (Kursor auf Funktion + F1),
  2. Such einfach nach funktionierenden Beispielen: https://www.mql5.com/en/search#!keyword=PositionGetTicket&module=mql5_module_codebase
Denk dran, alles, was Ihr programmieren wollt gibt es schon! Suchen ist das schnellere Programmieren!
Person - Schema.org Type
  • schema.org
Schema.org Type: Person - A person (alive, dead, undead, or fictional).
 

Vielen Dank für eure Antworten!!

@amando 

Beim Alternativ-Teil kann ich deine Anmerkung verstehen, dass ich erst Position_Comment auf 0 setze und dann abfrage. Zuvor habe ich aber nur diesen Teil gehabt und es funktionierte auch nicht. 

  for ( int i = 0; i < PositionsTotal(); i++ )
   {   
   ulong ticket = PositionGetTicket(i);
         bool selected = PositionSelectByTicket(ticket);
         Print("ticket ="+ticket+" selected= "+selected);
      if ( PositionSelect(_Symbol))
      {   
        Print("PositionGetString(POSITION_COMMENT)="+PositionGetString(POSITION_COMMENT));
      }
   }

Hier kann ich mir aber nicht erklären, warum. Ist es, da ich nach PositionSelectByTicket die Fkt. PositionSelect aufgerufen habe?? Bei der Print-Ausgabe wurde mir ja immer das aktuelle Ticket angezeicht. 
Kann ich die Funktion PositionSelect(_Symbol) im Hedging Mode wohl nicht verwenden?

 
sunshineh #:

Vielen Dank für eure Antworten!!

@amando 

Beim Alternativ-Teil kann ich deine Anmerkung verstehen, dass ich erst Position_Comment auf 0 setze und dann abfrage. Zuvor habe ich aber nur diesen Teil gehabt und es funktionierte auch nicht. 

Hier kann ich mir aber nicht erklären, warum. Ist es, da ich nach PositionSelectByTicket die Fkt. PositionSelect aufgerufen habe?? Bei der Print-Ausgabe wurde mir ja immer das aktuelle Ticket angezeicht. 
Kann ich die Funktion PositionSelect(_Symbol) im Hedging Mode wohl nicht verwenden?

Doch, aber richtig, du musst das in eine Schleife bauen, am besten du suchst dir in der Codebase ein Beispiel dafür

sunshineh #:

Vielen Dank für eure Antworten!!

@amando 

Beim Alternativ-Teil kann ich deine Anmerkung verstehen, dass ich erst Position_Comment auf 0 setze und dann abfrage. Zuvor habe ich aber nur diesen Teil gehabt und es funktionierte auch nicht. 

Hier kann ich mir aber nicht erklären, warum. Ist es, da ich nach PositionSelectByTicket die Fkt. PositionSelect aufgerufen habe?? Bei der Print-Ausgabe wurde mir ja immer das aktuelle Ticket angezeicht. 
Kann ich die Funktion PositionSelect(_Symbol) im Hedging Mode wohl nicht verwenden?

Den Kommentar einer Position wird vom Broker-Server geändert, es ist kein gute Idee, dort wichtige Infos zu platzieren.

Die MagicNummer ist Deine Referenz, schau, ob Du sie nutzen kannst.