Also bei mir schaut das Folgendermaßen aus:
Beim ersten Tick des Tages führe ich eine "Tagesinitialisierung" durch und unter anderen werden auch die Zeiten Festgelegt:
Code:
Time_RangeBegin = iTime(MarketCurrent, PERIOD_D1, 0) + (DayMinute_RangeBegin_I * 60);
Time_RangeEnd = iTime(MarketCurrent, PERIOD_D1, 0) + (DayMinute_RangeEnd_I * 60);
Meine Parameter für die Tageszeit sind immer Minuten nach Tagesbeginn, damit kann man besser Parametrieren, weil das nur ein Parameter ist und dieser dann fortlaufend ist.
Dann gehts so weiter:
Code:
if (TickTime >= Time_RangeEnd && Last_TickTime < Time_RangeEnd)
Damit stelle ich sicher, dass der nachfolgende Code auch nur einmal am Ende der Range ausgeführt wird.
Jetzt kommt die Ermittlung von High und Low der Range:
Code:
...
int Shift_RangeBegin = iBarShift(MarketCurrent, 0, Time_RangeBegin, True);
int Shift_RangeEnd = iBarShift(MarketCurrent, 0, Time_RangeEnd, True) + 1;
if (Shift_RangeBegin > 0 && Shift_RangeEnd > 0)
{
int NumberCandles = Shift_RangeBegin - Shift_RangeEnd + 1;
double RangeHigh = iHigh (MarketCurrent, 0, iHighest(MarketCurrent, 0, MODE_HIGH, NumberCandles, Shift_RangeEnd));
double RangeLow = iLow (MarketCurrent, 0, iLowest (MarketCurrent, 0, MODE_LOW, NumberCandles, Shift_RangeEnd));
...
Zusammengefasst sieht das dann so aus:
Code:
...
if (TagesStartZeit != iTime(MarketCurrent, PERIOD_D1, 0))
{
Time_RangeBegin = iTime(MarketCurrent, PERIOD_D1, 0) + (DayMinute_RangeBegin_I * 60);
Time_RangeEnd = iTime(MarketCurrent, PERIOD_D1, 0) + (DayMinute_RangeEnd_I * 60);
...
}
if (TickTime >= Time_RangeEnd && Last_TickTime < Time_RangeEnd)
{
int Shift_RangeBegin = iBarShift(MarketCurrent, 0, Time_RangeBegin, True);
int Shift_RangeEnd = iBarShift(MarketCurrent, 0, Time_RangeEnd, True) + 1;
if (Shift_RangeBegin > 0 && Shift_RangeEnd > 0)
{
int NumberCandles = Shift_RangeBegin - Shift_RangeEnd + 1;
double RangeHigh = iHigh (MarketCurrent, 0, iHighest(MarketCurrent, 0, MODE_HIGH, NumberCandles, Shift_RangeEnd));
double RangeLow = iLow (MarketCurrent, 0, iLowest (MarketCurrent, 0, MODE_LOW, NumberCandles, Shift_RangeEnd));
...
}
}
---Leopold---