Jump to content
Tom Next - Daytrading Community

OrderSend verhindern wenn bereits eine Order des jeweiligen Handelsinstrumentes geöffnet ist


UweBln

Recommended Posts


Mein ERSTER EA macht mir so manchen Kopfschmerz.

Einer davon ist
dass 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

Link to comment
Share on other sites

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)

Link to comment
Share on other sites

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;

         }
       } 
      } 
Link to comment
Share on other sites

Danke, ziemlich komplex.

Verstehe ich richtig, dass ich

1.) die Variable MagicNumber, deren Parameter in meinem OrderSend-Befehl mit NULL gefüllt ist
in 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 by UweBln
Link to comment
Share on other sites


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);


}

}

}

}

}

//+------------------------------------------------------------------+
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...