Zum Inhalt springen
View in the app

A better way to browse. Learn more.

#T/N/X/T

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Geschrieben


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

Featured Replies

Geschrieben
  • Autor

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)

Geschrieben

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;

         }
       } 
      } 
Geschrieben
  • Autor

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!!!

Bearbeitet von UweBln

Geschrieben
  • Autor

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


}

}

}

}

}

//+------------------------------------------------------------------+
Geschrieben

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.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

Account

Navigation

Suche

Suche

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.