Code:
//+------------------------------------------------------------------+
//LongTrariling
for(int i=limit;i>=0;i--){
if(Close[i+1]>High[i+2]){
lastDirection = 1;
int bar=i+2;
double lowCheck=Low[bar];
while(bar<Bars-1){
if(lowCheck>Low[i+1]){
bar++;
lowCheck=Low[bar];
}else{
upStop_1[i+1]=lowCheck;
break;
}
}
}else if(Close[i+1]<High[i+2]){ //Letzter Schlusskurs ist kleiner als vorletzter Hoch
lastDirection =-1; //für den Fall das kein Fall zutrifft (nicht wirklich beachten)
int bar=i+2; //Position des Bars (Index) speichern
//Remember high of Position
double highNumber=High[i+2]; //Hoch des vorletzten Bars speichern zum vergleichen
//Remember Position of Index
double lowCheck=Low[bar]; //Low des vorletzten Bars speichern zum vergleichen
while(bar<Bars-1){ //Loop starten
if(highNumber>Close[i+1]){ //vergleichen wenn die kommenden letzten Schlusskurse (fortlaufend kleiner als das Hoch (was wir gespeichert haben größer ist)
if(lowCheck>Low[i+1]){ //dann checken wir ob der Low den wir gespeichert haben größer ist als der Low vom letzten Schlusskurs bar
bar++; //dann addieren wir dem Bar Index dazu um nach hinten nach einem Low zu suchen der Tiefer notiert
lowCheck=Low[bar]; //Hier wird dann der Bar Index initialisiert
}else{
upStop_1[i+1]=lowCheck; //Wenn der gespeicherte Hoch größer ist als der Hoch vom letzten Schlusskurs dann soll der Stop an den nächst tiefergelegenen Low vom Bar gesetzt werden
break; //sprich wenn die kommenden Bars sich innerhalb des hochs und lows befinden soll der Stop an den nächstgelegenen Low gesetzt werden
} //das funktioniert auch nur ist das Problem
} //Wenn Innerhalb eines OutsideBars sich ein weiterer Outsidebar bildet dann springt er von der Loop raus
}
}else{
if(lastDirection == 1) upStop_1[i+1]=upStop_1[i+2];
if(lastDirection ==-1) upStop_2[i+1]=upStop_2[i+2];
}
}
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+