public void generateReport(String localTargetFolder, String localTemplateFolder) throws IOException { HTMLReportGen h = new HTMLReportGen(localTargetFolder, localTemplateFolder); if(oelistener.getFillEvents().size()>0){ h.genReport(algoConfigs, oelistener, pnlMonitor, btConfig); } else{ log.warn("No trades were generated!"); System.out.println("No trades were generated."); } }
public void populateOrderStats(OrderEventListener oel) { for (String id : instrumentIDs) { statistics.put(id + ".TOTALPLACED", oel.getPlaced().get(id)); statistics.put(id + ".TOTALFILLS", oel.getFills().get(id)); statistics.put(id + ".TOTALORDERUPDS", oel.getUpdates().get(id)); statistics.put(id + ".TOTALORDERCNCL", oel.getCancellations().get(id)); if (oel.getFills().get(id) != null) { Double finalPnl = (Double) statistics.get(id + ".FINALPNL"); statistics.put(id + ".PNLPERTRADE", finalPnl / oel.getFills().get(id)); } } }
OrderEventListener oel = new OrderEventListener(); IBFXFeeCalculator feeCalculator = new IBFXFeeCalculator(); oel.setFeeCalculator(feeCalculator); oel.eventFired(ofe); PNLChangeEvent pce = prc.execution(ofe.getTimeStamp(), ofe.getOptionalInstId(), ofe.getFillPrice(), ofe.getSide().getSide() * ofe.getFillAmount()); ofe.setFillPrice(o.getClose()); ofe.setTimeStamp(o.getTimeStamp()); oel.eventFired(ofe); fillExporter.export(targetFolder, oel.getFillEvents()); TSContainer2 posDeltaOverTime = oel.getChangeOverTime(); TSContainer2 executionPricesOverTime = oel.getExecutionOverTime(); TSContainer2 deltaCashPositionsOverTime = calcCashPositions(posDeltaOverTime, executionPricesOverTime); if (oel.getFeeCalculator() != null) { c = new CSVExporter(fout, oel.getFeeCalculator().feesSeries()); c.write(); fout.close(); TSContainer2 feesPerRepUnit = tcm.resampleWithSum(oel.getFeeCalculator().feesSeries(), timeFrame.getNanoseconds()); ChartUtils.getStepChart("Position", oel.getPositionOverTime()), 800, 600);
@Override public void eventFired(OrderEvent event) { if (event instanceof OrderFillEvent) { OrderFillEvent ofe = (OrderFillEvent) event; if(ofe.getFillAmount()!=0.0)fillEvents.add(ofe); trackFill(ofe.getOptionalInstId(), ofe.getTimeStamp(), ofe.getFillAmount() * (ofe.getSide().equals(OrderSide.BUY) ? 1.0 : -1.0), ofe.getFillPrice()); countFill(ofe.getOptionalInstId()); } else if (event instanceof OrderCancelledEvent) { countCancellation(((OrderCancelledEvent) event).getOptionalInstId()); } else if (event instanceof OrderAcceptedEvent) { countAccepted(((OrderAcceptedEvent) event).getOptionalInstId()); } if(feeCalculator != null) feeCalculator.track(event); }
TSContainerMethods tcm = new TSContainerMethods(); new File(targetFolder).mkdirs(); fillExporter.export(targetFolder, oelistener.getFillEvents()); pnlMonitor.getStaticChart(), 800, 600); TSContainer2 posSeries = oelistener.getPositionOverTime(); tcm.overwriteNull(posSeries, 0.0); try { bs.setReportId(new SimpleDateFormat("yyyyMMdd").format(new Date())); bs.calcPNLStats(pnlContainer); bs.calcPosStats(oelistener.getPositionOverTime()); bs.populateOrderStats(oelistener);
public SimulationReport generateReport(String targetFolder) throws IOException { SimulationReport sr = new SimulationReport(); TSContainerMethods tcm = new TSContainerMethods(); TSContainer2 pnlContainer = pnlMonitor.getCumulatedTSContainer(); tcm.overwriteNull(pnlContainer); tcm.overwriteNull(pnlContainer, 0.0); sr.setPnlSeries(pnlContainer); // HTMLReportGen h = new HTMLReportGen(targetFolder, templateFolder); if(oelistener.getFillEvents().size()>0){ h.genReport(algoConfigs, oelistener, pnlMonitor, btConfig); } else{ log.warn("No trades were generated!"); System.out.println("No trades were generated."); } // fill the sr return sr; }