List of usage examples for org.jfree.chart ChartFrame dispose
public void dispose()
From source file:org.activequant.tradesystem.system.integration.VolatilityCharterTradeSystem.java
public synchronized Order[] onMarket(Account account, Market market) throws Exception { log.info("[evaluate] using account '" + account.getId() + "'"); log.info("[evaluate] candle series in market: " + market.getCandleSeries().length); List<Order> orders = new ArrayList<Order>(); window = 0;/*from w w w . j a va2s .c o m*/ for (ChartFrame cf : charts) { cf.dispose(); } charts.clear(); //iterate over the candle series in the market object. for (CandleSeries cs : market.getCandleSeries()) { if (!cs.isEmpty()) { CandleSeries tempSeries = new CandleSeries(cs.getSeriesSpecification()); // chart the latest 100 candles. int maxIndex = cs.size() > 201 ? 200 : cs.size(); for (int i = 0; i < maxIndex - 1; i++) { tempSeries.add(cs.get(i)); } // simply chart it. chartIt(tempSeries); if (cs.getSeriesSpecification().getInstrumentSpecification().getSecurityType().equals("FUT")) { refSeries = cs; } if (cs.getSeriesSpecification().getInstrumentSpecification().getSecurityType().equals("OPT")) { if (refSeries != null) { // calculate the volatilities. Candle c = cs.get(0); final Candle refCandle = refSeries.getByTimeStamp(c.getTimeStamp()); final double vola = BlackScholes.resolveImplicitVolatility( cs.getSeriesSpecification().getInstrumentSpecification().getContractRight() .toLowerCase().charAt(0), refCandle.getClosePrice(), cs.getSeriesSpecification().getInstrumentSpecification().getStrike(), timeToMaturity, 0.0, interestRate, c.getClosePrice()); Candle volaCandle = new Candle(c.getTimeStamp(), vola, vola, vola, vola); if (cs.getSeriesSpecification().getInstrumentSpecification().getContractRight() .equalsIgnoreCase("C")) { if (volaSeriesCall == null) volaSeriesCall = new CandleSeries(cs.getSeriesSpecification()); volaSeriesCall.add(0, volaCandle); CandlestickChart chart = chartIt(volaSeriesCall); // if (volaSeriesCall.size() > 5) { double ave5 = FinancialLibrary.SMA(5, volaSeriesCall.getCloses(), 0); Tuple<TimeStamp, Double> tuple = new Tuple<TimeStamp, Double>( volaCandle.getTimeStamp(), ave5); volaSeriesCallAverage1.add(0, tuple); if (volaSeriesCallAverage1.size() > 201) volaSeriesCallAverage1 = volaSeriesCallAverage1.subList(0, 200); chart.addLineSeriesChart("Vola Ave 5", volaSeriesCallAverage1); } if (volaSeriesCall.size() > 15) { double ave5 = FinancialLibrary.SMA(15, volaSeriesCall.getCloses(), 0); Tuple<TimeStamp, Double> tuple = new Tuple<TimeStamp, Double>( volaCandle.getTimeStamp(), ave5); volaSeriesCallAverage2.add(0, tuple); if (volaSeriesCallAverage2.size() > 201) volaSeriesCallAverage2 = volaSeriesCallAverage2.subList(0, 200); chart.addLineSeriesChart("Vola Ave 5", volaSeriesCallAverage2); } if (volaSeriesCall.size() > 30) { double ave5 = FinancialLibrary.SMA(30, volaSeriesCall.getCloses(), 0); Tuple<TimeStamp, Double> tuple = new Tuple<TimeStamp, Double>( volaCandle.getTimeStamp(), ave5); volaSeriesCallAverage3.add(0, tuple); if (volaSeriesCallAverage3.size() > 201) volaSeriesCallAverage3 = volaSeriesCallAverage3.subList(0, 200); chart.addLineSeriesChart("Vola Ave 5", volaSeriesCallAverage3); } } if (cs.getSeriesSpecification().getInstrumentSpecification().getContractRight() .equalsIgnoreCase("P")) { if (volaSeriesPut == null) volaSeriesPut = new CandleSeries(cs.getSeriesSpecification()); volaSeriesPut.add(0, volaCandle); CandlestickChart chart = chartIt(volaSeriesPut); // if (volaSeriesPut.size() > 5) { double ave5 = FinancialLibrary.SMA(5, volaSeriesPut.getCloses(), 0); Tuple<TimeStamp, Double> tuple = new Tuple<TimeStamp, Double>( volaCandle.getTimeStamp(), ave5); volaSeriesPutAverage1.add(0, tuple); if (volaSeriesPutAverage1.size() > 201) volaSeriesPutAverage1 = volaSeriesPutAverage1.subList(0, 200); chart.addLineSeriesChart("Vola Ave 5", volaSeriesPutAverage1); } if (volaSeriesPut.size() > 15) { double ave5 = FinancialLibrary.SMA(15, volaSeriesPut.getCloses(), 0); Tuple<TimeStamp, Double> tuple = new Tuple<TimeStamp, Double>( volaCandle.getTimeStamp(), ave5); volaSeriesPutAverage2.add(0, tuple); if (volaSeriesPutAverage2.size() > 201) volaSeriesPutAverage2 = volaSeriesPutAverage2.subList(0, 200); chart.addLineSeriesChart("Vola Ave 5", volaSeriesPutAverage2); } if (volaSeriesPut.size() > 30) { double ave5 = FinancialLibrary.SMA(30, volaSeriesPut.getCloses(), 0); Tuple<TimeStamp, Double> tuple = new Tuple<TimeStamp, Double>( volaCandle.getTimeStamp(), ave5); volaSeriesPutAverage3.add(0, tuple); if (volaSeriesPutAverage3.size() > 201) volaSeriesPutAverage3 = volaSeriesPutAverage3.subList(0, 200); chart.addLineSeriesChart("Vola Ave 5", volaSeriesPutAverage3); } } } } } } return orders.toArray(new Order[] {}); }