Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Programmierung MQL4 (http://www.expert-advisor.com/forum/forumdisplay.php?f=220)
-   -   Anfängerfrage zu OrderSelect und MagicNumber (http://www.expert-advisor.com/forum/showthread.php?t=5561)

bigborre 23.03.17 16:54

Anfängerfrage zu OrderSelect und MagicNumber
 
Hi,

nachdem ich nun schon eine Weile gesucht habe mal eine, glaube ich einfache Frage.

Ich möchte immer am Vorwochenhoch eine Order in den Markt legen.
Das bekomme ich auch hin, leider legt mein EA diese Order nun bei jedem TICK neu in den Markt.

Also dachte ich mir, ich setze eine IF Abfrage davor wenn schon eine Order mit meiner MagicNumber existiert dann soll mein EA keine neue Order senden.

Die Funktion OrderSelect() bietet mir aber nicht die Möglichkeit nach einer Magic Number zu selektieren sondern nur nach TicketNummer oder Position.

Die Position kenne ich nicht und die Ticketnummer will ich eigentlich nicht speichern da für mich ja nur die MagicNumber aussagekräftig ist.

Jetzt meine Frage habe ich die Funktion OrderSelect() richtig verstanden? Das würde bedeuten das ich mir die Ticket Nummer merken müßte oder?

Danke schon einmal!

KeepItEasy 23.03.17 17:26

Du musst zunächst alle offenen Orders mit einer for-Schleife durchlaufen
und dabei mit if prüfen, ob eine "passende" dabei ist, i.d.R. indem Du die
MagicNumber abfragst. Anhand dessen wird entschieden, ob eine Order
geöffnet wird.

Hier einige Code-Fragmente, wie das meistens gemacht wird:

bool SchonEineOrderGeoeffnet = false;

for(int zaehler=0;zaehler<OrdersTotal();zaehler++)
{
OrderSelect(zaehler,SELECT_BY_POS,MODE_TRADES);
if(OrderType() == OP_BUY && OrderMagicNumber() == MagicNummer)
SchonEineOrderGeoeffnet = true;
else if(OrderType()== OP_SELL && OrderMagicNumber() == MagicNummer)
SchonEineOrderGeoeffnet = true;
}
if(SchonEineOrderGeoeffnet == false)
{
Funktion, die dann eine Order öffnet.
}

bigborre 23.03.17 17:42

Danke für deine schnelle Antwort. Erscheint mir sehr umständlich ;) aber wenn der MT4 das nur so her gibt dann machen wir das so.

Na ich werd mir das in eine kleine Unterfunktion packen....

Gruß

Ich habs mal so umgesetzt:
Code:

bool MagicNumberOpen(int MagicNumber)
  {
      for(int zaehler=0;zaehler<OrdersTotal();zaehler++)
      {
        OrderSelect(zaehler,SELECT_BY_POS,MODE_TRADES);
        if(OrderMagicNumber() == MagicNumber)
          return true;
        else
          return false;         
      }
      return false;
 
  }



Alle Zeitangaben in WEZ +2. Es ist jetzt 21:12 Uhr.

Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum