Einzelnen Beitrag anzeigen
  #2 (permalink)  
Alt 23.10.23
Mogli Mogli ist offline
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);
}