Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools  
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4100
Beiträge: 38685
Benutzer: 6.388
Aktive Benutzer: 222
Links: 80
Wir begrüßen unseren neuesten Benutzer: fynnfx
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 18:12).
Neue Benutzer:
vor 3 Tagen
- fynnfx
vor 5 Tagen
- Oppus...
vor 6 Tagen
- justme177
vor 6 Tagen
- DanielF
vor einer Woche
- haschmat

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 60
Gesamt: 60
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 06.03.18
Ceo Ceo ist offline
Mitglied
 
Registriert seit: Jan 2018
Beiträge: 47
Ceo befindet sich auf einem aufstrebenden Ast
Standard 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.
  #2 (permalink)  
Alt 06.03.18
Mitglied
 
Registriert seit: Jun 2016
Ort: Österreich
Beiträge: 282
Leopold befindet sich auf einem aufstrebenden Ast
Standard

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

---Leopold---
  #3 (permalink)  
Alt 06.03.18
Premium Mitglied
 
Registriert seit: May 2015
Beiträge: 367
next user befindet sich auf einem aufstrebenden Ast
Standard

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.
  #4 (permalink)  
Alt 07.03.18
Ceo Ceo ist offline
Mitglied
 
Registriert seit: Jan 2018
Beiträge: 47
Ceo befindet sich auf einem aufstrebenden Ast
Standard

@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?
  #5 (permalink)  
Alt 07.03.18
Mitglied
 
Registriert seit: Jun 2016
Ort: Österreich
Beiträge: 282
Leopold befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Ceo Beitrag anzeigen
@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---
  #6 (permalink)  
Alt 07.03.18
Ceo Ceo ist offline
Mitglied
 
Registriert seit: Jan 2018
Beiträge: 47
Ceo befindet sich auf einem aufstrebenden Ast
Standard

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?
  #7 (permalink)  
Alt 07.03.18
Mitglied
 
Registriert seit: Jun 2016
Ort: Österreich
Beiträge: 282
Leopold befindet sich auf einem aufstrebenden Ast
Standard

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---
  #8 (permalink)  
Alt 07.03.18
Ceo Ceo ist offline
Mitglied
 
Registriert seit: Jan 2018
Beiträge: 47
Ceo befindet sich auf einem aufstrebenden Ast
Standard

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.
Angehängte Grafiken
Dateityp: jpg Screenshot (3)_LI.jpg (53,3 KB, 14x aufgerufen)
  #9 (permalink)  
Alt 07.03.18
Mitglied
 
Registriert seit: Jun 2016
Ort: Österreich
Beiträge: 282
Leopold befindet sich auf einem aufstrebenden Ast
Standard

Den Wert 0 nicht verwenden, erst mit 1 beginnen.

---Leopold---
  #10 (permalink)  
Alt 07.03.18
Mitglied
 
Registriert seit: Jun 2016
Ort: Österreich
Beiträge: 282
Leopold befindet sich auf einem aufstrebenden Ast
Standard

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---
Thema geschlossen

Lesezeichen

Stichworte
indikator, indikator tief, metatrader indikator, mql4, programmierung, programmierung metatrader, programmierung mql4, tief, tief indikator


Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +2. Es ist jetzt 14:05 Uhr.


Der Wavesnode - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2018 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2017 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------