UweBln Posted May 23, 2017 Report Share Posted May 23, 2017 Mein ERSTER EA macht mir so manchen Kopfschmerz.Einer davon istdass der EA zu späteren Zeiten (gem. Strategie ja richtig) immer neue Order öffnet,obwohl die erste Order noch nicht via SL/TP abgearbeitet ist.Wie kann man also abfragen, ob eine Order im jeweiligen Handelsinstrument (z.B. USDGBP)bereits offen ist???Wenn eine geöffnet ist, dann möchte ich die OrderSend Befehlt überspringen,Danke für die Hilfe Quote Link to comment Share on other sites More sharing options...
UweBln Posted May 23, 2017 Author Report Share Posted May 23, 2017 Mit int max_Orders = 10; if(OrdersTotal()<max_Orders) { Sell_Ticket=OrderSend.... } verhindere ich erfolgreich die Überschreitung maximal offener Order (hier z.B. nicht mehr als 10 offene Order)ich suche jetzt einen ähnlichen Befehl, mit dem ich die maximal offenen Order des jeweiligen Handelsinstrumentes abfragen kann.also z.B.: if(Orders_Symbol()<1) Quote Link to comment Share on other sites More sharing options...
conglom-o Posted May 23, 2017 Report Share Posted May 23, 2017 Zum Abfragen, ob schon eine Order offen ist musst Du die offene Tradeliste durchgehen. for (int k = OrdersTotal()-1; k >= 0; k--) { if (OrderSelect(k, SELECT_BY_POS, MODE_TRADES)==true) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) { if (OrderType() == OP_BUY || OrderType() == OP_SELL) -> Trade ist offen; } } } Quote Link to comment Share on other sites More sharing options...
UweBln Posted May 23, 2017 Author Report Share Posted May 23, 2017 (edited) Danke, ziemlich komplex.Verstehe ich richtig, dass ich1.) die Variable MagicNumber, deren Parameter in meinem OrderSend-Befehl mit NULL gefüllt istin den OrderSend-Befehl austauschen muss? - also statt NULL dann MagicNumber ?2.) Muss ich am Kopf des EA die Zeile extern int MagicNumber = 2017; // (2017 ist natürlich beliebig, richtig?)einfügen?Das mit der MagicNumber hab ich nicht auf meinem Schirm!!! Edited May 23, 2017 by UweBln Quote Link to comment Share on other sites More sharing options...
UweBln Posted May 23, 2017 Author Report Share Posted May 23, 2017 extern int MagicNumber = 2017; int SELL_Ticket; //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { // Doppelte Order prüfen und verhindern for (int k = OrdersTotal()-1; k >= 0; k--) { if (OrderSelect(k, SELECT_BY_POS, MODE_TRADES)==true) { if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber) { if (OrderType() == OP_BUY || OrderType() == OP_SELL) { // PlayAlert_BO_123(" -> Trade ist bereits offen "); // PlayAlert + Message Alert(" -> Trade ist offen "); SELL_Ticket=OrderSend(Symbol(),OP_SELL,0.01,Bid,3,(Bid+0.003),(Bid-0.003),NULL,MagicNumber,0,clrRed); } } } } } //+------------------------------------------------------------------+ Quote Link to comment Share on other sites More sharing options...
conglom-o Posted May 23, 2017 Report Share Posted May 23, 2017 Die MagicNumber dient dazu dem EA seine Trades zuordnen zu können damit er nicht irgendwelche manuellen Trades o.ä. modifiziert. Die muss natürlich auch bei der Tradeeröffnung mitgegeben werden. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.