package com.activequant.backtesting;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.List;
import com.activequant.domainmodel.TimeStamp;
import com.activequant.domainmodel.backtesting.TimeSetup;
import com.activequant.interfaces.backtesting.ITimeRangeSplitter;
/**
* Reimplement for YOUR trading algo. Based on the start timestamp, it will
* generate chunks of seven days length, up to end. The last frame could be
* shorted than seven days, depending on your end date.
*
* @author GhostRider
*
*/
public class TimeRangeSplitterWeekly implements ITimeRangeSplitter {
public List<TimeSetup> split(TimeStamp start, TimeStamp end) {
List<TimeSetup> ret = new ArrayList<TimeSetup>();
while (start.isBefore(end)) {
TimeStamp localStart = new TimeStamp(start.getNanoseconds());
//
Calendar endCal = GregorianCalendar.getInstance();
endCal.setTime(start.getCalendar().getTime());
endCal.add(Calendar.DATE, 7);
TimeStamp localEnd = new TimeStamp(endCal.getTime());
if (localEnd.isAfter(end))
localEnd = end;
TimeSetup setup = new TimeSetup();
setup.dataReplayStart = localStart;
setup.tradingStart = localStart;
setup.tradingEnd = localEnd;
setup.dataReplayEnd = localEnd;
ret.add(setup);
start = localEnd;
}
return ret;
}
}