Thema: Trendlinien
Einzelnen Beitrag anzeigen
  #6 (permalink)  
Alt 05.08.17
Lena Lena ist offline
Mitglied
 
Registriert seit: Feb 2016
Beiträge: 105
Lena befindet sich auf einem aufstrebenden Ast
Standard

Natürlich muss es ObjectSet... und NICHT ObjectGet... heißen. Da war ich mal wieder zu schnell auf der Tastatur. Vielen Dank für deine Hilfe. Bei den vielen Befehlen und Möglichkeiten verliere ich noch häufig den Überblick. Oftmals weiß ich auch garnicht wonach ich suchen soll.

Habe mir jetzt aber erfolgreich eine Funktion gebastelt welche eine Trendlinie zwischen dem höchsten Punkt des vorgestrigen und gestrigen Tages einzeichnet. Diese wird auch in die "Zukunft" weiter projeziert. Zudem wird die Trendlinie so verschoben, dass es keine Schneidung am Vortag gibt. Der Code ist beigefügt. Evtl kann es ja jemand gebrauchen. Die verwendeten Zeiträume ließen sich auch schnell abändern.

Code:
//+------------------------------------------------------------------+
//| Funktion TRENDLINIEN                                             |
//+------------------------------------------------------------------+
void Func_Trend_Lines () {
   int      Pos1  =iHighest      (NULL,PERIOD_H1,MODE_HIGH,24,1);                                                 //Ermitteln welcher Bar den höchsten Preis im laufe des gestrigen Tages aufweist
   double   Price1=iHigh         (NULL,0,Pos1);                                                                   //Den höchsten Preis abfragen
   int      Pos2  =iHighest      (NULL,PERIOD_H1,MODE_HIGH,24,25);                                                //Vorherige beiden Anweisungen wiederholen
   double   Price2=iHigh         (NULL,0,Pos2);

   int      Pos3  =iLowest       (NULL,PERIOD_H1,MODE_LOW,24,1);
   double   Price3=iLow          (NULL,0,Pos3);
   int      Pos4  =iLowest       (NULL,PERIOD_H1,MODE_LOW,24,25);
   double   Price4=iLow          (NULL,0,Pos4);
   if(Price2>Price1){                                                                                             //Abfrage ob das Hoch des vorgestrigen Tages größer dem Hoch des gestrigen Tages
      ObjectCreate      (0,"High_Trendline",OBJ_TREND,0,Time[Pos2],Price2,Time[Pos1],Price1);                     //Erstelle Trendlinie mit entsprechenden Koordinaten und Preisen
      for(i=Pos1-1;i>=1;i--){                                                                                     //Schleife (Zählervariable beginnt mit Position des Bars, welches Tageshoch bildet)
         if(iHigh(NULL,0,i)>ObjectGetValueByShift("High_Trendline",i)){                                           //Abfrage  (Ist Bar Tageshoch größer Trendlinie an gleicher Position) 
            ObjectSetInteger  (0,"High_Trendline",OBJPROP_TIME2, 0,Time[i]);                                      //Ankerpunkt des gestrigen Tages wird auf Position des abgefragten Bars gesetzt
            ObjectSetDouble   (0,"High_Trendline",OBJPROP_PRICE2,0,iHigh(NULL,0,i));                              //Preis an zugehörigem Punkt wird auf Tageshoch des entsprechenden Bars gesetzt
            }
      }                        
      ObjectSetInteger  (0,"High_Trendline",OBJPROP_COLOR,clrAqua);                                               //Formatierung der Trendlinie 
      ObjectSetInteger  (0,"High_Trendline",OBJPROP_WIDTH,1);
      ObjectSetInteger  (0,"High_Trendline",OBJPROP_STYLE,STYLE_DOT);
      ObjectSet         (  "High_Trendline",OBJPROP_RAY_RIGHT,true);
   }

   if(Price3>Price4){                                                                                             //siehe Kommentare zu "High_Trendline"
      ObjectCreate    (0,"Low_Trendline",OBJ_TREND,0,Time[Pos4],Price4,Time[Pos3],Price3);
      for(i=Pos3;i>=1;i--){
         if(iLow(NULL,0,i)<ObjectGetValueByShift("Low_Trendline",i)){
            ObjectSetInteger  (0,"Low_Trendline",OBJPROP_TIME2, 0,Time[i]);
            ObjectSetDouble   (0,"Low_Trendline",OBJPROP_PRICE2,0,iLow(NULL,0,i));
            }
      }                        
      ObjectSetInteger(0,"Low_Trendline",OBJPROP_COLOR,clrAqua); 
      ObjectSetInteger(0,"Low_Trendline",OBJPROP_WIDTH,1);
      ObjectSetInteger(0,"Low_Trendline",OBJPROP_STYLE,STYLE_DOT);
      ObjectSet       (  "Low_Trendline",OBJPROP_RAY_RIGHT,true);
   }
}