You can implement something like this:
import com.dukascopy.api.IAccount;
import com.dukascopy.api.IBar;
import com.dukascopy.api.IConnectionStatusMessage;
import com.dukascopy.api.IConsole;
import com.dukascopy.api.IContext;
import com.dukascopy.api.IHistory;
import com.dukascopy.api.IMessage;
import com.dukascopy.api.IMessage.Type;
import com.dukascopy.api.IStrategy;
import com.dukascopy.api.ITick;
import com.dukascopy.api.Instrument;
import com.dukascopy.api.JFException;
import com.dukascopy.api.OfferSide;
import com.dukascopy.api.Period;
import java.text.SimpleDateFormat;
import java.util.List;
public class SimleBarGettingStrategy implements IStrategy {
IContext context;
IConsole console;
boolean isConnected;
long connectionLosingTime;
long connectionReturningTime;
Instrument instrument = Instrument.EURUSD;
Period period = Period.ONE_MIN;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
@Override
public void onStart(IContext context) throws JFException {
this.context = context;
this.console = context.getConsole();
isConnected = true;
}
@Override
public void onTick(Instrument instrument, ITick tick) throws JFException {
}
@Override
public void onBar(Instrument instrument, Period period, IBar askBar, IBar bidBar)
throws JFException {
if (instrument != this.instrument || period != this.period || !isConnected) return;
console.getOut().println("Time: " + sdf.format(askBar.getTime()) + " O: " + askBar.getOpen() + " C: " + askBar.getClose() + " H: " +
askBar.getHigh() + " L: " + askBar.getLow());
}
@Override
public void onMessage(IMessage message) throws JFException {
if (message.getType() == Type.CONNECTION_STATUS) {
IConnectionStatusMessage iConnectionStatusMessage = (IConnectionStatusMessage) message;
if (!iConnectionStatusMessage.isConnected()) {
connectionLosingTime = message.getCreationTime();
isConnected = iConnectionStatusMessage.isConnected();
} else {
connectionReturningTime = message.getCreationTime();
isConnected = iConnectionStatusMessage.isConnected();
if (connectionLosingTime != 0 && connectionReturningTime != 0 && isConnected) {
getLostBars();
}
}
}
}
private void getLostBars() throws JFException {
IHistory history = context.getHistory();
List<IBar> lostBars = history.getBars(instrument, period, OfferSide.BID, history.getBarStart(period, connectionLosingTime),
history.getBarStart(period, connectionReturningTime));
for (int i = 0; i < lostBars.size(); i++) {
console.getOut().println("Bar No " + i + " Time: " + sdf.format(lostBars.get(i).getTime()) + " O: " + lostBars.get(i).getOpen()
+ " C: " + lostBars.get(i).getClose() + " H: " + lostBars.get(i).getHigh() + " L: " + lostBars.get(i).getLow());
}
}
@Override
public void onAccount(IAccount account) throws JFException {
}
@Override
public void onStop() throws JFException {
}
}