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: 4978
Beiträge: 43260
Benutzer: 7.223
Aktive Benutzer: 67
Links: 84
Wir begrüßen unseren neuesten Benutzer: Pawel
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einer Woche
- Pawel
vor einer Woche
- MaynardCis
vor einer Woche
- Wakeman
vor 4 Wochen
- Sundaytrad...
vor 4 Wochen
- TS_6

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

Empfehlungen

Like Tree1Likes
  • 1 Post By Mogli
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 22.10.23
Neues Mitglied
 
Registriert seit: Jan 2017
Beiträge: 3
Mogli befindet sich auf einem aufstrebenden Ast
Standard KerzenNummer aus einem Trendlinienpunkt in der Zukunft ermitteln

Hallo,
ich will aus einer Trendlinie den 2. Punkt ermitteln. Dieser Punkt liegt in der Zukunft. Die Zeit bekomme ich raus, aber dann versuche ich die Kerzennummer über iBarShift aus zu lesen und bekomme immer eine 0 raus. Anscheinend gibt iBarShift keine negativen Zahlen aus und ich weis nicht an welcher Kerze in der Zukunft dieser Punkt liegt.
Kann mir hier jemand helfen wie ich drauf komme?
Anbei ein Bild zur Veranschaulichung.
Angehängte Grafiken
Dateityp: png Screenshot 2023-10-22 125356.png (167,6 KB, 4x aufgerufen)
  #2 (permalink)  
Alt 23.10.23
Neues Mitglied
 
Registriert seit: Jan 2017
Beiträge: 3
Mogli befindet sich auf einem aufstrebenden Ast
Standard

ich konnte es inzwischen selbst lösen:
Hier meine Lösung. Vielleicht hilfts dem einen oder anderen.
Code:
//---
double TrendLinienWertAnKerzeX(string objectName, int timeFrame, int kerze_X){   // timeFrame = Zeitrahmen
   double res = 0;
   double double_Preis_Schritt = 0;
   datetime date_Akt_Kerze = iTime(NULL, timeFrame, 0);
   datetime date_Kerze_X = iTime(NULL, timeFrame, kerze_X);
   if (timeFrame == 0) timeFrame = Period();

   datetime date_Trendlinie_Time_Left    = (datetime)(ObjectGet(objectName, OBJPROP_TIME1));   // Datum linker Punkt
   double      double_Trendlinie_Price_Left   = ObjectGet(objectName, OBJPROP_PRICE1);         // Preis linker Punkt   
   datetime date_Trendlinie_Time_Right    = (datetime)(ObjectGet(objectName, OBJPROP_TIME2));  // Datum rechter Punkt
   double      double_Trendlinie_Price_Right   = ObjectGet(objectName, OBJPROP_PRICE2);        // Preis linker Punkt
  
   //--- i_Shift_Trendlinien_Punkte
   int i_Shift_Trendlinie_Time_Left = 0;       
   i_Shift_Trendlinie_Time_Left = iBarShift(NULL, timeFrame, date_Trendlinie_Time_Left);  // Kerzennummer des linken Punktes (kann nur >= 0 sein)
   int i_Shift_Trendlinie_Time_Right = 0;
   i_Shift_Trendlinie_Time_Right = iBarShift(NULL, timeFrame, date_Trendlinie_Time_Right);
   
   //--- double_Preis_Schritt
   if(i_Shift_Trendlinie_Time_Left > i_Shift_Trendlinie_Time_Right   // 1 Punkt ist links vom 2 Punkt
   && date_Trendlinie_Time_Right <= date_Akt_Kerze                   // Rechter Punkt liegt in der Vergangenheit oder Gegenwart
   ){
      double_Preis_Schritt = (double_Trendlinie_Price_Right - double_Trendlinie_Price_Left) / (i_Shift_Trendlinie_Time_Left - i_Shift_Trendlinie_Time_Right); // double_Preis_Schritt ist positiv
      res = double_Trendlinie_Price_Right - double_Preis_Schritt * kerze_X;   
   } 
   else if(date_Trendlinie_Time_Right > date_Akt_Kerze               // Rechter Punkt liegt in der Zukunft
   ){
      i_Shift_Trendlinie_Time_Right = int((date_Trendlinie_Time_Right - date_Akt_Kerze) / (timeFrame * 60));   // 1. Shift-Wert der Punktes ermitteln
      double_Preis_Schritt = (double_Trendlinie_Price_Right - double_Trendlinie_Price_Left) / (i_Shift_Trendlinie_Time_Left + i_Shift_Trendlinie_Time_Right); // double_Preis_Schritt ist positiv
      double aktueller_Preis = double_Trendlinie_Price_Right - double_Preis_Schritt * i_Shift_Trendlinie_Time_Right; // 3. Preis Zurückrechnen zur aktuellen Kerze
      res = aktueller_Preis - double_Preis_Schritt * kerze_X;   // 4. Preis Hochrechnen zur Kerze X
   }
   else{
      double_Preis_Schritt = 0;   
      res = double_Trendlinie_Price_Right - double_Preis_Schritt * kerze_X;   
   }   
   return(res);
}
  #3 (permalink)  
Alt 23.10.23
Benutzerbild von Indikator-Trading
Premium Mitglied
 
Registriert seit: May 2020
Ort: Bielefeld
Beiträge: 345
Indikator-Trading befindet sich auf einem aufstrebenden Ast
Standard

Mit iBarShift bekommt man leider nur die Kerzenposition im Chart von den vorhandenen Kerzen, das hast du richtig erkannt. Da du die Zeitposition einer Linie bekommst (oder setzt), könntest du über die Differenz von Kerze 0 zu diesem Zeitpunkt die Kerzenanzahl ermitteln welche zwischen diesen beiden Werten liegt. Dies wird vor allem in den Unteren Zeiteinheiten gut funktionieren, in D1 aber vielleicht nicht, da hier das Wochenende dazwischen liegen wird, aber nicht als Zeiteinheit im Chart vorhanden ist.
Wenn du Differenz von den beiden DateTime Werten durch PeriodSeconds(PERIOD_M5) teilst, kommst du auf die Anzahl an noch nicht vorhandenen Kerzen, welche zwischen der letzten Kerze im Chart und deinem Punkt auf der Linie liegen.
  #4 (permalink)  
Alt 30.10.23
Neues Mitglied
 
Registriert seit: Jan 2017
Beiträge: 3
Mogli befindet sich auf einem aufstrebenden Ast
Standard

Danke für deinen Hinweis Hatte tatsächlich nicht an das Wochenende gedacht.
Indikator-Trading likes this.
Thema geschlossen

Lesezeichen

Stichworte
ibarshift, kerzennummer, zukunft

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 06:11 Uhr.





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