Einzelnen Beitrag anzeigen
  #4 (permalink)  
Alt 11.03.13
naranjoe naranjoe ist offline
Elite Mitglied
 
Registriert seit: Jun 2010
Ort: Trier
Beiträge: 116
naranjoe befindet sich auf einem aufstrebenden Ast
Standard

OK, dann mal Schritt für Schritt (habe gerade ein bischen Zeit)

Erst mal die Eingabeparameter: (sollte Selbsterklärend sein)
Code:
extern bool MON = true;
extern bool TUE = true;
extern bool WED = true;
extern bool THU = true;
extern bool FRI = true;
extern int StartHour = 10;
extern int EndHour = 12;
Interne Variablen:
Code:
int CurrentTime;
bool TradingDay[6]= { false, false, false, false, false, false };
Im init() fragen wir die Tage ab und setzen im Array Tradingday[] die Schalter entsprechend.
Aufgepasst: Die Elemente des Array passen genau zu den Wochentagen von DayOfWeek().
Code:
void init()
{
 if(MON) TradingDay[1]=true; 
 if(TUE) TradingDay[2]=true;
 if(WED) TradingDay[3]=true; 
 if(THU) TradingDay[4]=true;
 if(FRI) TradingDay[5]=true; 
}
Dann die Abfrage der Zeit als bool die den Rückgabewert true oder false liefert.
Code:
bool TradingTime()
{
 CurrentTime = TimeHour(TimeCurrent());
 if (StartHour < EndHour)
    {
     if ((CurrentTime < StartHour) || (CurrentTime >= EndHour)) return(false);
    }      
 if (StartHour > EndHour)
    {
     if ((CurrentTime < StartHour) && (CurrentTime >= EndHour)) return(false);
    }
 return(true);
}
In Start() brauchst du dann nur noch die Abfrage für Wochentag und Trading Zeit.
Code:
int start() 
{
if (TradingDay[DayOfWeek()] == false) return(0);
if (TradingTime() == false) return(0);
//EA Code
//...
}
Ich habe hier die Möglichkeit der Abfrage des Wochentages über ein Array gelöst.
Das ist vieleicht die einfachste Möglichkeit, die am wenigsten Code braucht.

Gruß
naranjoe