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)
-   -   Letztes Tief eines Indikators finden. (http://www.expert-advisor.com/forum/showthread.php?t=6029)

Ceo 06.03.18 16:54

Letztes Tief eines Indikators finden.
 
Hallo, mein EA ist nun fast fertig "yeay". Jetzt geht es an Moneymanagment und Riskomanagment und genau da hab ich ein Problem. Mein Stoploss wird an einem bestimmt Punkt gesetzt, so weit so gut. Nun möchte ich mit einem Modifizierten ZigZag Indikator den Stoploss nachziehen. Er soll den Stoploss immer am letzten Tief setzen.

Hier findet er die Punkte.

Code:

//Value

  int  i = 0;
  double value = 0;
  int count = 0;

      while (count < 4)
      {
        value = iCustom(Symbol(),0,"Myindi",2,0,i);
        if (value > 0)
        {
            ZIGZAG[count] = value;
            count++;
        }
        i++;
      }

Hier kauft er und weiter unten setzten er den Stoploss

Code:

               

if( buy_condition_1  )
{       
                               
LongTicket = OrderSend(Symbol(),OP_BUY,LotSize,Ask,0,0,0,"Buy Order",MagicNumber,0,Green);
                                                 
                               
L2 = OrderSelect(LongTicket,SELECT_BY_TICKET);
OpenPrice = OrderOpenPrice();
                               
           
           
  if(StopLoss > 0)  LongStopLoss = OpenPrice - (StopLoss * RealPoint);
  if(TakeProfit > 0) LongTakeProfit = OpenPrice + (TakeProfit * RealPoint);
           
           
if(LongStopLoss > 0 || LongTakeProfit > 0)
        {
  bool LongMod = OrderModify(LongTicket,OpenPrice,LongStopLoss, LongTakeProfit,0);
        }
                               
                                                       
                               
        }

Jetzt weiß ich nicht mehr weiter, wie finde ich das letzten Tief raus? Hab mir schon überlegte mit ilowest aber sicher bin ich mir nicht.

Leopold 06.03.18 20:16

Ich hätte jetzt mal gesagt der Tiefste der letzten 3 ZIGZAG werte. Hast du das schon mal probiert?

---Leopold---

next user 06.03.18 20:19

Habs vielleicht falsch verstanden, aber wenn dein erster Code die Werte des Indikators holt, dann ist es doch kein Problem,
das letzte Tief zu ermitteln.

Ceo 07.03.18 12:17

@Leopold Das Problem ist das es nicht immer der ZICKZAG[3] ist sondern immer unterschiedlich, wenn sich eine neue Linie gebildet hat gehen die "zahlen" ein schritt mit(ich hoffe man versteht was ich meine) manchmal ist es der ZIGZAG[2] manchmal ZIGZAG[1]. Wenn es nicht ganz verständlich ist kann ich mal ein Bild dazu machen.


@Next user Die frage ist ja wie? Es sind nicht immer die selben Werte also muss ich von den letzten Werten ermitteln welcher der "erste tiefere" ist und jetzt ist die frage wie mache ich das?

Leopold 07.03.18 12:21

Zitat:

Zitat von Ceo (Beitrag 40475)
@Leopold Das Problem ist das es nicht immer der ZICKZAG[3] ist sondern immer unterschiedlich, wenn sich eine neue Linie gebildet hat gehen die "zahlen" ein schritt mit(ich hoffe man versteht was ich meine) manchmal ist es der ZIGZAG[2] manchmal ZIGZAG[1]. Wenn es nicht ganz verständlich ist kann ich mal ein Bild dazu machen.

Das ist mir schon klar, deswegen müsstest du den Tiefsten Wert der Letzten 3 Werte nehmen.
Aber vielleicht kannst du mal eine Zeichnung posten.

---Leopold---

Ceo 07.03.18 12:27

Ach okay ich hab verstanden das du meinst ich soll immer den ZIGZAG[3] Wert nehmen. Okay aber wie ermittel ich nun welcher der 3 Werte am niedrigsten ist?

Leopold 07.03.18 12:35

Da du die Werte in einen Array hast würde ich es damit versuchen:

ArrayMinimum();

https://docs.mql4.com/array/arrayminimum

Hier bekommst du den Index zurück und schreibst einfach:

Tief = ZIGZAG[Index]; //Index = Wert von ArrayMinimum();

---Leopold---

Ceo 07.03.18 13:15

Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab jetzt was durch (Zufall) gesehen was mir doch mehr Probleme bereitet, und zwar folgendes: Bei 0 sieht man ja das sich ein neues HOCH gebildet hat (Roter Punkt) der ist aber nicht endgültig also verschiebt sich noch. So wie stelle ich es nun an das er denn Stoploss erst an Rot zieht wenn das nächste Tief gebildet wurde? (T) im Bild.

Leopold 07.03.18 13:17

Den Wert 0 nicht verwenden, erst mit 1 beginnen.

---Leopold---

Leopold 07.03.18 13:39

ungefähr so:

Code:

/Value

  int  i = 0;
  double value = 0;
  int count = 0;

      while (count < 4)
      {
        value = iCustom(Symbol(),0,"Myindi",2,0,i);
        if (value > 0)
        {
            if (count > 0) ZIGZAG[count -1] = value;
            count++;
        }
        i++;
      }

So würdest du 3 Werte beginnend mit count = 1 bekommen.

---Leopold---


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