package jtrade.test;
import java.io.File;
import java.util.NavigableMap;
import java.util.TreeMap;
import jtrade.Symbol;
import jtrade.marketfeed.Bar;
import jtrade.marketfeed.BarListener;
import jtrade.marketfeed.Cleaner;
import jtrade.marketfeed.MarketFeed;
import jtrade.marketfeed.MarketListener;
import jtrade.marketfeed.Tick;
import jtrade.marketfeed.TickListener;
import jtrade.timeseries.TimeSeries;
import org.joda.time.DateTime;
import org.joda.time.Duration;
public class MockBarMarketFeed implements MarketFeed {
NavigableMap<DateTime, Bar> bars;
int barSizeSeconds;
DateTime now;
boolean connected;
public MockBarMarketFeed(Symbol symbol, int barSizeSeconds, DateTime date, double[] opens, double[] highs, double[] lows, double[] closes, double[] waps,
int[] volumes, int[] trades) {
this.bars = new TreeMap<DateTime, Bar>();
for (int i = 0; i < opens.length; i++) {
Bar b = new Bar(new Duration(barSizeSeconds * 1000), symbol, date, opens[i], highs[i], lows[i], closes[i], waps[i], volumes[i], trades[i]);
this.bars.put(b.getDateTime(), b);
}
this.barSizeSeconds = barSizeSeconds;
now = date;
}
public MockBarMarketFeed(Bar[] bars) {
this.bars = new TreeMap<DateTime, Bar>();
for (Bar b : bars) {
this.bars.put(b.getDateTime(), b);
}
now = this.bars.firstKey();
}
@Override
public void connect() {
connected = true;
}
@Override
public void disconnect() {
connected = false;
}
@Override
public boolean isConnected() {
return connected;
}
@Override
public File getDataDir() {
return new File(System.getProperty("user.home"), "testdata");
}
@Override
public Tick getLastTick(Symbol symbol) {
return getLastTick(symbol, now);
}
@Override
public Tick getLastTick(Symbol symbol, DateTime date) {
Bar bar = getLastBar(symbol, date, barSizeSeconds);
if (bar == null) {
return null;
}
Tick tick = new Tick(symbol, bar.getDateTime(), bar.getClose() + bar.getSymbol().getMinTick() * 1.0, 0, bar.getClose() - bar.getSymbol().getMinTick()
* 1.0, 1, bar.getClose(), bar.getTrades() > 0 ? 1 : 0, 0, null);
return tick;
}
@Override
public Bar getLastBar(Symbol symbol) {
Bar b = bars.floorEntry(now).getValue();
if (!b.getSymbol().equals(symbol)) {
throw new IllegalArgumentException("Invalid symbol: " + symbol);
}
return b;
}
@Override
public Bar getLastBar(Symbol symbol, DateTime date, int barSizeSeconds) {
Bar b = bars.floorEntry(date).getValue();
if (!b.getSymbol().equals(symbol)) {
throw new IllegalArgumentException("Invalid symbol: " + symbol);
}
if (b.getBarSize().getStandardSeconds() != barSizeSeconds) {
throw new IllegalArgumentException("Invalid barSizeSeconds: " + barSizeSeconds);
}
return b;
}
@Override
public NavigableMap<DateTime, Bar> getBarData(Symbol symbol, DateTime fromDate, DateTime toDate, int barSizeSeconds) {
return null;
}
@Override
public NavigableMap<DateTime, Tick> getTickData(Symbol symbol, DateTime fromDate, DateTime toDate) {
return null;
}
@Override
public TimeSeries getTimeSeries(Symbol symbol, DateTime fromDate, DateTime toDate, int barSizeSeconds, String attribute) {
return null;
}
@Override
public void addTickListener(TickListener listener) {
}
@Override
public void addTickListener(Symbol symbol, TickListener listener) {
// TODO Auto-generated method stub
}
@Override
public void addTickListener(Symbol symbol, TickListener listener, boolean marketDepth, Cleaner cleaner) {
// TODO Auto-generated method stub
}
@Override
public void removeTickListener(TickListener listener) {
}
@Override
public void removeTickListener(Symbol symbol, TickListener listener) {
}
@Override
public void addBarListener(BarListener listener) {
}
@Override
public void addBarListener(Symbol symbol, BarListener listener) {
// TODO Auto-generated method stub
}
@Override
public void addBarListener(Symbol symbol, BarListener listener, int barSizeSeconds, Cleaner cleaner) {
}
@Override
public void removeBarListener(BarListener listener) {
}
@Override
public void removeBarListener(Symbol symbol, BarListener listener) {
}
@Override
public void addMarketListener(MarketListener listener) {
}
@Override
public void removeMarketListener(MarketListener listener) {
}
@Override
public void removeListener(Object listener) {
}
@Override
public void removeAllListeners() {
}
}