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)
-   -   Trademanger (http://www.expert-advisor.com/forum/showthread.php?t=5766)

Lena 21.07.17 09:18

Trademanger
 
Hallo zusammen,
kennt von euch vielleicht einer einen "vernünftigen" Trademanger?
Mir geht es eigentlich nur um eine einzige Funktion. Und zwar sollen bestehende Positionen beim erreichen des beim platzieren der Order angegbenen TP um 50% reduziert werden und für die verbleibenden 50% der TP verdoppelt. Zudem der SL auf BE nachgezogen.

Ich würde mich auch freuen wenn mir jemand einen Tipp geben könnte wie ich sowas programmieren kann. Hilfe bei der Logik!

Leopold 21.07.17 09:29

Hallo,

zu den 2 TakeProfits: du könntest ja generell 2 Positionen eröffnen mit jeweils der halben Lotsize. Dann kannst du für die beiden Positionen getrennte TP's festlegen. Das wäre meiner Meinung die einfachste Lösung.

---Leopold---

Leopold 21.07.17 09:59

Zum BE: Ich möchte sowieso eine Funktion zum nachziehen auf BE schreiben. Wenn es sich ausgeht werd ich diese heute nachmittag schreiben und diese dann posten. Meine Herangehensweise wäre wenn ein vielfaches des Risikos erreicht ist, wird der Stop auf BE nachgezogen.

---Leopold---

Leopold 21.07.17 14:10

Hallo,

so hab das mal geschrieben.

Code:

void Check_BreakEvenLevels (int EA_ID, double Faktor_BreakEvenLevel)
  {
  ResetLastError();
 
  for (int i = OrdersTotal() - 1; i >= 0; i--)
      {
      bool Order_Select = OrderSelect(i, MODE_TRADES);
     
      if (Order_Select == True)
        {
        if (OrderMagicNumber() == EA_ID && OrderType() <= 1)
            {
            double OpenPrice = OrderOpenPrice(), StopLossPrice = OrderStopLoss();
           
            if (OrderType() == OP_BUY && StopLossPrice != 0 && StopLossPrice < OpenPrice)
              {
              double BreakEvenLevel = OpenPrice + ((OpenPrice - StopLossPrice) * Faktor_BreakEvenLevel);
              if (Bid >= BreakEvenLevel)
                  {
                  bool Order_Modify = OrderModify(OrderTicket(), OpenPrice, OpenPrice, OrderTakeProfit(), 0);
                  if (Order_Modify == False) Print("Fehler bei OrderModify. Ticket: ", OrderTicket(), "Error: ", GetLastError());
                  }
              }
           
            else if (OrderType() == OP_SELL && StopLossPrice != 0 && StopLossPrice > OpenPrice)
              {
              double BreakEvenLevel = OpenPrice - ((StopLossPrice - OpenPrice) * Faktor_BreakEvenLevel);
              if (Ask <= BreakEvenLevel)
                  {
                  bool Order_Modify = OrderModify(OrderTicket(), OpenPrice, OpenPrice, OrderTakeProfit(), 0);
                  if (Order_Modify == False) Print("Fehler bei OrderModify. Ticket: ", OrderTicket(), "Error: ", GetLastError());
                  }
              }
            } //Ende Kontrolle MagicNumber
        } //Ende Kontrolle OrderSelect
      } //Ende For-Schleife Orders
  } //Ende Funktion Check_BreakEvenLevels

Getestet hab ich es noch nicht, sollte aber funktionieren.
Vielleicht kannst du das mal testen.

mfg Leopold


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