Sorry, ich habe mal etwas Struktur in den Code gelegt. Und dann ist es besser Code auch unter# (im Nachrichtenmenü!) zu schreiben. sonst wird es zu unübersichtlich.
Code:
bool Buycondition= false;
bool Sellcondition = false;
int x=1;
while(x>0) {
if(iCustom(NULL,0,”Indicator”,0,x) <=-40) {
Buycondition= true;
break;
}
if(iCustom(NULL,0,”Indicator”,0,x) <=-40) {
for(int y=1; y<x; y++) {
if(iCustom(NULL,0,”Indicator”,0,x) >0) {
Buycondition =false;
break;
}
}
}
if(iCustom(NULL,0,”Indicator”,0,x) >= 40) {
Sellcondition= true;
break;
}
if(iCustom(NULL,0,”Indicator”,0,x) >=40) {
for(int z=1; z<x; z++) {
if(iCustom(NULL,0,”Indicator”,0,x) <0) {
Sellcondition =false;
break;
}
}
}
x++;
}
Das der EA nicht in den Ausführungsteil der 2. und 5.!! if-Abfrage springt, liegt daran, dass der EA nur die Werte <= -40 und >= 40 berücksichtigt, denn sowohl mit
Code:
if(iCustom(NULL,0,”Indicator”,0,x) <=-40) {
Buycondition= true;
break;
}
als auch mit
Code:
if(iCustom(NULL,0,”Indicator”,0,x) >= 40) {
Sellcondition= true;
break;
}
springt der EA aufgrund des Befehls break aus der While-Schleife, wenn eben der Indikator <= -40 oder eben >= 40 beträgt. Da in der 2. und 5. if-Abfrage aber dieselben Werte genommen werden, kann er nicht in deren Ausführungsteil springen, weil er vorher ausgestiegen ist oder zwischen -39 und + 39 die 2. und 5. if-Abfrage false ergibt!
Was mir daran aber nicht klar ist:
"Bedingung soll sein: Der Wert des Indikators war in der Vergangenheit =< -40 und seitdem noch nicht wieder >0 (für Long, umgekehrt für Short)."
Soll ein Long Signal solange gegeben sein, bis der Indikator-Wert wieder > 0 ist (das hieße dann Long für alle! Werte < 0) und dann in ein Short Signal umschlägt oder soll das Long-Signal nur kommen, solange der Wert <= -40 und für Sell >= 40 ist, d.h. zwischen -39 und +39 überhaupt kein Signal?
traderdoc