Jump to content


Photo

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


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 UweBln

UweBln

    Runners

  • Rookie
  • PipPip
  • 24 posts
  • 68 thanks

Posted 23 May 2017 - 06:45 AM


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 


  • 0

Thanked by 2 Members:
chimbonda , Vola

#2 UweBln

UweBln

    Runners

  • Rookie
  • PipPip
  • 24 posts
  • 68 thanks

Posted 23 May 2017 - 07:10 AM

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)


  • 0

Thanked by 2 Members:
chimbonda , Vola

#3 conglom-o

conglom-o

    Heatball User

  • *_skilled
  • 2,157 posts
  • 13600 thanks
  • Wohnsitz:O-Town

Posted 23 May 2017 - 09:54 AM

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

  • 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 4 Members:
oldschuren , chimbonda , Vola , whipsaw

#4 UweBln

UweBln

    Runners

  • Rookie
  • PipPip
  • 24 posts
  • 68 thanks

Posted 23 May 2017 - 01:36 PM

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, 23 May 2017 - 01:37 PM.

  • 0

Thanked by 3 Members:
oldschuren , chimbonda , Vola

#5 UweBln

UweBln

    Runners

  • Rookie
  • PipPip
  • 24 posts
  • 68 thanks

Posted 23 May 2017 - 01:52 PM

 
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);
 
                                              }
                                          }  
                                       }  
                                    }     
  }
//+------------------------------------------------------------------+

  • 0

Thanked by 3 Members:
oldschuren , chimbonda , Vola

#6 conglom-o

conglom-o

    Heatball User

  • *_skilled
  • 2,157 posts
  • 13600 thanks
  • Wohnsitz:O-Town

Posted 23 May 2017 - 02:51 PM

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.


  • 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:
chimbonda , 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