Einzelnen Beitrag anzeigen
  #3 (permalink)  
Alt 09.05.13
traderdoc traderdoc ist offline
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.873
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

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