Einzelnen Beitrag anzeigen
  #1 (permalink)  
Alt 03.10.20
Mino1337 Mino1337 ist offline
Neues Mitglied
 
Registriert seit: Aug 2017
Beiträge: 4
Mino1337 befindet sich auf einem aufstrebenden Ast
Question EA für Klassische Chartanalyse

Hallo,

ich versuche gerade einen EA zu programmieren der nach der klassischen Chartanalyse vorgeht. Er soll für den Anfang eine Trendlinie einzeichnen welche sich auf den höchsten Wert der letzten X Kerzen und Y weiteren Werten stützt.

Im Moment ist nder EA gerade am Anfang und tut noch etwas ganz anderes. Er sollte eine Trendlinie einzeichnen welche sich auf den Höchsten Wert der letzten X Kerzen und den zweit höchsten Wert stützt wenn Y weitere Werte im selben Bereich liegen.

Das ist nur ein Zwischenstand.

Mein Problem ist allerdings das die Trendlinie nicht eingezeichnet wird. Ich schaffe es eine Horizontale Linie einzuzeichnen aber eine Vertikale funktioniert schon nicht mehr. Keine Ahnung warum. Könnte sich das bitte mal jemand ansehen ?


Code:
extern int KerzenZurueck;



bool Wert1IstImBereichVonWert2(double Wert1, double Wert2, double Bereich){
if(Wert1<Wert2+Bereich&&Wert1>Wert2-Bereich){
return true;
}else{
return false;
}
}



//Maximal 100 Kerzen zurück
void TrenbdlinieEinzeichnen(int Periode, int minimaleStuetzpunkte, double Bereich){

double Werte[100];
double WerteOrt[100];
double OrtSortierterArray[100];
int Stuetzpunkte;
double StuetzpunktWerte[2];
double StuetzpunktOrte[2];

for(int i = 0; i<=Periode; i++){
Werte[i]=High[i];
WerteOrt[i]=High[i];
}

ArraySort(Werte,WHOLE_ARRAY,0,MODE_DESCEND);

for(int j = 0; j<=Periode; j++){
for(int o = 0; o<=Periode; o++){
if(Werte[j]==WerteOrt[o]){
OrtSortierterArray[j]=o;
}
}
}


//Der Werte-Array hat nun die Höchstkerzenstände in absteigender Reihenfolge gespeichert und OrtSortierterArray hat die dazugehöhrigen Kerzen gespeichert an selber Stelle wie der Wert in Werte-Array


for(int k=0; k<Periode; k++){

bool ZielErreicht = false;

if(Wert1IstImBereichVonWert2(Werte[k],Werte[k+1],Bereich*Point)&&!ZielErreicht){
Stuetzpunkte=Stuetzpunkte+1;
}else{
Stuetzpunkte=0;
}
if(Stuetzpunkte>=minimaleStuetzpunkte&&!ZielErreicht){
ZielErreicht=true;
StuetzpunktWerte[0]=Werte[k];
StuetzpunktWerte[1]=Werte[k+1];
StuetzpunktOrte[0]=OrtSortierterArray[k];
StuetzpunktOrte[1]=OrtSortierterArray[k+1];
}
}


//In Stuetzpunkt Werte sollten nun zwei Werte und Stuetzpunkt Orte sollten nun zwei Kerzennummern stehen sodass nun eine Linie gezogen werden könnte

ObjectCreate(ChartID(),"Trend", OBJ_TREND, 0, iTime(NULL,PERIOD_CURRENT,StuetzpunktOrte[1]),StuetzpunktWerte[1], iTime(NULL,PERIOD_CURRENT,StuetzpunktOrte[0]),StuetzpunktWerte[0]);

}














void OnTick()
  {

TrenbdlinieEinzeichnen(KerzenZurueck,3,3);
 /*  ObjectCreate(ChartID(),"Trend", OBJ_VLINE, 0, iTime(NULL,PERIOD_CURRENT,0),Ask);
   ObjectSetInteger(ChartID(),"Trend",OBJPROP_COLOR,clrRed);
   ObjectCreate("low",OBJ_TREND,0,TimeCurrent(),Ask,TimeCurrent()+5,Ask);
   ObjectSet("low",OBJPROP_COLOR,LimeGreen);
   ObjectSetInteger(ChartID(),"low",OBJPROP_WIDTH,3);
   ObjectSetInteger(ChartID(),"low",OBJPROP_BACK,back);
   
   */
   
   /*
   double AB = Ask+(1*Point);
   
       ObjectCreate(NULL,"NAME",OBJ_TREND,0,iTime(NULL,PERIOD_CURRENT,5),AB,iTime(NULL,PERIOD_CURRENT,1),Ask);
       ObjectSetInteger(NULL,"NAME",OBJPROP_COLOR,clrRed);
       ObjectSetInteger(NULL,"NAME",OBJPROP_STYLE,STYLE_SOLID); 
       
       
       */
  }

Vielen Dank für eure Anregungen