Markttechnik-Code ich finde meinen Fehler nicht

 

Hallo,

ich habe versucht die simpelsten Regeln der Markttechnik in einen EA zu Programmieren. Das heisst, es wir der zunächst höchste Punkt im Chart gesucht, dann das Tal und dann wird eingestiegen wenn der vorher höchste Punkt überschritten wurde. Leider verpasst mein EA sehr viele Chancen. Im Minutenchart macht er 5 Trades pro Tag wo es hunderte sein müssten. Vielleicht könnte mal der ein oder andere über meinen Code schauen. Dankesehr =D.


double Lots = 0.1;
double TP = 40;

double hoechstesHigh1 = 0.0;
double hoechstesHigh2 = 0.0;

double niedrigstesLow = 0.0;

int letztesmalHigh = 0;

int Ticket = NULL;
bool OS = false;

void OnTick()
  {
  


if(hoechstesHigh1==0.0){
hoechstesHigh1=High[1];
letztesmalHigh=1;
}
if(niedrigstesLow==0.0&&letztesmalHigh==1){
niedrigstesLow=Low[1];
}

if(High[1]>hoechstesHigh1){
if(letztesmalHigh==0||letztesmalHigh==1){
hoechstesHigh1=High[1];
letztesmalHigh=1;
}
if(letztesmalHigh==2){
hoechstesHigh2=hoechstesHigh1;
hoechstesHigh1=High[1];
letztesmalHigh=3;
}

}

if(Low[1]<niedrigstesLow&&!niedrigstesLow==0.0&&(letztesmalHigh==1||letztesmalHigh==2)){
niedrigstesLow=Low[1];

letztesmalHigh=2;
}
Print("",letztesmalHigh);
if(letztesmalHigh==3&&Ask>hoechstesHigh2&&OrdersTotal()==0){
Ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,3,niedrigstesLow,Ask+TP*Point());
OS = OrderSelect(Ticket,SELECT_BY_TICKET,MODE_TRADES);
}

if(!OrdersTotal()==0){
hoechstesHigh1 = 0.0;
hoechstesHigh2 = 0.0;
niedrigstesLow = 0.0;
letztesmalHigh = 0;
}
  
}
 
  1. Verwende doch den Styler (unter Werkzeuge, bzw. Ctrl+), dann ich Dein Code leichter lesbar!
  2. Du verwendet keine Schleifen (while, for) um durch den Chart zu pflügen.
  3. Es gibt iHighest() und iLowest(), orientiere Dich am Beispiel in der Referenz (Editor F1, wenn der Kursor auf der Funktion steht).
  4. Wenn Dein Code nicht tut, was Du willst, verwende den Debugger, um zu sehen was er macht bzw. nicht macht - geht viel schneller!
Grund der Beschwerde: