Here is a test code:
package RenkoBars;
import com.dukascopy.api.Configurable;
import com.dukascopy.api.IAccount;
import com.dukascopy.api.IBar;
import com.dukascopy.api.IConsole;
import com.dukascopy.api.IContext;
import com.dukascopy.api.IEngine;
import com.dukascopy.api.IHistory;
import com.dukascopy.api.IMessage;
import com.dukascopy.api.IStrategy;
import com.dukascopy.api.ITick;
import com.dukascopy.api.ITimedData;
import com.dukascopy.api.Instrument;
import com.dukascopy.api.JFException;
import com.dukascopy.api.OfferSide;
import com.dukascopy.api.Period;
import com.dukascopy.api.PriceRange;
import com.dukascopy.api.feed.IFeedDescriptor;
import com.dukascopy.api.feed.IFeedListener;
import com.dukascopy.api.feed.util.RenkoFeedDescriptor;
import java.util.Arrays;
import java.util.HashSet;
public class RenkoTest implements IStrategy, IFeedListener {
private IEngine engine;
private IConsole console;
private IHistory history;
private IContext context;
@Configurable("Renko bars")
public IFeedDescriptor renkoFeedDescriptor = new RenkoFeedDescriptor(Instrument.EURUSD, PriceRange.TWO_PIPS, OfferSide.BID);
private Instrument instrument;
private void print(Object o) {
console.getOut().println(o);
}
@Override
public void onStart(IContext context) throws JFException {
this.engine = context.getEngine();
this.console = context.getConsole();
this.history = context.getHistory();
this.context = context;
instrument = renkoFeedDescriptor.getInstrument();
context.setSubscribedInstruments(new HashSet<Instrument>(Arrays.asList(new Instrument[] { instrument })), true);
context.subscribeToFeed(renkoFeedDescriptor, this);
}
@Override
public void onFeedData(IFeedDescriptor feedDescriptor, ITimedData feedData) {
try {
IBar prevBar = (IBar) history.getFeedData(feedDescriptor, 1);
IBar currBar = (IBar) history.getFeedData(feedDescriptor, 0);
if (currBar.equals(prevBar)) {
print("Current renko bar (0) is equals previos renko bar (1)");
}
print(prevBar);
print(currBar);
} catch (JFException e) {
console.getErr().println(e);
}
}
@Override
public void onTick(Instrument instrument, ITick tick) throws JFException {
}
@Override
public void onBar(Instrument instrument, Period period, IBar askBar, IBar bidBar) throws JFException {
}
@Override
public void onMessage(IMessage message) throws JFException {
}
@Override
public void onAccount(IAccount account) throws JFException {
}
@Override
public void onStop() throws JFException {
}
}
If start this code I see:
StartTime: 2014-05-07 01:54:22.703 EndTime: 2014-05-07 02:07:40.496 O: 1.393 C: 1.3928 H: 1.393 L: 1.3928 V: 533.28 FEC: 193
StartTime: 2014-05-07 01:54:22.703 EndTime: 2014-05-07 02:07:40.496 O: 1.393 C: 1.3928 H: 1.393 L: 1.3928 V: 533.28 FEC: 193
Current renko bar (0) is equals previos renko bar (1)
Why it is happens? May be I don't understand something?