Thema: Trendlinien
Einzelnen Beitrag anzeigen
  #2 (permalink)  
Alt 05.08.17
next user next user ist offline
Premium Mitglied
 
Registriert seit: May 2015
Beiträge: 367
next user befindet sich auf einem aufstrebenden Ast
Standard

Die ermittelten Werte sind soweit richtig. Dein Fehler liegt im Folgenden:
Code:
int      Pos1  =iHighest      (NULL,PERIOD_H1,MODE_HIGH,24,1);
double   Price1=iHigh         (NULL,0,Pos1);
datetime Time1 =StringToTime  ((string)TimeYear(Time[0])+"."+(string)TimeMonth(Time[0])+"."+(string)TimeDay(Time[Pos1]));
Du willst eine Trendlinie an den höchsten bzw. tiefsten Punkten im H1-Chart zeichnen, ermittelst die Zeitkoordinate aber nur bis zum Tag.
Dein Code muss von
Code:
... (string)TimeDay(Time[Pos1])
zu
Code:
... (string)TimeDay(Time[0])+" "+(string)TimeHour(Time[Pos1])
geändert werden. Für den Vortag nimmste dann z.B TimeDay(Time[24]). Für die anderen drei natürlich genau so.

Außerdem gehen deine Bedingungen
Code:
if(Price2<Price1)
...
if(Price4>Price3)
nur bei "aufwärts gerichtet" (High) und "abwärts gerichtet" (Low) auf. Auf umgekehrter Reihenfolge nicht. Hoffe das ist so gewollt.

Beim Vortag müsste folgender Code
Code:
(NULL,PERIOD_H1,MODE_LOW,48,25);
(NULL,PERIOD_H1,MODE_HIGH,48,25);
so heißen
Code:
(NULL,PERIOD_H1,MODE_LOW,24,25);
(NULL,PERIOD_H1,MODE_HIGH,24,25);
denn der vorletzte Parameter gibt die Anzahl zu überprüfender Kerzen an, beginnend vom letzten Parameter.
Mit deiner Angabe überprüfst du die letzten BEIDEN Vortage.

Noch ein kleiner Tipp.
Deine Zeilen zur Ermittlung der Zeitkoordinate sind unnötig. Du kannst auch einfach bei der Objekterstellung anstatt
Code:
ObjectCreate(0,"High_Trendline",OBJ_TREND,0,Time1,Price1,Time2,Price2)
folgendes schreiben
Code:
ObjectCreate(0,"High_Trendline",OBJ_TREND,0,Time[Pos1],Price1,Time[Pos2],Price2)
So sparst du dir 4 Variablen und 16 (bzw. mit der Korrektur 20) Funktionsaufrufe.

Geändert von next user (05.08.17 um 05:36 Uhr)