You can subscribe to this list here.
| 2007 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(148) |
Jun
(48) |
Jul
(107) |
Aug
(292) |
Sep
(301) |
Oct
(530) |
Nov
(142) |
Dec
(37) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2008 |
Jan
|
Feb
|
Mar
(4) |
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: Carlos <ma...@us...> - 2007-10-10 21:28:15
|
Update of /cvsroot/tail/TailS/src/java/net/sf/tails/swing/frame In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv11367/src/java/net/sf/tails/swing/frame Modified Files: Index.java Log Message: Refatoração de tela para conseguir criar critérios como o versus buy and hold que necessita de outro critério em seu construtor. Index: Index.java =================================================================== RCS file: /cvsroot/tail/TailS/src/java/net/sf/tails/swing/frame/Index.java,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** Index.java 10 Oct 2007 19:04:47 -0000 1.17 --- Index.java 10 Oct 2007 21:28:10 -0000 1.18 *************** *** 60,63 **** --- 60,64 ---- private javax.swing.JFileChooser xlsFileChooser; private javax.swing.JFileChooser htmlFileChooser; + private FrameHelper helper; /** Creates new form OpenStockAnalysis *************** *** 88,91 **** --- 89,93 ---- // <editor-fold defaultstate="collapsed" desc=" Código Gerado "> private void initComponents() { + helper = new FrameHelper(); menuBar = new javax.swing.JMenuBar(); fileMenu = new javax.swing.JMenu(); *************** *** 134,138 **** reportTable.setAutoCreateRowSorter(true); ! reportTable.setModel(FrameHelper.getTableModel(stockAnalysis)); reportTable.setGridColor(new java.awt.Color(255, 255, 255)); --- 136,140 ---- reportTable.setAutoCreateRowSorter(true); ! reportTable.setModel(helper.getTableModel(stockAnalysis)); reportTable.setGridColor(new java.awt.Color(255, 255, 255)); *************** *** 355,359 **** StockAnalysisSerializer serializer = new StockAnalysisSerializer(); try { ! String stringAnalysis = FrameHelper.readFile(filePath); StockAnalysis analysis = serializer.fromXML(stringAnalysis); loadStockAnalysis(analysis); --- 357,361 ---- StockAnalysisSerializer serializer = new StockAnalysisSerializer(); try { ! String stringAnalysis = helper.readFile(filePath); StockAnalysis analysis = serializer.fromXML(stringAnalysis); loadStockAnalysis(analysis); *************** *** 375,379 **** reportTable.setAutoCreateRowSorter(true); ! reportTable.setModel(FrameHelper.getTableModel(analysis)); reportTable.setGridColor(new java.awt.Color(255, 255, 255)); --- 377,381 ---- reportTable.setAutoCreateRowSorter(true); ! reportTable.setModel(helper.getTableModel(analysis)); reportTable.setGridColor(new java.awt.Color(255, 255, 255)); *************** *** 390,398 **** if (this.getTitle().endsWith(" - " + messageBundle.getString("DEFAULT_TITLE"))) { ! filePath = FrameHelper.getStockAnalysisPath() + "/" + this.getTitle().split(" - ")[0]; } else { ! filePath = FrameHelper.getStockAnalysisPath() + "/" + FrameHelper.generateStockAnalysisName(); } File stockAnalysisXML = new File(filePath); --- 392,400 ---- if (this.getTitle().endsWith(" - " + messageBundle.getString("DEFAULT_TITLE"))) { ! filePath = helper.getStockAnalysisPath() + "/" + this.getTitle().split(" - ")[0]; } else { ! filePath = helper.getStockAnalysisPath() + "/" + helper.generateStockAnalysisName(); } File stockAnalysisXML = new File(filePath); |
|
From: xanaot <xa...@us...> - 2007-10-10 20:03:27
|
Update of /cvsroot/tail/Tail/src/java/net/sf/tail/strategy In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv7785/src/java/net/sf/tail/strategy Added Files: CombinedBuyAndSellStrategy.java Log Message: CombinedBuyAndSellStrategy com testes --- NEW FILE: CombinedBuyAndSellStrategy.java --- package net.sf.tail.strategy; import net.sf.tail.Strategy; public class CombinedBuyAndSellStrategy extends AbstractStrategy { private Strategy buyStrategy; private Strategy sellStrategy; public CombinedBuyAndSellStrategy(Strategy buyStrategy, Strategy sellStrategy) { this.buyStrategy = buyStrategy; this.sellStrategy = sellStrategy; } public String getName() { return String.format("Combined strategy using buy strategy %s and sell strategy %s", buyStrategy.getName(), sellStrategy.getName()); } public boolean shouldEnter(int index) { return buyStrategy.shouldEnter(index); } public boolean shouldExit(int index) { return sellStrategy.shouldExit(index); } } |
|
From: xanaot <xa...@us...> - 2007-10-10 20:03:26
|
Update of /cvsroot/tail/Tail/src/test/net/sf/tail/strategy In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv7785/src/test/net/sf/tail/strategy Added Files: CombinedBuyAndSellStrategyTest.java Log Message: CombinedBuyAndSellStrategy com testes --- NEW FILE: CombinedBuyAndSellStrategyTest.java --- package net.sf.tail.strategy; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import net.sf.tail.Indicator; import net.sf.tail.Operation; import net.sf.tail.OperationType; import net.sf.tail.Strategy; import net.sf.tail.sample.SampleIndicator; import org.junit.Test; public class CombinedBuyAndSellStrategyTest { private Operation[] enter; private Operation[] exit; private FakeStrategy buyStrategy; private FakeStrategy sellStrategy; private CombinedBuyAndSellStrategy combined; @Test public void testeShoudEnter() { enter = new Operation[] { new Operation(0, OperationType.BUY), null, new Operation(2, OperationType.BUY), null, new Operation(4, OperationType.BUY) }; exit = new Operation[] { null, null, null, null, null }; buyStrategy = new FakeStrategy(enter, null); sellStrategy = new FakeStrategy(null, exit); combined = new CombinedBuyAndSellStrategy(buyStrategy, sellStrategy); assertTrue(combined.shouldEnter(0)); assertFalse(combined.shouldEnter(1)); assertTrue(combined.shouldEnter(2)); assertFalse(combined.shouldEnter(3)); assertTrue(combined.shouldEnter(4)); assertFalse(combined.shouldExit(0)); assertFalse(combined.shouldExit(1)); assertFalse(combined.shouldExit(2)); assertFalse(combined.shouldExit(3)); assertFalse(combined.shouldExit(4)); } @Test public void testeShoudExit() { exit = new Operation[] { new Operation(0, OperationType.SELL), null, new Operation(2, OperationType.SELL), null, new Operation(4, OperationType.SELL) }; enter = new Operation[] { null, null, null, null, null }; buyStrategy = new FakeStrategy(enter, null); sellStrategy = new FakeStrategy(null, exit); combined = new CombinedBuyAndSellStrategy(buyStrategy, sellStrategy); assertTrue(combined.shouldExit(0)); assertFalse(combined.shouldExit(1)); assertTrue(combined.shouldExit(2)); assertFalse(combined.shouldExit(3)); assertTrue(combined.shouldExit(4)); assertFalse(combined.shouldEnter(0)); assertFalse(combined.shouldEnter(1)); assertFalse(combined.shouldEnter(2)); assertFalse(combined.shouldEnter(3)); assertFalse(combined.shouldEnter(4)); } @Test public void testWhenBuyStrategyAndSellStrategyAreEquals() { Indicator<Double> first = new SampleIndicator(new double[] { 4, 7, 9, 6, 3, 2 }); Indicator<Double> second = new SampleIndicator(new double[] { 3, 6, 10, 8, 2, 1 }); Strategy crossed = new IndicatorCrossedIndicatorStrategy(first, second); combined = new CombinedBuyAndSellStrategy(crossed, crossed); for (int index = 0; index < 6; index++) { assertEquals(crossed.shouldEnter(index), combined.shouldEnter(index)); assertEquals(crossed.shouldExit(index), combined.shouldExit(index)); } } } |
Update of /cvsroot/tail/TailS/src/test/net/sf/tails/swing/helper In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv15497/src/test/net/sf/tails/swing/helper Added Files: CompleteHtmlGeneratorExecutor.java CompleteHtmlGeneratorTest.java CompleteXLSGeneratorTest.java ReportImageTest.java CompleteXlsGeneratorExecutor.java Log Message: Refatoração do Report. --- NEW FILE: ReportImageTest.java --- package net.sf.tails.swing.helper; import static org.junit.Assert.assertTrue; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import net.sf.tail.Operation; import net.sf.tail.OperationType; import net.sf.tail.TimeSeriesSlicer; import net.sf.tail.Trade; import net.sf.tail.analysis.criteria.TotalProfitCriterion; import net.sf.tail.analysis.evaluator.Decision; import net.sf.tail.report.Report; import net.sf.tail.runner.HistoryRunner; import net.sf.tail.sample.SampleTimeSeries; import net.sf.tail.series.FullyMemorizedSlicer; import net.sf.tail.strategy.FakeStrategy; import org.joda.time.Period; import org.junit.Before; import org.junit.Test; public class ReportImageTest { private Report report; private Period period; private CompleteReportGenerator image; protected static final String FM_CHART_DIR = "PNGCharts" + File.separatorChar; private Decision decision; @Before public void setUp() throws Exception { SampleTimeSeries series = new SampleTimeSeries(); List<Trade> trades = new ArrayList<Trade>(); period = new Period().withYears(1); trades.add(new Trade(new Operation(0, OperationType.BUY), new Operation(2, OperationType.SELL))); trades.add(new Trade(new Operation(3, OperationType.BUY), new Operation(5, OperationType.SELL))); ArrayList<Decision> decisions = new ArrayList<Decision>(); decision = new Decision(new FakeStrategy(new Operation[0], new Operation[0]), series, new TotalProfitCriterion(), trades, new HistoryRunner(OperationType.BUY)); decisions.add(decision); TimeSeriesSlicer slicer = new FullyMemorizedSlicer(series, period); report = new Report(new TotalProfitCriterion(), slicer, decisions); image = new CompleteReportGenerator(); } @Test public void generateReport() throws IOException { File dir = new File(FM_CHART_DIR); if(!dir.isDirectory()) dir.mkdir(); File imageReport = image.generateImage(report, period, FM_CHART_DIR); assertTrue(imageReport.getAbsolutePath().endsWith(FM_CHART_DIR + report.getFileName() + ".png")); imageReport.delete(); dir.delete(); } @Test public void generateDecision() throws IOException { File dir = new File(FM_CHART_DIR); if(!dir.isDirectory()) dir.mkdir(); File imageDecision = image.generateImage(decision, FM_CHART_DIR); assertTrue(imageDecision.getAbsolutePath().endsWith( FM_CHART_DIR + decision.getFileName() + ".png")); imageDecision.delete(); dir.delete(); } } --- NEW FILE: CompleteXlsGeneratorExecutor.java --- package net.sf.tails.swing.helper; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import net.sf.tail.AnalysisCriterion; import net.sf.tail.Indicator; import net.sf.tail.OperationType; import net.sf.tail.Strategy; import net.sf.tail.TimeSeries; import net.sf.tail.TimeSeriesSlicer; import net.sf.tail.Walker; import net.sf.tail.analysis.criteria.AverageProfitCriterion; import net.sf.tail.analysis.criteria.BuyAndHoldCriterion; import net.sf.tail.analysis.criteria.NumberOfTicksCriterion; import net.sf.tail.analysis.criteria.RewardRiskRatioCriterion; import net.sf.tail.analysis.criteria.TotalProfitCriterion; import net.sf.tail.analysis.criteria.VersusBuyAndHoldCriterion; import net.sf.tail.analysis.evaluator.HigherValueEvaluator; import net.sf.tail.analysis.walk.WalkForward; import net.sf.tail.indicator.simple.ClosePriceIndicator; import net.sf.tail.indicator.tracker.SMAIndicator; import net.sf.tail.io.reader.CedroTimeSeriesLoader; import net.sf.tail.report.Report; import net.sf.tail.runner.HistoryRunner; import net.sf.tail.series.FullyMemorizedSlicer; import net.sf.tail.strategy.IndicatorCrossedIndicatorStrategy; import org.joda.time.Period; public class CompleteXlsGeneratorExecutor { public void testEMAComplete() throws IOException { CedroTimeSeriesLoader ctsl = new CedroTimeSeriesLoader(); TimeSeries timeSeries = null; Set<Strategy> strategies = new HashSet<Strategy>(); try { timeSeries = ctsl.load(new FileInputStream("Data/Bovespa/15min/petr3-Dia-06-07.csv"), "Petrobras (petr3)"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } Walker w = new WalkForward(new HigherValueEvaluator(new HistoryRunner(OperationType.BUY))); Indicator<Double> close = new ClosePriceIndicator(timeSeries); for (int i = 4; i < 60; i++) { Indicator<Double> tracker = new SMAIndicator(close, i); Strategy strategy = new IndicatorCrossedIndicatorStrategy(close, tracker); strategies.add(strategy); } TimeSeriesSlicer slicer = new FullyMemorizedSlicer(timeSeries, new Period().withMonths(10)); Report r = w.walk(strategies,slicer , new TotalProfitCriterion()); CompleteReportGenerator report = new CompleteReportGenerator(); List<AnalysisCriterion> criteria = new ArrayList<AnalysisCriterion>(); criteria.add(new BuyAndHoldCriterion()); criteria.add(new RewardRiskRatioCriterion()); criteria.add(new AverageProfitCriterion()); criteria.add(new NumberOfTicksCriterion()); criteria.add(new VersusBuyAndHoldCriterion(new TotalProfitCriterion())); report.generateXLSFile(r, criteria, new Period().withMonths(10), "./", "teste.xls"); new File("teste.xls").delete(); } public static void main(String[] args) { CompleteXlsGeneratorExecutor complete = new CompleteXlsGeneratorExecutor(); try { complete.testEMAComplete(); } catch (IOException e) { e.printStackTrace(); } } } --- NEW FILE: CompleteHtmlGeneratorExecutor.java --- package net.sf.tails.swing.helper; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import net.sf.tail.AnalysisCriterion; import net.sf.tail.Indicator; import net.sf.tail.OperationType; import net.sf.tail.Strategy; import net.sf.tail.TimeSeries; import net.sf.tail.Walker; import net.sf.tail.analysis.criteria.AverageProfitCriterion; import net.sf.tail.analysis.criteria.BuyAndHoldCriterion; import net.sf.tail.analysis.criteria.NumberOfTicksCriterion; import net.sf.tail.analysis.criteria.RewardRiskRatioCriterion; import net.sf.tail.analysis.criteria.TotalProfitCriterion; import net.sf.tail.analysis.criteria.VersusBuyAndHoldCriterion; import net.sf.tail.analysis.evaluator.HigherValueEvaluator; import net.sf.tail.analysis.walk.WalkForward; import net.sf.tail.indicator.simple.ClosePriceIndicator; import net.sf.tail.indicator.tracker.ParabolicSarIndicator; import net.sf.tail.indicator.tracker.SMAIndicator; import net.sf.tail.io.reader.CedroTimeSeriesLoader; import net.sf.tail.report.Report; import net.sf.tail.runner.HistoryRunner; import net.sf.tail.series.FullyMemorizedSlicer; import net.sf.tail.strategy.IndicatorCrossedIndicatorStrategy; import org.joda.time.DateTime; import org.joda.time.Period; public class CompleteHtmlGeneratorExecutor { public void testEMAComplete() throws IOException { CedroTimeSeriesLoader ctsl = new CedroTimeSeriesLoader(); TimeSeries timeSeries = null; Set<Strategy> strategies = new HashSet<Strategy>(); try { timeSeries = ctsl.load(new FileInputStream("Data/Bovespa/15min/petr3-Dia-06-07.csv"), "Petrobras (petr3)"); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } Walker w = new WalkForward(new HigherValueEvaluator(new HistoryRunner(OperationType.BUY))); Indicator<Double> close = new ClosePriceIndicator(timeSeries); for (int i = 4; i < 20; i++) { Indicator<Double> tracker = new SMAIndicator(close, i); Strategy strategy = new IndicatorCrossedIndicatorStrategy(tracker, close); strategies.add(strategy); } Indicator<Double> tracker = new ParabolicSarIndicator(timeSeries); Strategy strategy = new IndicatorCrossedIndicatorStrategy(close, tracker); strategies.add(strategy); Report r = w.walk(strategies, new FullyMemorizedSlicer(timeSeries, new Period().withMonths(1), new DateTime( 2000, 1, 1, 0, 0, 0, 0)), new TotalProfitCriterion()); List<AnalysisCriterion> criteria = new ArrayList<AnalysisCriterion>(); criteria.add(new BuyAndHoldCriterion()); criteria.add(new RewardRiskRatioCriterion()); criteria.add(new AverageProfitCriterion()); criteria.add(new NumberOfTicksCriterion()); criteria.add(new VersusBuyAndHoldCriterion(new TotalProfitCriterion())); CompleteReportGenerator complete = new CompleteReportGenerator(); r.setName("teste"); complete.generateHTMLFile(r, criteria, new Period().withMonths(1), "./", "test"); } public static void main(String[] args) { CompleteHtmlGeneratorExecutor complete = new CompleteHtmlGeneratorExecutor(); try { complete.testEMAComplete(); } catch (IOException e) { e.printStackTrace(); } } } --- NEW FILE: CompleteXLSGeneratorTest.java --- package net.sf.tails.swing.helper; import static org.junit.Assert.assertTrue; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import net.sf.tail.AnalysisCriterion; import net.sf.tail.Operation; import net.sf.tail.OperationType; import net.sf.tail.TimeSeriesSlicer; import net.sf.tail.Trade; import net.sf.tail.analysis.criteria.AverageProfitCriterion; import net.sf.tail.analysis.criteria.TotalProfitCriterion; import net.sf.tail.analysis.criteria.VersusBuyAndHoldCriterion; import net.sf.tail.analysis.evaluator.Decision; import net.sf.tail.report.Report; import net.sf.tail.runner.HistoryRunner; import net.sf.tail.sample.SampleTimeSeries; import net.sf.tail.series.FullyMemorizedSlicer; import net.sf.tail.strategy.FakeStrategy; import org.joda.time.Period; import org.junit.Before; import org.junit.Test; public class CompleteXLSGeneratorTest { private Report report; private Period period; private CompleteReportGenerator xls; @Before public void setUp() throws Exception { } @Test public void generateTest() throws IOException { SampleTimeSeries series = new SampleTimeSeries(); List<Trade> trades = new ArrayList<Trade>(); period = new Period().withYears(1); trades.add(new Trade(new Operation(0, OperationType.BUY), new Operation(2, OperationType.SELL))); ArrayList<Decision> decisions = new ArrayList<Decision>(); Decision decision = new Decision(new FakeStrategy(new Operation[0], new Operation[0]), series, new TotalProfitCriterion(), trades, new HistoryRunner(OperationType.BUY)); decisions.add(decision); TimeSeriesSlicer slicer = new FullyMemorizedSlicer(series, period); report = new Report(new TotalProfitCriterion(), slicer, decisions); xls = new CompleteReportGenerator(); List<AnalysisCriterion> criteria = new ArrayList<AnalysisCriterion>(); criteria.add(new TotalProfitCriterion()); criteria.add(new AverageProfitCriterion()); criteria.add(new VersusBuyAndHoldCriterion(new AverageProfitCriterion())); xls.generateXLSFile(report, criteria, period, "./", "teste.xls"); try { Thread.sleep(8000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } File file = new File("teste.xls"); assertTrue(file.isFile()); file.delete(); } } --- NEW FILE: CompleteHtmlGeneratorTest.java --- package net.sf.tails.swing.helper; import static org.junit.Assert.assertTrue; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import net.sf.tail.AnalysisCriterion; import net.sf.tail.Operation; import net.sf.tail.OperationType; import net.sf.tail.TimeSeriesSlicer; import net.sf.tail.Trade; import net.sf.tail.analysis.criteria.AverageProfitCriterion; import net.sf.tail.analysis.criteria.TotalProfitCriterion; import net.sf.tail.analysis.criteria.VersusBuyAndHoldCriterion; import net.sf.tail.analysis.evaluator.Decision; import net.sf.tail.report.Report; import net.sf.tail.runner.HistoryRunner; import net.sf.tail.sample.SampleTimeSeries; import net.sf.tail.series.FullyMemorizedSlicer; import net.sf.tail.strategy.FakeStrategy; import org.joda.time.Period; import org.junit.Before; import org.junit.Test; public class CompleteHtmlGeneratorTest { private Report report; private Period period; private CompleteReportGenerator html; protected static final String FM_REPORT_DIR = "reports" + File.separatorChar; protected static final String FM_CHART_DIR = "PNGCharts" + File.separatorChar; @Before public void setUp() throws Exception { } @Test public void generateTest() throws IOException { SampleTimeSeries series = new SampleTimeSeries(); List<Trade> trades = new ArrayList<Trade>(); period = new Period().withYears(1); trades.add(new Trade(new Operation(0, OperationType.BUY), new Operation(2, OperationType.SELL))); ArrayList<Decision> decisions = new ArrayList<Decision>(); Decision decision = new Decision(new FakeStrategy(new Operation[0], new Operation[0]), series, new TotalProfitCriterion(), trades, new HistoryRunner(OperationType.BUY)); decisions.add(decision); TimeSeriesSlicer slicer = new FullyMemorizedSlicer(series, period); report = new Report(new TotalProfitCriterion(), slicer, decisions); html = new CompleteReportGenerator(); List<AnalysisCriterion> criteria = new ArrayList<AnalysisCriterion>(); criteria.add(new TotalProfitCriterion()); criteria.add(new AverageProfitCriterion()); criteria.add(new VersusBuyAndHoldCriterion(new AverageProfitCriterion())); html.generateHTMLFile(report, criteria, period, "./", "teste"); try { Thread.sleep(7000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } |
|
From: Carlos <ma...@us...> - 2007-10-10 19:04:47
|
Update of /cvsroot/tail/TailS/Data/templates/complete In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv15497/Data/templates/complete Added Files: footer.ftl chart.ftl report.ftl header.ftl Log Message: Refatoração do Report. --- NEW FILE: report.ftl --- <#include "header.ftl"> <#include "chart.ftl"> <table align="center"> <tr> <th>Period</th> <th>Date</th> <th>Strategy</th> <th>${report.applyedCriterion.class.simpleName.split("Criterion")[0]}</th> <#list criterions as criterion> <th>${criterion.class.simpleName.split("Criterion")[0]}</th> </#list> </tr> <#assign x=1> <tr class="row2"> <td>${x}</td> <td class="date">${report.slicer.slice(0).period}</td> <td class="strategy">-</td> <td>-</td> <#list criterions as criterion> <td>-</td> </#list> </tr> <#list report.decisions as decision> <#if (x%2)= 0> <tr class="row2"> <#else> <tr class="row1"> </#if> <#assign x=x+1> <td>${x}</td> <td class="date">${decision.series.period}</td> <td class="strategy"><a href=${urls.get(x - 2)}>${decision.strategy.name}</a></td> <td>${report.applyedCriterion.calculate(decision.series, decision.trades)}</td> <#list criterions as criterion> <td>${criterion.calculate(decision.series, decision.trades)}</td> </#list> </tr> </#list> <tr class="total"> <td>TOTAL</td> <td>${report.slicer.series.period}</td> <td>-</td> <td>${report.applyedCriterion.summarize(report.slicer.series, report.decisions)}</td> <#list criterions as criterion> <td>${criterion.summarize(report.slicer.series, report.decisions)}</td> </#list> </tr> </table> <#include "footer.ftl"> --- NEW FILE: footer.ftl --- </body> </html> --- NEW FILE: header.ftl --- <html> <head> <title>Walk Forward Report</title> <link rel="stylesheet" type="text/css" href="style/style.css"> </head> <body> <h1>Walk Forward Report</h1> <h2>Stock: <span class="titleHeader">${report.slicer.series.name} for: ${report.slicer.series.period}</span></h2> <h3><span class="settingsFixed">Slicer:</span><span class="settings">${report.slicer.name}</span> <span class="settingsFixed">Strategy: </span> <span class="settings">${report.decisions[0].strategy.class.simpleName}</span> <span class="settingsFixed">Criteria: </span> <span class="settings">${report.applyedCriterion.class.simpleName}</span></h3> --- NEW FILE: chart.ftl --- <table align="left"> <tr> <img src=${image}> </tr> </table> <br> <br> |
|
From: Carlos <ma...@us...> - 2007-10-10 19:04:47
|
Update of /cvsroot/tail/TailS/Data/templates/total In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv15497/Data/templates/total Added Files: header.ftl chart.ftl report.ftl footer.ftl Log Message: Refatoração do Report. --- NEW FILE: report.ftl --- <#include "header.ftl"> <#include "chart.ftl"> <table align="center"> <tr> <th>Period</th> <th>Date</th> <th>Strategy</th> <th>${report.applyedCriterion.class.simpleName.split("Criterion")[0]}</th> <#list criterions as criterion> <th>${criterion.class.simpleName.split("Criterion")[0]}</th> </#list> </tr> <#assign x=1> <tr class="row1"> <td>${x}</td> <td class="date">${report.slicer.slice(0).period}</td> <td class="strategy">-</td> <td>-</td> <#list criterions as criterion> <td>-</td> </#list> </tr> <#list report.decisions as decision> <#if (x%2)= 0> <tr class="row1"> <#else> <tr class="row2"> </#if> <#assign x=x+1> <td>${x}</td> <td class="date">${decision.series.period}</td> <td class="strategy">${decision.strategy.name}</td> <td>${report.applyedCriterion.calculate(decision.series, decision.trades)}</td> <#list criterions as criterion> <td>${criterion.calculate(decision.series, decision.trades)}</td> </#list> </tr> </#list> <tr class="total"> <td>TOTAL</td> <td>${report.slicer.series.period}</td> <td>-</td> <td>${report.applyedCriterion.summarize(report.slicer.series, report.decisions)}</td> <#list criterions as criterion> <td>${criterion.summarize(report.slicer.series, report.decisions)}</td> </#list> </tr> </table> <#include "footer.ftl"> --- NEW FILE: footer.ftl --- </body> </html> --- NEW FILE: header.ftl --- <html> <head> <title>Walk Forward Report</title> <link rel="stylesheet" type="text/css" href="style/style.css"> </head> <body> <h1>Walk Forward Report</h1> <h2>Stock: <span class="titleHeader">${report.slicer.series.name}</span></h2> <h3><span class="settingsFixed">Slicer:</span><span class="settings">${report.slicer.name} </span> <span class="settingsFixed">Strategy: </span> <span class="settings">${report.decisions[0].strategy.class.simpleName}</span> <span class="settingsFixed">Criteria: </span> <span class="settings">${report.applyedCriterion.class.simpleName}</span></h3> --- NEW FILE: chart.ftl --- <table align="left"> <tr> <img src=${image}> </tr> </table> <br> <br> |
|
From: Carlos <ma...@us...> - 2007-10-10 19:04:47
|
Update of /cvsroot/tail/TailS/Data/Style In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv15497/Data/Style Added Files: style.css Log Message: Refatoração do Report. --- NEW FILE: style.css --- body { background:#FFFFFF; text-align:center; } h1{ font-size: 22px; font-family: Arial; color: #666666; text-align: left; margin: 0px; padding: 0px; border-bottom: 2px solid #999999; } h2{ font-size: 20px; background:#EAF1F8; text-align: left; font-family: Arial, helvetica,sans; color: #222222; margin-bottom: 10px; margin-top: 8px; } h3{ text-align: left; margin-bottom: 8px; margin-top: 8px; } .titleHeader { color:#003399; font-size:16px; font-family:arial, helvetica, sans; } .settingsFixed { font-size:11px; font-family:arial, helvetica, sans; } .settings { color:#003399; font-size:11px; font-family:arial, helvetica, sans; font-weight: normal; } table { text-align:center; border: 1px solid #003061; border-collapse: collapse; list-style-position: outside; background: #003061; padding-right: 0px; padding-left: 0px; } img { border: 1px solid #003061; } td { border: 1px solid #003061; } tr { font-size: 12px; font-family: arial; border: 1px solid #003061; } th{ background: #003061; color: #FFFFFF; font-size: 13px; font-family: verdana, helvetica, sans; font-weight: normal; padding-right: 3px; padding-left: 3px; } .row1{ background-color: #FFFFFF; } .row2{ background-color: #F3F3F3; } .green { color: #00FF00; } .red { color: #FF0000; } .date { font-size: 10px; color: #000000; } .strategy { color: #003061; padding: 3px; padding-left: 5px; padding-right: 5px; } .total{ background:#EAF1F8; font-size: 12px; font-weight: normal; font-family: verdana, helvetica, sans; } |
|
From: Carlos <ma...@us...> - 2007-10-10 19:04:47
|
Update of /cvsroot/tail/TailS/src/java/net/sf/tails/swing/frame In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv15497/src/java/net/sf/tails/swing/frame Modified Files: Index.java Log Message: Refatoração do Report. Index: Index.java =================================================================== RCS file: /cvsroot/tail/TailS/src/java/net/sf/tails/swing/frame/Index.java,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** Index.java 3 Oct 2007 22:59:04 -0000 1.16 --- Index.java 10 Oct 2007 19:04:47 -0000 1.17 *************** *** 27,41 **** import net.sf.tail.analysis.StockAnalysis; import net.sf.tail.io.StockAnalysisSerializer; - import net.sf.tail.report.Report; - import net.sf.tail.report.html.CompleteHtmlGenerator; - import net.sf.tail.report.xls.CompleteXlsGenerator; import net.sf.tails.swing.frame.report.NewReportFrame; import net.sf.tails.swing.frame.stockAnalysis.NewStockAnalysis; import net.sf.tails.swing.helper.FrameHelper; - import org.apache.poi.hssf.usermodel.HSSFWorkbook; - public class Index extends javax.swing.JFrame { - private static final ResourceBundle folderBundle = ResourceBundle.getBundle("net.sf.tails.i18n.Folders"); private static final ResourceBundle messageBundle = ResourceBundle.getBundle("net.sf.tails.i18n.Messages"); --- 27,36 ---- import net.sf.tail.analysis.StockAnalysis; import net.sf.tail.io.StockAnalysisSerializer; import net.sf.tails.swing.frame.report.NewReportFrame; import net.sf.tails.swing.frame.stockAnalysis.NewStockAnalysis; + import net.sf.tails.swing.helper.CompleteReportGenerator; import net.sf.tails.swing.helper.FrameHelper; public class Index extends javax.swing.JFrame { private static final ResourceBundle messageBundle = ResourceBundle.getBundle("net.sf.tails.i18n.Messages"); *************** *** 297,322 **** { case JFileChooser.APPROVE_OPTION: ! final CompleteXlsGenerator xlsGenerator = new CompleteXlsGenerator(); ! final Report report = stockAnalysis.getReports().get(reportTable.getSelectedRow()); ! ! new Thread(new Runnable() { ! ! public void run() { ! try { ! FrameHelper.generateFolders(folderBundle.getString("XLS_DIR")); ! HSSFWorkbook workbook = xlsGenerator.generate(report, stockAnalysis.getAdditionalCriteria(), stockAnalysis.getSlicer().getPeriod()); ! String filePath = xlsFileChooser.getSelectedFile().getAbsolutePath(); ! if(!filePath.endsWith(".xls")) ! { ! filePath += ".xls"; ! } ! FileOutputStream fileOut = new FileOutputStream(xlsFileChooser.getSelectedFile().getAbsolutePath()); ! workbook.write(fileOut); ! fileOut.close(); ! } catch (Exception e) { ! e.printStackTrace(); ! JOptionPane.showMessageDialog(null, e.getMessage(), "Error", 0); ! } ! }}).start(); } --- 292,305 ---- { case JFileChooser.APPROVE_OPTION: ! String fileName = xlsFileChooser.getSelectedFile().getName(); ! String filePath = xlsFileChooser.getSelectedFile().getAbsolutePath(); ! filePath = filePath.replaceAll("/" + fileName, ""); ! if(!fileName.endsWith(".xls")) ! { ! fileName += ".xls"; ! } ! CompleteReportGenerator complete = new CompleteReportGenerator(); ! complete.generateXLSFile(stockAnalysis.getReports().get(reportTable.getSelectedRow()), ! stockAnalysis.getAdditionalCriteria(), stockAnalysis.getSlicer().getPeriod(), filePath, fileName); } *************** *** 335,342 **** { case JFileChooser.APPROVE_OPTION: ! Report report = stockAnalysis.getReports().get(reportTable.getSelectedRow()); ! CompleteHtmlGenerator htmlGenerator = new CompleteHtmlGenerator(report, stockAnalysis.getAdditionalCriteria(), stockAnalysis.getSlicer().getPeriod()); try { ! htmlGenerator.generate(htmlFileChooser.getSelectedFile().getName()); } catch (IOException e) { // TODO Auto-generated catch block --- 318,327 ---- { case JFileChooser.APPROVE_OPTION: ! String directoryName = htmlFileChooser.getSelectedFile().getName(); ! String directoryPath = htmlFileChooser.getSelectedFile().getAbsolutePath(); ! directoryPath = directoryPath.replaceAll("/" + directoryName, ""); ! CompleteReportGenerator complete = new CompleteReportGenerator(); try { ! complete.generateHTMLFile(stockAnalysis.getReports().get(reportTable.getSelectedRow()), stockAnalysis.getAdditionalCriteria(), stockAnalysis.getSlicer().getPeriod(), directoryPath, directoryName); } catch (IOException e) { // TODO Auto-generated catch block |
|
From: Carlos <ma...@us...> - 2007-10-10 19:04:47
|
Update of /cvsroot/tail/TailS/src/java/net/sf/tails/i18n In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv15497/src/java/net/sf/tails/i18n Modified Files: Folders.properties Log Message: Refatoração do Report. Index: Folders.properties =================================================================== RCS file: /cvsroot/tail/TailS/src/java/net/sf/tails/i18n/Folders.properties,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** Folders.properties 3 Oct 2007 21:10:19 -0000 1.2 --- Folders.properties 10 Oct 2007 19:04:48 -0000 1.3 *************** *** 4,6 **** STOCK_DIR =Data/Stock BOVESPA_DIR =Data/Bovespa ! XLS_DIR =Data/Xls \ No newline at end of file --- 4,7 ---- STOCK_DIR =Data/Stock BOVESPA_DIR =Data/Bovespa ! XLS_DIR =Data/Xls ! STYLE_DIR =Data/Style \ No newline at end of file |
|
From: Carlos <ma...@us...> - 2007-10-10 19:04:47
|
Update of /cvsroot/tail/TailS/src/java/net/sf/tails/swing/helper In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv15497/src/java/net/sf/tails/swing/helper Added Files: CompleteReportGenerator.java Log Message: Refatoração do Report. --- NEW FILE: CompleteReportGenerator.java --- package net.sf.tails.swing.helper; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.OutputStream; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import java.util.ResourceBundle; import javax.swing.JOptionPane; import net.sf.tail.AnalysisCriterion; import net.sf.tail.Indicator; import net.sf.tail.TimeSeries; import net.sf.tail.analysis.evaluator.Decision; import net.sf.tail.flow.CashFlow; import net.sf.tail.graphics.SeriesChart; import net.sf.tail.graphics.SeriesDataset; import net.sf.tail.graphics.StockAndCashFlowChart; import net.sf.tail.graphics.StockAndCashFlowDataset; import net.sf.tail.indicator.simple.ClosePriceIndicator; import net.sf.tail.report.Report; import net.sf.tail.report.html.ReportHTMLGenerator; import net.sf.tail.report.xls.WorkbookGenerator; import org.apache.log4j.Logger; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.jfree.chart.ChartUtilities; import org.jfree.chart.JFreeChart; import org.joda.time.Period; public class CompleteReportGenerator { private static final ResourceBundle folderBundle = ResourceBundle.getBundle("net.sf.tails.i18n.Folders"); private transient static Logger LOG = Logger.getLogger(CompleteReportGenerator.class); public void generateXLSFile(final Report report, final List<AnalysisCriterion> criteria, final Period period, final String filePath, final String fileName){ final WorkbookGenerator xlsGenerator = new WorkbookGenerator(); final List<File> charts = new ArrayList<File>(); new Thread(new Runnable() { public void run() { try { for (Decision decision : report.getDecisions()) { charts.add(generateImage(decision, filePath)); } charts.add(0, generateImage(report, period, filePath)); HSSFWorkbook workbook = xlsGenerator.generate(report, criteria, period, charts); FileOutputStream fileOut = new FileOutputStream(filePath + "/" + fileName); workbook.write(fileOut); fileOut.close(); for (File file : charts) { file.delete(); } } catch (Exception e) { e.printStackTrace(); JOptionPane.showMessageDialog(null, e.getMessage(), "Error", 0); } }}).start(); } public void generateHTMLFile(final Report report, final List<AnalysisCriterion> criteria, final Period period, final String filePath, final String fileName) throws IOException { final ReportHTMLGenerator generator = new ReportHTMLGenerator(); final String reportDir = filePath + "/" + fileName; final String styleDir = reportDir + "/style"; final String chartDir = reportDir + "/Charts"; final String decisionDir = reportDir + "/Decisions"; final List<String> urls = new ArrayList<String>(); new Thread(new Runnable() { public void run() { new File(reportDir).mkdir(); new File(styleDir).mkdir(); new File(chartDir).mkdir(); new File(decisionDir).mkdir(); try { createStyle(styleDir); for (Decision decision : report.getDecisions()) { File chartFile = generateImage(decision, chartDir); StringBuffer decisionHtml = generator.generate(decision, criteria, chartFile.getAbsolutePath()); File decisionFile = createHTML(decision.getFileName() + ".html", decisionHtml, decisionDir); urls.add(decisionFile.getAbsolutePath()); } File reportChartFile = generateImage(report, period, chartDir); StringBuffer reportHtml = generator.generate(report, criteria, reportChartFile.getAbsolutePath(), urls); createHTML(report.getName() + ".html", reportHtml, reportDir); } catch (IOException e) { e.printStackTrace(); JOptionPane.showMessageDialog(null, e.getMessage(), "Error", 0); } } }).start(); } private void createStyle(String styleDir) throws IOException { File inputFile = new File(folderBundle.getString("STYLE_DIR") + "/style.css"); File outputFile = new File(styleDir + "/style.css"); FileReader in = new FileReader(inputFile); FileWriter out = new FileWriter(outputFile); int c; while ((c = in.read()) != -1) out.write(c); in.close(); out.close(); } private File createHTML(String name, StringBuffer html, String directory) throws FileNotFoundException { String htmlPath = directory + "/" + name; File reportHtml = new File(htmlPath); OutputStream out = new BufferedOutputStream(new FileOutputStream(reportHtml)); PrintWriter write = new PrintWriter(out); write.print(html); write.close(); return reportHtml; } public File generateImage(Decision decision, String chartDir) throws IOException { LOG.info("Initializing image generator for " + decision.getFileName()); TimeSeries timeSeries = decision.getSeries(); List<Indicator<? extends Number>> indicators; String imagePath = chartDir + "/" + decision.getFileName() + ".png"; Indicator<Double> close = new ClosePriceIndicator(timeSeries); indicators = new ArrayList<Indicator<? extends Number>>(); indicators.add(close); SeriesDataset seriesData = new SeriesDataset(timeSeries, indicators, decision.getTrades()); SeriesChart seriesChart = new SeriesChart(seriesData); JFreeChart jfreechart = seriesChart.createChart(""); File reportPNG = new File(imagePath); ChartUtilities.saveChartAsPNG(reportPNG, jfreechart, 800, 300); LOG.info("Ending image generator"); return reportPNG; } public File generateImage(Report report, Period period, String chartDir) throws IOException { LOG.info("Initializing image generator for " + report.getFileName()); TimeSeries timeSeries = report.getSlicer().getSeries(); Indicator<Double> close = new ClosePriceIndicator(timeSeries); CashFlow cashflow = new CashFlow(timeSeries, report.getAllTrades()); String imagePath = chartDir + "/" + report.getFileName() + ".png"; StockAndCashFlowDataset stockData = new StockAndCashFlowDataset(timeSeries, close, cashflow, period); StockAndCashFlowChart stockChart = new StockAndCashFlowChart(stockData, false); JFreeChart jfreechart = stockChart.createChart(""); File reportPNG = new File(imagePath); ChartUtilities.saveChartAsPNG(reportPNG, jfreechart, 800, 300); LOG.info("Ending image generator"); return reportPNG; } } |
|
From: Carlos <ma...@us...> - 2007-10-10 19:04:47
|
Update of /cvsroot/tail/TailS/reports/templates/slice In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv15497/reports/templates/slice Removed Files: footer.ftl header.ftl sliceReport.ftl chart.ftl Log Message: Refatoração do Report. --- sliceReport.ftl DELETED --- --- header.ftl DELETED --- --- footer.ftl DELETED --- --- chart.ftl DELETED --- |
|
From: Carlos <ma...@us...> - 2007-10-10 19:04:47
|
Update of /cvsroot/tail/TailS/reports/style In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv15497/reports/style Removed Files: style.css Log Message: Refatoração do Report. --- style.css DELETED --- |
|
From: Carlos <ma...@us...> - 2007-10-10 19:04:47
|
Update of /cvsroot/tail/TailS In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv15497 Modified Files: .classpath Log Message: Refatoração do Report. Index: .classpath =================================================================== RCS file: /cvsroot/tail/TailS/.classpath,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** .classpath 8 Oct 2007 19:45:25 -0000 1.13 --- .classpath 10 Oct 2007 19:04:48 -0000 1.14 *************** *** 12,15 **** --- 12,17 ---- <classpathentry kind="src" path="dsl"/> <classpathentry combineaccessrules="false" kind="src" path="/Tail"/> + <classpathentry kind="lib" path="/Tail/lib/jfreechart-1.0.5.jar"/> + <classpathentry kind="lib" path="/Tail/lib/log4j-1.2.12.jar"/> <classpathentry kind="output" path="bin"/> </classpath> |
|
From: Carlos <ma...@us...> - 2007-10-10 19:04:45
|
Update of /cvsroot/tail/TailS/reports/templates/total In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv15497/reports/templates/total Removed Files: footer.ftl report.ftl chart.ftl header.ftl Log Message: Refatoração do Report. --- report.ftl DELETED --- --- footer.ftl DELETED --- --- header.ftl DELETED --- --- chart.ftl DELETED --- |
|
From: Carlos <ma...@us...> - 2007-10-10 19:04:45
|
Update of /cvsroot/tail/TailS/reports/templates/complete In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv15497/reports/templates/complete Removed Files: chart.ftl report.ftl footer.ftl header.ftl Log Message: Refatoração do Report. --- report.ftl DELETED --- --- footer.ftl DELETED --- --- header.ftl DELETED --- --- chart.ftl DELETED --- |
|
From: Carlos <ma...@us...> - 2007-10-10 19:04:45
|
Update of /cvsroot/tail/TailS/Data/templates/slice In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv15497/Data/templates/slice Added Files: chart.ftl sliceReport.ftl footer.ftl header.ftl Log Message: Refatoração do Report. --- NEW FILE: sliceReport.ftl --- <#include "header.ftl"> <#include "chart.ftl"> <table align="center"> <tr> <th>Trade</th> <th>Buy Date</th> <th>Buy Price</th> <th>Sell Date</th> <th>Sell Price</th> <#list criteria as criterion> <th> ${criterion.class.simpleName} </th> </#list> </tr> <#assign x=1> <#list decision.trades as trade> <#if (x%2)= 0> <tr class="row1"> <#else> <tr class="row2"> </#if> <td>${x}</td> <td class="date">${decision.series.getTick(trade.entry.index).getDateName()}</td> <td class="date">${decision.series.getTick(trade.entry.index).closePrice}</td> <td class="date">${decision.series.getTick(trade.exit.index).getDateName()}</td> <td class="date">${decision.series.getTick(trade.exit.index).closePrice}</td> <#list criteria as criterion> <td> ${criterion.calculate(decision.series, decision.trades.get(x - 1))}</td> </#list> <#assign x=x+1> </#list> </tr> <tr class="total"> <td>TOTAL</td> <td>${decision.series.getTick(decision.series.begin).getDateName()}</td> <td>-</td> <td>${decision.series.getTick(decision.series.end).getDateName()}</td> <td>-</td> <#list criteria as criterion> <td>${criterion.calculate(decision.series, decision.trades)} </td> </#list> </tr> </table> <#include "footer.ftl"> --- NEW FILE: header.ftl --- <html> <head> <title>Walk Forward Report</title> <link rel="stylesheet" type="text/css" href="../style/style.css"> </head> <body> <h1>Slice Report</h1> <h2>Stock: <span class="titleHeader">${decision.series.name} for: ${decision.series.period}</span></h2> <h3> <span class="settingsFixed">Strategy: </span> <span class="settings">${decision.strategy.class.simpleName}</span> <span class="settingsFixed">Criteria: </span> <span class="settings">${decision.criterion.class.simpleName}</span></h3> --- NEW FILE: footer.ftl --- </body> </html> --- NEW FILE: chart.ftl --- <table align="left"> <tr> <img src=${image}> </tr> </table> <br> <br> |
|
From: Carlos <ma...@us...> - 2007-10-10 19:04:39
|
Update of /cvsroot/tail/Tail/src/java/net/sf/tail/report/xls In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv15290/src/java/net/sf/tail/report/xls Modified Files: XLSReportGenerator.java SliceXlsGenerator.java ReportXlsGenerator.java Added Files: WorkbookGenerator.java Removed Files: CompleteXlsGenerator.java Log Message: Refatoração do Report. Index: XLSReportGenerator.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/report/xls/XLSReportGenerator.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** XLSReportGenerator.java 25 Sep 2007 00:04:22 -0000 1.1 --- XLSReportGenerator.java 10 Oct 2007 19:04:10 -0000 1.2 *************** *** 1,4 **** --- 1,5 ---- package net.sf.tail.report.xls; + import java.io.File; import java.io.IOException; import java.util.List; *************** *** 12,18 **** public interface XLSReportGenerator { ! List<HSSFSheet> generate(Report report, List<AnalysisCriterion> criteria, Period period) throws IOException; ! List<HSSFSheet> generate(Report report, Period period) throws IOException; } \ No newline at end of file --- 13,19 ---- public interface XLSReportGenerator { ! List<HSSFSheet> generate(Report report, List<AnalysisCriterion> criteria, Period period, List<File> chart) throws IOException; ! List<HSSFSheet> generate(Report report, Period period, List<File> charts) throws IOException; } \ No newline at end of file --- CompleteXlsGenerator.java DELETED --- Index: SliceXlsGenerator.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/report/xls/SliceXlsGenerator.java,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** SliceXlsGenerator.java 3 Oct 2007 23:56:59 -0000 1.9 --- SliceXlsGenerator.java 10 Oct 2007 19:04:10 -0000 1.10 *************** *** 13,17 **** import net.sf.tail.analysis.evaluator.Decision; import net.sf.tail.report.Report; - import net.sf.tail.report.ReportImage; import org.apache.log4j.Logger; --- 13,16 ---- *************** *** 45,49 **** } ! public List<HSSFSheet> generate(Report report, Period period) throws IOException { List<AnalysisCriterion> criteria = new LinkedList<AnalysisCriterion>(); --- 44,48 ---- } ! public List<HSSFSheet> generate(Report report, Period period, List<File> charts) throws IOException { List<AnalysisCriterion> criteria = new LinkedList<AnalysisCriterion>(); *************** *** 51,62 **** criteria.add(new TotalProfitCriterion()); ! return generate(report, criteria, period); } ! public List<HSSFSheet> generate(Decision decision, List<AnalysisCriterion> criteria, Period period) throws IOException { LOG.info("Initializing Generator for" + decision.getFileName()); int row = INDEX_FIRST_ROW; - ReportImage image = new ReportImage(); List<HSSFSheet> sheets = new LinkedList<HSSFSheet>(); --- 50,60 ---- criteria.add(new TotalProfitCriterion()); ! return generate(report, criteria, period, charts); } ! public List<HSSFSheet> generate(Decision decision, List<AnalysisCriterion> criteria, Period period, File chart) throws IOException { LOG.info("Initializing Generator for" + decision.getFileName()); int row = INDEX_FIRST_ROW; List<HSSFSheet> sheets = new LinkedList<HSSFSheet>(); *************** *** 72,78 **** generateSummaryRow(row, workbook, sheet, decision, criteria, style); ! File reportPNG = image.generateImage(decision); ! stylist.drawImage(reportPNG, sheet, 1, 7); ! reportPNG.delete(); stylist.rearrangeSheet(sheet, criteria.size() + 6); --- 70,74 ---- generateSummaryRow(row, workbook, sheet, decision, criteria, style); ! stylist.drawImage(chart, sheet, 1, 7); stylist.rearrangeSheet(sheet, criteria.size() + 6); *************** *** 83,90 **** } ! public List<HSSFSheet> generate(Report report, List<AnalysisCriterion> criteria, Period period) throws IOException { List<HSSFSheet> sheets = new LinkedList<HSSFSheet>(); ! for (Decision decision : report.getDecisions()) { ! sheets.addAll(this.generate(decision, criteria, period)); } return sheets; --- 79,86 ---- } ! public List<HSSFSheet> generate(Report report, List<AnalysisCriterion> criteria, Period period, List<File> charts) throws IOException { List<HSSFSheet> sheets = new LinkedList<HSSFSheet>(); ! for (int i = 0; i < report.getDecisions().size(); i++) { ! sheets.addAll(this.generate(report.getDecisions().get(i), criteria, period, charts.get(i))); } return sheets; --- NEW FILE: WorkbookGenerator.java --- package net.sf.tail.report.xls; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import net.sf.tail.AnalysisCriterion; import net.sf.tail.analysis.criteria.NumberOfTicksCriterion; import net.sf.tail.analysis.criteria.TotalProfitCriterion; import net.sf.tail.report.Report; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.joda.time.Period; public class WorkbookGenerator { public HSSFWorkbook generate(Report report, Period period, List<File> charts) throws IOException { List<AnalysisCriterion> criteria = new LinkedList<AnalysisCriterion>(); criteria.add(new NumberOfTicksCriterion()); criteria.add(new TotalProfitCriterion()); return generate(report, criteria, period, charts); } public HSSFWorkbook generate(Report report, List<AnalysisCriterion> criteria, Period period, List<File> charts) throws IOException { List<File> chartFile = new ArrayList<File>(); chartFile.add(charts.remove(0)); HSSFWorkbook workbook = new HSSFWorkbook(); XLSReportGenerator reportXls = new ReportXlsGenerator(workbook); XLSReportGenerator slicerXls = new SliceXlsGenerator(workbook); TimeSeriesXlsGenerator seriesXls = new TimeSeriesXlsGenerator(workbook); List<AnalysisCriterion> criteria2 = new ArrayList<AnalysisCriterion>(); criteria2 = criteria; criteria2.add(0, report.getApplyedCriterion()); seriesXls.generate(report); reportXls.generate(report, criteria, period, chartFile); slicerXls.generate(report, criteria2, period, charts); return workbook; } } Index: ReportXlsGenerator.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/report/xls/ReportXlsGenerator.java,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** ReportXlsGenerator.java 3 Oct 2007 23:56:58 -0000 1.9 --- ReportXlsGenerator.java 10 Oct 2007 19:04:10 -0000 1.10 *************** *** 11,15 **** import net.sf.tail.analysis.evaluator.Decision; import net.sf.tail.report.Report; - import net.sf.tail.report.ReportImage; import org.apache.log4j.Logger; --- 11,14 ---- *************** *** 39,43 **** } ! public List<HSSFSheet> generate(Report report, Period period) throws IOException { List<AnalysisCriterion> criteria = new LinkedList<AnalysisCriterion>(); --- 38,42 ---- } ! public List<HSSFSheet> generate(Report report, Period period, List<File> charts) throws IOException { List<AnalysisCriterion> criteria = new LinkedList<AnalysisCriterion>(); *************** *** 45,55 **** criteria.add(new TotalProfitCriterion()); ! return generate(report, criteria, period); } ! public List<HSSFSheet> generate(Report report, List<AnalysisCriterion> criteria, Period period) throws IOException { LOG.info("Initializing Report Generator"); int row = INDEX_FIRST_ROW; - ReportImage image = new ReportImage(); List<HSSFSheet> sheets = new LinkedList<HSSFSheet>(); --- 44,53 ---- criteria.add(new TotalProfitCriterion()); ! return generate(report, criteria, period, charts); } ! public List<HSSFSheet> generate(Report report, List<AnalysisCriterion> criteria, Period period, List<File> charts) throws IOException { LOG.info("Initializing Report Generator"); int row = INDEX_FIRST_ROW; List<HSSFSheet> sheets = new LinkedList<HSSFSheet>(); *************** *** 68,74 **** generateSummaryRow(row, sheet, report, criteria, style); ! File reportPNG = image.generateImage(report, period); ! stylist.drawImage(reportPNG, sheet, 1, 5); ! reportPNG.delete(); stylist.rearrangeSheet(sheet, criteria.size() + 5); --- 66,71 ---- generateSummaryRow(row, sheet, report, criteria, style); ! stylist.drawImage(charts.get(0), sheet, 1, 5); ! stylist.rearrangeSheet(sheet, criteria.size() + 5); |
|
From: Carlos <ma...@us...> - 2007-10-10 19:04:39
|
Update of /cvsroot/tail/Tail/src/test/net/sf/tail In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv15290/src/test/net/sf/tail Modified Files: EMAWalkTest.java EMACompleteTest.java Log Message: Refatoração do Report. Index: EMACompleteTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/EMACompleteTest.java,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** EMACompleteTest.java 8 Oct 2007 19:38:14 -0000 1.18 --- EMACompleteTest.java 10 Oct 2007 19:04:10 -0000 1.19 *************** *** 27,31 **** import net.sf.tail.io.reader.CedroTimeSeriesLoader; import net.sf.tail.report.Report; ! import net.sf.tail.report.ReportHTMLGenerator; import net.sf.tail.runner.HistoryRunner; import net.sf.tail.series.FullyMemorizedSlicer; --- 27,31 ---- import net.sf.tail.io.reader.CedroTimeSeriesLoader; import net.sf.tail.report.Report; ! import net.sf.tail.report.html.ReportHTMLGenerator; import net.sf.tail.runner.HistoryRunner; import net.sf.tail.series.FullyMemorizedSlicer; Index: EMAWalkTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/EMAWalkTest.java,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** EMAWalkTest.java 8 Oct 2007 19:38:14 -0000 1.17 --- EMAWalkTest.java 10 Oct 2007 19:04:10 -0000 1.18 *************** *** 17,21 **** import net.sf.tail.io.reader.CedroTimeSeriesLoader; import net.sf.tail.report.Report; ! import net.sf.tail.report.ReportHTMLGenerator; import net.sf.tail.runner.HistoryRunner; import net.sf.tail.series.FullyMemorizedSlicer; --- 17,21 ---- import net.sf.tail.io.reader.CedroTimeSeriesLoader; import net.sf.tail.report.Report; ! import net.sf.tail.report.html.ReportHTMLGenerator; import net.sf.tail.runner.HistoryRunner; import net.sf.tail.series.FullyMemorizedSlicer; |
|
From: Carlos <ma...@us...> - 2007-10-10 19:04:38
|
Update of /cvsroot/tail/Tail/src/test/net/sf/tail/report In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv15290/src/test/net/sf/tail/report Modified Files: ReportGeneratorTest.java SliceReportGeneratorTest.java CompleteReportGeneratorTest.java Removed Files: ReportImageTest.java Log Message: Refatoração do Report. Index: CompleteReportGeneratorTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/report/CompleteReportGeneratorTest.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** CompleteReportGeneratorTest.java 3 Oct 2007 22:56:47 -0000 1.5 --- CompleteReportGeneratorTest.java 10 Oct 2007 19:04:09 -0000 1.6 *************** *** 15,18 **** --- 15,19 ---- import net.sf.tail.analysis.criteria.TotalProfitCriterion; import net.sf.tail.analysis.evaluator.Decision; + import net.sf.tail.report.html.ReportHTMLGenerator; import net.sf.tail.runner.HistoryRunner; import net.sf.tail.sample.SampleTimeSeries; --- ReportImageTest.java DELETED --- Index: ReportGeneratorTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/report/ReportGeneratorTest.java,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** ReportGeneratorTest.java 3 Oct 2007 22:56:47 -0000 1.23 --- ReportGeneratorTest.java 10 Oct 2007 19:04:09 -0000 1.24 *************** *** 15,18 **** --- 15,19 ---- import net.sf.tail.analysis.criteria.TotalProfitCriterion; import net.sf.tail.analysis.evaluator.Decision; + import net.sf.tail.report.html.ReportHTMLGenerator; import net.sf.tail.runner.HistoryRunner; import net.sf.tail.sample.SampleTimeSeries; Index: SliceReportGeneratorTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/report/SliceReportGeneratorTest.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** SliceReportGeneratorTest.java 22 Sep 2007 18:47:22 -0000 1.5 --- SliceReportGeneratorTest.java 10 Oct 2007 19:04:09 -0000 1.6 *************** *** 14,17 **** --- 14,18 ---- import net.sf.tail.analysis.criteria.TotalProfitCriterion; import net.sf.tail.analysis.evaluator.Decision; + import net.sf.tail.report.html.ReportHTMLGenerator; import net.sf.tail.runner.HistoryRunner; import net.sf.tail.sample.SampleTimeSeries; |
|
From: Carlos <ma...@us...> - 2007-10-10 19:04:33
|
Update of /cvsroot/tail/Tail/Data/templates/slice In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv14907/Data/templates/slice Log Message: Directory /cvsroot/tail/Tail/Data/templates/slice added to the repository |
|
From: Carlos <ma...@us...> - 2007-10-10 19:04:12
|
Update of /cvsroot/tail/Tail/reports/style In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv15290/reports/style Removed Files: style.css Log Message: Refatoração do Report. --- style.css DELETED --- |
|
From: Carlos <ma...@us...> - 2007-10-10 19:04:11
|
Update of /cvsroot/tail/Tail/src/java/net/sf/tail/report In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv15290/src/java/net/sf/tail/report Removed Files: ReportHTMLGenerator.java ReportImage.java Log Message: Refatoração do Report. --- ReportImage.java DELETED --- --- ReportHTMLGenerator.java DELETED --- |
|
From: Carlos <ma...@us...> - 2007-10-10 19:04:10
|
Update of /cvsroot/tail/Tail/src/test/net/sf/tail/report/html In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv15290/src/test/net/sf/tail/report/html Removed Files: CompleteHtmlGeneratorExecutor.java CompleteHtmlGeneratorTest.java Log Message: Refatoração do Report. --- CompleteHtmlGeneratorTest.java DELETED --- --- CompleteHtmlGeneratorExecutor.java DELETED --- |
|
From: Carlos <ma...@us...> - 2007-10-10 19:04:10
|
Update of /cvsroot/tail/Tail/src/test/net/sf/tail/report/xls In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv15290/src/test/net/sf/tail/report/xls Removed Files: CompleteXLSGeneratorTest.java CompleteXlsGeneratorExecutor.java Log Message: Refatoração do Report. --- CompleteXlsGeneratorExecutor.java DELETED --- --- CompleteXLSGeneratorTest.java DELETED --- |
|
From: Carlos <ma...@us...> - 2007-10-10 19:04:10
|
Update of /cvsroot/tail/Tail/Data/templates/slice In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv15290/Data/templates/slice Added Files: header.ftl footer.ftl sliceReport.ftl chart.ftl Log Message: Refatoração do Report. --- NEW FILE: sliceReport.ftl --- <#include "header.ftl"> <#include "chart.ftl"> <table align="center"> <tr> <th>Trade</th> <th>Buy Date</th> <th>Buy Price</th> <th>Sell Date</th> <th>Sell Price</th> <#list criteria as criterion> <th> ${criterion.class.simpleName} </th> </#list> </tr> <#assign x=1> <#list decision.trades as trade> <#if (x%2)= 0> <tr class="row1"> <#else> <tr class="row2"> </#if> <td>${x}</td> <td class="date">${decision.series.getTick(trade.entry.index).getDateName()}</td> <td class="date">${decision.series.getTick(trade.entry.index).closePrice}</td> <td class="date">${decision.series.getTick(trade.exit.index).getDateName()}</td> <td class="date">${decision.series.getTick(trade.exit.index).closePrice}</td> <#list criteria as criterion> <td> ${criterion.calculate(decision.series, decision.trades.get(x - 1))}</td> </#list> <#assign x=x+1> </#list> </tr> <tr class="total"> <td>TOTAL</td> <td>${decision.series.getTick(decision.series.begin).getDateName()}</td> <td>-</td> <td>${decision.series.getTick(decision.series.end).getDateName()}</td> <td>-</td> <#list criteria as criterion> <td>${criterion.calculate(decision.series, decision.trades)} </td> </#list> </tr> </table> <#include "footer.ftl"> --- NEW FILE: header.ftl --- <html> <head> <title>Walk Forward Report</title> <link rel="stylesheet" type="text/css" href="../style/style.css"> </head> <body> <h1>Slice Report</h1> <h2>Stock: <span class="titleHeader">${decision.series.name} for: ${decision.series.period}</span></h2> <h3> <span class="settingsFixed">Strategy: </span> <span class="settings">${decision.strategy.class.simpleName}</span> <span class="settingsFixed">Criteria: </span> <span class="settings">${decision.criterion.class.simpleName}</span></h3> --- NEW FILE: footer.ftl --- </body> </html> --- NEW FILE: chart.ftl --- <table align="left"> <tr> <img src=${image}> </tr> </table> <br> <br> |