package jtrade.strategy;
import java.io.File;
import jtrade.Symbol;
import jtrade.SymbolFactory;
import jtrade.indicator.MA;
import jtrade.marketfeed.Bar;
import jtrade.marketfeed.BarListener;
import jtrade.trader.Position;
import jtrade.trader.Trade;
import jtrade.util.Configurable;
import org.joda.time.DateTime;
public class TestStrategy extends BaseStrategy implements BarListener {
public Configurable<Symbol> SYMBOL = new Configurable<Symbol>("SYMBOL", SymbolFactory.getSymbol("SPY-ARCA-USD-STOCK"));
MA ma;
public TestStrategy() {
super();
}
@Override
public void init() {
setVerbose(true);
ma = new MA(100);
marketFeed.addBarListener(SYMBOL.get(), ma);
marketFeed.addBarListener(SYMBOL.get(), this);
}
@Override
public void onBar(Bar bar) {
Position position = trader.getPortfolio().getPosition(SYMBOL.get());
if (position.isFlat() && bar.getClose() >= ma.get()) {
setPosition(SYMBOL.get(), (int)(trader.getPortfolio().getCashValue() / bar.getClose()));
} else if (bar.getClose() < ma.get()) {
setPosition(SYMBOL.get(), 0);
}
}
public static void main(String[] args) {
try {
TestStrategy strategy = new TestStrategy();
File dataDir = new File("~/marketdata/yahoo");
DateTime fromDate = new DateTime(2004, 1, 1, 0, 0, 0, 0);
DateTime toDate = new DateTime(2012, 1, 1, 0, 0, 0, 0);
StrategySim sim = new StrategySim(strategy, dataDir, fromDate, toDate, false, 86400, strategy.SYMBOL.get());
sim.run();
for (Trade t : strategy.getTrader().getPerformanceTracker().getTrades()) {
System.out.println(t);
}
System.out.println(strategy.getTrader().getPerformanceTracker());
strategy.getRecorder().plot();
} catch (Exception e) {
e.printStackTrace();
}
}
}