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)
-   -   Selektiertes Ordersymbol() feststellen, Schleife (http://www.expert-advisor.com/forum/showthread.php?t=6442)

fintrad0 15.06.19 12:55

Selektiertes Ordersymbol() feststellen, Schleife
 
Hallo,
ich versuche in einer Schleife (mql4, über alle offenen Orders) das gerade selektierte Ordersymbol (DAX, EURUSD etc.) auszulesen um individuell darauf reagieren zu können.

Mit der Dokumentation bei mql5.com habe ich noch so meine Probleme, vielleicht könnte mir hier jemand einen Tipp geben, wie ich das fehlerfrei hin bekomme.
Jetzt, am Wochenende, kann ich leider nicht ausprobieren weil ich keine Order öffnen kann um dann das Symbol mit dem EA auszulesen.


So sieht die Schleife aus:
Code:

  for(int i=OrdersTotal()-1; i>=0; i--)
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {   
          // hier sollte zuerst das Ordersymbol abgefragt werden, geht das?:
            if (StringFind(OrderSymbol(), "EURUSD",0) >0 {
          }
      }

Danke für Eure Ideen!

Gruß
Werner

traderdoc 15.06.19 18:14

Code:

for (int i = OrdersTotal()-1; i >= 0; i--) {
  if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {   
      if (OrderSymbol() == Symbol()) {
     
      }
  }
}

traderdoc

fintrad0 15.06.19 20:12

Das war es nicht ganz, was ich meinte
 
Hallo traderdoc,
danke, für die Antwort. Das war es leider nicht ganz, was ich meinte. Da hab ich mich etwas ungeschickt ausgedrückt: Das jeweils selektierte Symbol der Schleife (aller geöffneten Orders) hat mit dem Symbol des Charts nicht automatisch etwas gemeinsam. Trotzdem muss der EA darauf reagieren und z. B. einen SL setzen oder einen Teilverkauf machen o. ä.

Code:

  for(int i=OrdersTotal()-1; i>=0; i--)
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {   
          // hier sollte zuerst das Ordersymbol abgefragt werden, geht das?:
            if (StringFind(OrderSymbol(), "EURUSD",0) >0 { mach das...};
            if (StringFind(OrderSymbol(), "[DAX30]",0) >0 { mach was anderes...};
            if (StringFind(OrderSymbol(), "[WTI]",0) >0 { mach jetzt das...};
         
      }

Die Anzahl der If's ist noch nicht klar, wahrscheinlich werde ich später switch verwenden.

Mir geht es hauptsächlich darum, wie ich das selektierte Symbol in der Schleife präzise auslese um individuell darauf reagieren zu können.

Das Dumme ist, dass ich am Wochenende nicht live testen kann und die ganze nächste Woche komme ich nicht dazu. Deswegen wollte ich das noch am Wochenende erledigt haben.


OrderSymbol() spricht das selektierte Symbol im Pool an, oder? Und Symbol() das Symbol des Charts, in den der EA eingebunden ist.
------
Diese Vorgehensweise hat letzte Woche bei mir zu wenigstens 1x zu einem fehlerhaften Verhalten geführt. Deswegen frage ich jetzt nach, ob es eine bessere Methode gibt.

Code:

if (OrderSymbol() == "[DAX]") {...}
if (OrderSymbol() == "EURUSD") {...}
if (OrderSymbol() == "WTI") {...}

Gibts vielleicht noch eine andere Idee, die ich testen könnte?

Vielen Dank!

Gruß
Werner

fintrad0 15.06.19 21:21

Das war es nicht ganz, was ich meinte
 
Hallo traderdoc,
danke, für die Antwort. Das war es leider nicht ganz, was ich meinte. Da hab ich mich etwas ungeschickt ausgedrückt: Das jeweils selektierte Symbol der Schleife (aller geöffneten Orders) hat mit dem Symbol des Charts nicht automatisch etwas gemeinsam. Trotzdem muss der EA darauf reagieren und z. B. einen SL setzen oder einen Teilverkauf machen o. ä.

Code:

  for(int i=OrdersTotal()-1; i>=0; i--)
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {   
          // hier sollte zuerst das Ordersymbol abgefragt werden, geht das?:
            if (StringFind(OrderSymbol(), "EURUSD",0) >0 { mach das...};
            if (StringFind(OrderSymbol(), "[DAX30]",0) >0 { mach was anderes...};
            if (StringFind(OrderSymbol(), "[WTI]",0) >0 { mach jetzt das...};
         
      }

Die Anzahl der If's ist noch nicht klar, wahrscheinlich werde ich später switch verwenden.

Mir geht es hauptsächlich darum, wie ich das selektierte Symbol in der Schleife präzise auslese um individuell darauf reagieren zu können.

Das Dumme ist, dass ich am Wochenende nicht live testen kann und die ganze nächste Woche komme ich nicht dazu. Deswegen wollte ich das noch am Wochenende erledigt haben.


OrderSymbol() spricht das selektierte Symbol im Pool an, oder? Und Symbol() das Symbol des Charts, in den der EA eingebunden ist.
------
Diese Vorgehensweise hat letzte Woche bei mir zu wenigstens 1x zu einem fehlerhaften Verhalten geführt. Deswegen frage ich jetzt nach, ob es eine bessere Methode gibt.

Code:

if (OrderSymbol() == "[DAX]") {...}
if (OrderSymbol() == "EURUSD") {...}
if (OrderSymbol() == "WTI") {...}

Gibts vielleicht noch eine andere Idee, die ich testen könnte?

Vielen Dank!

Gruß
Werner

fintrad0 16.06.19 14:26

Vielen Dank!
 
Vielen Dank für die Antwort!


Alle Zeitangaben in WEZ +2. Es ist jetzt 05:46 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