Jump to content


Photo
* * * * * 1 votes

Zuweisen und abfragen von Orderinformationen...


Wichtiger Hinweis für Besucher der Community!

Das Erstellungsdatum des von Dir aufgerufenen Themas liegt bereits einige Zeit zurück. Wir möchten darauf hinweisen, den Inhalt der Diskussion auf seine Aktualität hin zu prüfen. Weitere Informationen findest Du auf dieser Seite.

  • Please log in to reply
5 replies to this topic

#1 Kuby-D

Kuby-D

    penny-pincher

  • Rookie
  • Pip
  • 4 posts
  • 15 thanks

Posted 27 February 2014 - 12:51 AM

Hallo!

Ich denke mal die nachfolgenden Probleme sind für halbwegs erfahrene Trader nicht schwer zu lösen, dennoch bringen sie mich seit Stunden zur Verzweiflung! cursing.gif

Es geht genau genommen um das Abfragen wie viele Positionen und Order sich im Markt befinden bzw. schon geschlossen wurden und wie ich auf bestimmte Order zugreifen kann.

Hier mal ein konkretes Beispiel:
 

//---Longorder setzen--------------------------------------------------------   if( Ask < LastHigh && Ask > LastLow && BuyOrderTicket == 0 )      {      double PendingPrice = LastHigh;      PendingPrice = NormalizeDouble(PendingPrice, Digits);      double BuyStopLoss = LastLow;	   BuyOrderTicket = OrderSend(Symbol(),OP_BUYSTOP,LotSize,PendingPrice,UseSlippage,BuyStopLoss,TakeProfit,"Buy Stop Order",MagicNumber,0,Green);      }   	  //---Longorder löschen-------------------------------------------------------   OrderSelect(BuyOrderTicket,SELECT_BY_TICKET);   if( Ask < LastLow && OrderType() == OP_BUYSTOP && OrderCloseTime() == 0 && BuyOrderTicket > 0 )	   {		bool Closed = OrderDelete(BuyOrderTicket,Red);		BuyOrderTicket = 0;	    		}		    		    //---Longtrade schließen-----------------------------------------------------   OrderSelect(BuyOrderTicket,SELECT_BY_TICKET);   if( Bid <= LastLowH4 && OrderType() == OP_BUY && OrderCloseTime() == 0 && BuyOrderTicket > 0 )      {  	   double CloseLots = OrderLots();	   double ClosePrice = Bid;   	Closed = OrderClose(BuyOrderTicket,CloseLots,ClosePrice,UseSlippage,Red);      BuyOrderTicket = 0;      }

Man korrigiere mich wenn ich falsch liege, aber beim Setzen der Order überprüfe ich mit "BuyOrderTicket == 0" ob sich aktuell auch keine Order im Markt befindet. Denn mit "BuyOrderTicket = OrderSend(..." wird diesem integer ja erst ein Wert zugewiesen. Wenn später die Order wieder gelöscht wird (entweder bereits ausgeführt mit "OrderClose" oder noch nicht ausgeführt mit "OrderDelete" dann wird danach auch der integer "BuyOrderTicket" = 0 gesetzt.

 

Soweit so gut... Das riesen Problem an der Sache ist, dass wenn der Kurs in den Stop läuft, löscht sich die Order ohne "BuyOrderTicket" = 0 zu setzen. So wird dann keine neue Order mehr gesetzt...mellow.png

 

Also: Wie kann ich Abfragen ob sich zurzeit eine offene Order (OrderType() == OP_BUYSTOP) oder eine ausgeführtePosition (OrderType() == OP_BUY) im Markt befindet?

 

Wenn ich es richtig verstanden habe, greife ich mit der Zeile "OrderSelect(BuyOrderTicket,SELECT_BY_TICKET);" anschließend auf die Order mit dem Ticket "BuyOrderTicket " zu.

 

Aber: Was ist wenn ich mehrer Positionen mit diesem Ticket im Markt habe, ich habe das Gefühl, dass nur auf meine etzte Position zugegriffen wird...

 

Und: Stimmt es das ich mit "if(OrderType() == OP_BUY)" frage ob sich gerade eine laufende Kaufposition- und mit "if(OrderType() == OP_BUYSTOP)" eine offene Longorder im Markt befinden? Ich bin mit da nicht so sicher...

 

ich habe mit diesen if-Abfragen echt noch nachholbedarf... triste.gif

 

Ich freue mich über jeden Tipp den ich bekommen kann!

 


  • 0

Thanked by 5 Members:
Vola , Kleinerbroker , whipsaw , Zahnstocher , oldschuren

#2 conglom-o

conglom-o

    Heatball User

  • *_skilled
  • 2,172 posts
  • 13655 thanks
  • Wohnsitz:O-Town

Posted 27 February 2014 - 11:17 AM

Wie schon in dem anderen Thread erwähnt hast Du auch ein Problem, wenn der EA neu gestartet wird. Es macht also Sinn, vor dem Platzieren von Orders sämtliche Orders zu überprüfen.

 

//Check position   bool AllowLong = true;   bool AllowShort = true;      for (i=OrdersTotal()-1; i>=0; i--) {      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);            if(OrderType()==OP_SELL && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()) AllowShort = false;      if(OrderType()==OP_BUY && OrderMagicNumber()==MagicNumber && OrderSymbol()==Symbol()) AllowLong = false;            } 

Das Ganze ist nun für laufende Orders, aber Du kannst es leicht für Pending Orders erweitern.


  • 2

Marktgedanken - ...denn der Markt vergisst nie!

Meine Trophäen (dedicated to Vola *g*): conglom-o.gif b2m.gif lukas.gif licens.gifmarcus.gif germano.gif


Thanked by 6 Members:
Vola , Kleinerbroker , whipsaw , oldschuren , Kuby-D , Zahnstocher

#3 Kuby-D

Kuby-D

    penny-pincher

  • Rookie
  • Pip
  • 4 posts
  • 15 thanks

Posted 27 February 2014 - 08:57 PM

Aaaaaaaaaaaah  idea.gif

 

Ich dachte ich hätte das Problem mit meiner einzelnen "if(OrderType() == OP_BUY)" abfrage gelöst, aber mit so einer true/false Zuweisung macht es natürlich erst richtig Sinn. Jetzt kann ich auch meinen Positionen verschiede Magicnumbers zuweisen und abfragen...

 

Danke dir Vielmals!


  • 1

Thanked by 4 Members:
Vola , Kleinerbroker , whipsaw , oldschuren

#4 conglom-o

conglom-o

    Heatball User

  • *_skilled
  • 2,172 posts
  • 13655 thanks
  • Wohnsitz:O-Town

Posted 28 February 2014 - 09:13 AM

Aaaaaaaaaaaah  idea.gif

 

Ich dachte ich hätte das Problem mit meiner einzelnen "if(OrderType() == OP_BUY)" abfrage gelöst, aber mit so einer true/false Zuweisung macht es natürlich erst richtig Sinn. Jetzt kann ich auch meinen Positionen verschiede Magicnumbers zuweisen und abfragen...

 

Danke dir Vielmals!

 

Wichtig ist nur, dass Du die Magicnummern beim Platzieren der Order vergibst und nachher auch weißt, welche wozu gehört wink.gif.

Aber Du machst das schon - ansonsten einfach wieder fragen pelo1.gif .

 

P.S.: Neben dem Thanks-Knopf gibt es noch den Aufwärtspfeil hier bei Tom-Next (recht über dem Antworten Knopf).

Den kann man bspw. drücken, wenn ein Beitrag extrem gut / hilfreich ist shades.gif .


  • 4

Marktgedanken - ...denn der Markt vergisst nie!

Meine Trophäen (dedicated to Vola *g*): conglom-o.gif b2m.gif lukas.gif licens.gifmarcus.gif germano.gif


Thanked by 4 Members:
Kleinerbroker , Kuby-D , Mythos , whipsaw

#5 Kleinerbroker

Kleinerbroker

    Floor Broker

  • *_skilled
  • 1,474 posts
  • 9684 thanks
  • Wohnsitz:BW

Posted 28 February 2014 - 07:18 PM

P.S.: Neben dem Thanks-Knopf gibt es noch den Aufwärtspfeil hier bei Tom-Next (recht über dem Antworten Knopf).

ich habs mal probiert, es hat geklappt sunglass.gif

 

kaffee.gif

 

Dein

KB

blush.gif


  • 0
Do not trade alone

Thanked by 2 Members:
Vola , conglom-o

#6 conglom-o

conglom-o

    Heatball User

  • *_skilled
  • 2,172 posts
  • 13655 thanks
  • Wohnsitz:O-Town

Posted 28 February 2014 - 10:53 PM

ich habs mal probiert, es hat geklappt sunglass.gif

 

Das war ja wieder klar - immer, wo es was zum Spielen gibt, bist Du dabei .lukas:.


  • 0

Marktgedanken - ...denn der Markt vergisst nie!

Meine Trophäen (dedicated to Vola *g*): conglom-o.gif b2m.gif lukas.gif licens.gifmarcus.gif germano.gif


Thanked by 2 Members:
Kleinerbroker , Vola

Wichtiger Hinweis für Besucher der Community!

Das Erstellungsdatum des von Dir aufgerufenen Themas liegt bereits einige Zeit zurück. Wir möchten darauf hinweisen, den Inhalt der Diskussion auf seine Aktualität hin zu prüfen. Weitere Informationen findest Du auf dieser Seite.


0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users