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