Additional information,
I wrote a little demo strategy that displays bar information every 10 minutes.
This is the code
public void onBar(Instrument instrument, Period period,
OfferSide offerSide, IBar bar)
{
System.out.println("-----------------------------");
LOGGER.info("New bar " + instrument + " period " + period
+ " offerSide " + offerSide + " bar " + bar);
try
{
for (int i = 1; i < 3; i++)
{
IBar bars = context.getHistory().getBar(instrument, period,
offerSide, i);
LOGGER.info("history " + i + " " + bars);
List<ITick> ticks = context.getHistory().getTicks(instrument,
bars.getTime(), bars.getTime() + 600000l);
double vol = 0;
for (ITick tick : ticks)
{
vol += tick.getAskVolume();
}
LOGGER.info("total volume from ticks " + vol
+ " number of ticks " + ticks.size());
}
}
catch (JFException e)
{
e.printStackTrace();
}
}
And this is the output I get when running this strategy for 20min. I've marked the values in same color that I would assume to be identical.
2011-11-21 08:10:06.086 INFO BarWaiter - New bar EUR/CHF period 10 Mins offerSide Ask bar 1321858800000[2011-11-21 07:00:00.000+0000] O: 1.23881 C: 1.23961 H: 1.23979 L: 1.23881 V:
589.652011-11-21 08:10:07.024 INFO BarWaiter - history 1 1321858800000[2011-11-21 07:00:00.000+0000] O: 1.23881 C: 1.23961 H: 1.23979 L: 1.23881 V:
397.252011-11-21 08:10:07.112 INFO BarWaiter - total volume from ticks
372.91999999999996 number of ticks 238
2011-11-21 08:10:07.191 INFO BarWaiter - history 2 1321858200000[2011-11-21 06:50:00.000+0000] O: 1.2389 C: 1.23882 H: 1.23908 L: 1.23877 V: 474.0
2011-11-21 08:10:07.531 INFO BarWaiter - total volume from ticks 477.98999999999995 number of ticks 298
-----------------------------
2011-11-21 08:20:06.378 INFO BarWaiter - New bar EUR/CHF period 10 Mins offerSide Ask bar 1321859400000[2011-11-21 07:10:00.000+0000] O: 1.23964 C: 1.23939 H: 1.23987 L: 1.23927 V:
532.42011-11-21 08:20:12.416 INFO BarWaiter - history 1 1321859400000[2011-11-21 07:10:00.000+0000] O: 1.23964 C: 1.23939 H: 1.23987 L: 1.23927 V:
581.92011-11-21 08:20:12.417 INFO BarWaiter - total volume from ticks
532.4 number of ticks 314
2011-11-21 08:20:12.417 INFO BarWaiter - history 2 1321858800000[2011-11-21 07:00:00.000+0000] O: 1.23881 C: 1.23961 H: 1.23979 L: 1.23881 V:
372.652011-11-21 08:20:12.418 INFO BarWaiter - total volume from ticks
372.91999999999996number of ticks 238
-----------------------------
2011-11-21 08:30:06.260 INFO BarWaiter - New bar EUR/CHF period 10 Mins offerSide Ask bar 1321860000000[2011-11-21 07:20:00.000+0000] O: 1.23937 C: 1.23966 H: 1.2402 L: 1.23929 V:
625.12011-11-21 08:30:08.964 INFO BarWaiter - history 1 1321860000000[2011-11-21 07:20:00.000+0000] O: 1.23937 C: 1.23966 H: 1.2402 L: 1.23929 V:
648.12011-11-21 08:30:08.966 INFO BarWaiter - total volume from ticks 625.1 number of ticks 334
2011-11-21 08:30:08.966 INFO BarWaiter - history 2 1321859400000[2011-11-21 07:10:00.000+0000] O: 1.23964 C: 1.23939 H: 1.23987 L: 1.23927 V:
532.42011-11-21 08:30:08.967 INFO BarWaiter - total volume from ticks
532.4 number of ticks 314
The different values for volume depending on where the bar is retrieved is already very strange.
But If I clear the cache and restart the program, the values are even more out of sync.
-----------------------------
2011-11-21 08:40:05.368 INFO BarWaiter - New bar EUR/CHF period 10 Mins offerSide Ask bar 1321860600000[2011-11-21 07:30:00.000+0000] O: 1.23966 C: 1.23929 H: 1.23976 L: 1.23912 V: 882.89
2011-11-21 08:40:07.344 INFO BarWaiter - history 1 1321860600000[2011-11-21 07:30:00.000+0000] O: 1.23966 C: 1.23929 H: 1.23976 L: 1.23912 V: 714.05
2011-11-21 08:40:07.495 INFO BarWaiter - total volume from ticks 666.9899999999985 number of ticks 367
2011-11-21 08:40:07.495 INFO BarWaiter - history 2 1321860000000[2011-11-21 07:20:00.000+0000] O: 1.23939 C: 1.23966 H: 1.2402 L: 1.23929 V:
986.02011-11-21 08:40:07.696 INFO BarWaiter - total volume from ticks
990.51 number of ticks 512
Hope this helps to get this resolved somehow.
Thanks
Moritz