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

Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools (http://www.expert-advisor.com/forum/index.php)
-   Expert-Advisors (http://www.expert-advisor.com/forum/forumdisplay.php?f=25)
-   -   EA, der 2 Order in Abhängigkeit setzt und schließt (http://www.expert-advisor.com/forum/showthread.php?t=5560)

Sammy Buffet 23.03.17 16:54

EA, der 2 Order in Abhängigkeit setzt und schließt
 
Hallo Community,

ich habe mich schon im Internet dusselig gesucht und nichts gefunden. Vielleicht suche ich auch falsch. Daher versuche ich es hier.

Ich brauche einen EA oder ein Tool, wo man 2 verschiedene Order in Beziehung setzen (verbinden) kann.

Beschreibung: Ich habe im EURUSD eine Position Long und im GBPUSD eine Position Short. Nun will ich, dass wenn die Summe der beiden Order z.B. den Wert +100€ erreicht, beide Positionen automatisch geschlossen werden. (Oder die Summe -50€ erreicht und geschlossen werden.)
Das kann auch manuell einstellbar sein. Ich dachte irgendwie, dass man das über die Ordernummern regeln kann.

Kann mir dahingehend jemand helfen? Gibt es so ein Tool schon?


Danke vorab!


Grüße, Sam

RetepM 25.03.17 14:00

Guck hier:
https://www.forexfactory.com/showthread.php?t=249264
Funktioniert gut!

traderdoc 25.03.17 23:31

Code:

extern string First_WP = "EURUSD";
extern string Second_WP = "GBPUSD";
extern double Profit = 100;
extern double Loss = 50;

void OnTick() {
  int First_TN = 0, Second_TN = 0;
  int First_Type, Second_Type;
  double profit = 0;

  for(int i = OrdersTotal() - 1; i >= 0; i--) {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
        if (OrderMagicNumber() == MagicNumber) { //kann ggf. weggelassen werden
            if(OrderSymbol() == First_WP) {
              First_TN = OrderTicket();
              First_Type = OrderType();
              profit += OrderProfit();  //ggf. noch OrderCommission() und OrderSwap() einbeziehen
            }
            if(OrderSymbol() == Second_WP) {
              Second_TN = OrderTicket();
              Second_Type = OrderType();
              profit += OrderProfit();  //ggf. noch OrderCommission() und OrderSwap() einbeziehen
            }
        }
      }
  }
  if (profit >= Profit || profit <= -Loss) {
      bool result = false;
      bool first_result = false, second_result = false;
      double price;

      while (!result) {
        if (First_TN > 0 && OrderSelect(First_TN, SELECT_BY_TICKET)) {
            RefreshRates();
            while(IsTradeContextBusy()) Sleep(100);
            if (First_Type == OP_BUY) price = MarketInfo(First_WP, MODE_BID);
              else MarketInfo(First_WP, MODE_ASK);
            first_result = OrderClose(First_TN, OrderLots(), price, 5, Red);   
            if (first_result) First_TN = 0;           
        }
        if (Second_TN > 0 && OrderSelect(Second_TN, SELECT_BY_TICKET)) {
            RefreshRates();
            while(IsTradeContextBusy()) Sleep(100);
            if (Second_Type == OP_BUY) price = MarketInfo(Second_WP, MODE_BID);
              else MarketInfo(Second_WP, MODE_ASK);
            second_result = OrderClose(Second_TN, OrderLots(), price, 5, Red);   
            if (second_result) Second_TN = 0;           
        }
        if (first_result && second_result) break;
      }
  } 
}

Viel Erfolg!

traderdoc


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