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-17 22:39:53
|
Update of /cvsroot/tail/TailS/src/java/net/sf/tails/swing In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv793/src/java/net/sf/tails/swing Modified Files: Main.java Log Message: Ajeitando detalhes de alinhamento Index: Main.java =================================================================== RCS file: /cvsroot/tail/TailS/src/java/net/sf/tails/swing/Main.java,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** Main.java 17 Oct 2007 21:37:39 -0000 1.10 --- Main.java 17 Oct 2007 22:39:55 -0000 1.11 *************** *** 24,32 **** */ public static void main(String[] args) { ! // try { ! // UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); ! // } catch (Exception e) { ! // e.printStackTrace(); ! // } new Index().setVisible(true); } --- 24,32 ---- */ public static void main(String[] args) { ! try { ! UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); ! } catch (Exception e) { ! e.printStackTrace(); ! } new Index().setVisible(true); } |
|
From: Márcio V. d. S. <mv...@us...> - 2007-10-17 22:32:43
|
Update of /cvsroot/tail/TailS/Data/icons In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv29808/Data/icons Added Files: complete_graph.GIF export_htm.GIF new_report.gif open.gif export_xls.GIF prop_ps.gif Thumbs.db help_view.gif save_edit.gif clean_console.gif new_stock_analysis.gif template_obj.gif saveas_edit.gif Log Message: icones --- NEW FILE: new_stock_analysis.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: help_view.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: save_edit.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: new_report.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: Thumbs.db --- (This appears to be a binary file; contents omitted.) --- NEW FILE: saveas_edit.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: complete_graph.GIF --- (This appears to be a binary file; contents omitted.) --- NEW FILE: open.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: template_obj.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: clean_console.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: export_htm.GIF --- (This appears to be a binary file; contents omitted.) --- NEW FILE: prop_ps.gif --- (This appears to be a binary file; contents omitted.) --- NEW FILE: export_xls.GIF --- (This appears to be a binary file; contents omitted.) |
|
From: Márcio V. d. S. <mv...@us...> - 2007-10-17 22:32:38
|
Update of /cvsroot/tail/TailS/Data/icons In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv29789/Data/icons Log Message: Directory /cvsroot/tail/TailS/Data/icons added to the repository |
|
From: Thies <tg...@us...> - 2007-10-17 22:31:17
|
Update of /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/criteria In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv29244/src/test/net/sf/tail/analysis/criteria Modified Files: AverageProfitCriterionTest.java VersusBuyAndHoldCriterionTest.java Log Message: acerto nos testes Index: VersusBuyAndHoldCriterionTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/criteria/VersusBuyAndHoldCriterionTest.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** VersusBuyAndHoldCriterionTest.java 3 Oct 2007 18:57:45 -0000 1.5 --- VersusBuyAndHoldCriterionTest.java 17 Oct 2007 22:31:15 -0000 1.6 *************** *** 77,81 **** AnalysisCriterion buyAndHold = new VersusBuyAndHoldCriterion(new AverageProfitCriterion()); ! assertEquals(Math.pow(95d/100 * 130d/100, 1d/5) / Math.pow(130d / 100, 1d/6), buyAndHold.calculate(series, trades) ,0.0001); } @Test --- 77,81 ---- AnalysisCriterion buyAndHold = new VersusBuyAndHoldCriterion(new AverageProfitCriterion()); ! assertEquals(Math.pow(95d/100 * 130d/100, 1d/6) / Math.pow(130d / 100, 1d/6), buyAndHold.calculate(series, trades) ,0.0001); } @Test *************** *** 89,93 **** AnalysisCriterion buyAndHold = new VersusBuyAndHoldCriterion(new NumberOfTicksCriterion()); ! assertEquals(5d/6d, buyAndHold.calculate(series, trades)); } --- 89,93 ---- AnalysisCriterion buyAndHold = new VersusBuyAndHoldCriterion(new NumberOfTicksCriterion()); ! assertEquals(6d/6d, buyAndHold.calculate(series, trades)); } Index: AverageProfitCriterionTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/criteria/AverageProfitCriterionTest.java,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** AverageProfitCriterionTest.java 3 Oct 2007 18:57:45 -0000 1.11 --- AverageProfitCriterionTest.java 17 Oct 2007 22:31:15 -0000 1.12 *************** *** 73,77 **** trades.add(new Trade(new Operation(2, OperationType.BUY), new Operation(5, OperationType.SELL))); AnalysisCriterion averageProfit = new AverageProfitCriterion(); ! assertEquals(Math.pow(95d/100 * 70d/100, 1d / 5), averageProfit.calculate(series, trades), 0.01); } --- 73,77 ---- trades.add(new Trade(new Operation(2, OperationType.BUY), new Operation(5, OperationType.SELL))); AnalysisCriterion averageProfit = new AverageProfitCriterion(); ! assertEquals(Math.pow(95d/100 * 70d/100, 1d / 6), averageProfit.calculate(series, trades), 0.01); } |
|
From: xanaot <xa...@us...> - 2007-10-17 21:46:00
|
Update of /cvsroot/tail/TailS/src/java/net/sf/tails/swing/helper In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv9440/src/java/net/sf/tails/swing/helper Modified Files: CompleteReportGenerator.java Log Message: Acerto na Thread Index: CompleteReportGenerator.java =================================================================== RCS file: /cvsroot/tail/TailS/src/java/net/sf/tails/swing/helper/CompleteReportGenerator.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** CompleteReportGenerator.java 17 Oct 2007 18:32:33 -0000 1.5 --- CompleteReportGenerator.java 17 Oct 2007 21:45:58 -0000 1.6 *************** *** 57,61 **** try { index.updateReportProgress(0); ! double percent = 44d / report.getDecisions().size(); for (Decision decision : report.getDecisions()) { charts.add(generateImage(decision, filePath)); --- 57,61 ---- try { index.updateReportProgress(0); ! double percent = 44 / report.getDecisions().size(); for (Decision decision : report.getDecisions()) { charts.add(generateImage(decision, filePath)); *************** *** 71,78 **** --- 71,83 ---- index.updateReportProgress(100); + } catch (Exception e) { e.printStackTrace(); JOptionPane.showMessageDialog(null, e.getMessage(), "Error", 0); } + finally + { + System.exit(0); + } }}).start(); } *************** *** 90,94 **** public void run() { index.updateReportProgress(0); ! double percent = 43d / report.getDecisions().size(); new File(reportDir).mkdir(); new File(styleDir).mkdir(); --- 95,99 ---- public void run() { index.updateReportProgress(0); ! double percent = 43 / report.getDecisions().size(); new File(reportDir).mkdir(); new File(styleDir).mkdir(); *************** *** 119,122 **** --- 124,131 ---- JOptionPane.showMessageDialog(null, e.getMessage(), "Error", 0); } + finally + { + System.exit(0); + } } }).start(); *************** *** 149,153 **** public File generateImage(Decision decision, String chartDir) throws IOException { ! LOG.info("Initializing image generator for " + decision.getFileName()); index.appendConsoleArea("Initializing image generator for " + decision.getFileName() + "."); TimeSeries timeSeries = decision.getSeries(); --- 158,163 ---- public File generateImage(Decision decision, String chartDir) throws IOException { ! LOG.info("Initializing image generator for Decison " + decision.getFileName()); ! long time = System.currentTimeMillis(); index.appendConsoleArea("Initializing image generator for " + decision.getFileName() + "."); TimeSeries timeSeries = decision.getSeries(); *************** *** 164,174 **** File reportPNG = new File(imagePath); ChartUtilities.saveChartAsPNG(reportPNG, jfreechart, 800, 300); ! LOG.info("Ending image generator"); ! index.appendConsoleArea("Ending image generator."); return reportPNG; } public File generateImage(Report report, Period period, String chartDir) throws IOException { ! LOG.info("Initializing image generator for " + report.getFileName()); index.appendConsoleArea("Initializing image generator for " + report.getFileName() + "."); TimeSeries timeSeries = report.getSlicer().getSeries(); --- 174,185 ---- File reportPNG = new File(imagePath); ChartUtilities.saveChartAsPNG(reportPNG, jfreechart, 800, 300); ! LOG.info("Image of the Decision " + decision.getFileName() + " generated (" + (System.currentTimeMillis() - time) + " miliseconds)"); ! index.appendConsoleArea("Image of the Decision " + decision.getFileName() + " generated (" + (System.currentTimeMillis() - time) + " miliseconds)"); return reportPNG; } public File generateImage(Report report, Period period, String chartDir) throws IOException { ! LOG.info("Initializing image generator for Report " + report.getFileName()); ! long time = System.currentTimeMillis(); index.appendConsoleArea("Initializing image generator for " + report.getFileName() + "."); TimeSeries timeSeries = report.getSlicer().getSeries(); *************** *** 181,186 **** File reportPNG = new File(imagePath); ChartUtilities.saveChartAsPNG(reportPNG, jfreechart, 800, 300); ! LOG.info("Ending image generator"); ! index.appendConsoleArea("Ending image generator."); return reportPNG; --- 192,197 ---- File reportPNG = new File(imagePath); ChartUtilities.saveChartAsPNG(reportPNG, jfreechart, 800, 300); ! LOG.info("Image of the Report " + report.getFileName() + " generated (" + (System.currentTimeMillis() - time) + " miliseconds)"); ! index.appendConsoleArea("Image of the Report " + report.getFileName() + " generated (" + (System.currentTimeMillis() - time) + " miliseconds)"); return reportPNG; |
|
From: xanaot <xa...@us...> - 2007-10-17 21:40:51
|
Update of /cvsroot/tail/Tail/src/java/net/sf/tail/report/xls In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv7305/src/java/net/sf/tail/report/xls Modified Files: WorkbookGenerator.java ReportXlsGenerator.java TimeSeriesXlsGenerator.java SliceXlsGenerator.java Log Message: Melhorando o logging do XLS Index: TimeSeriesXlsGenerator.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/report/xls/TimeSeriesXlsGenerator.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** TimeSeriesXlsGenerator.java 3 Oct 2007 23:56:58 -0000 1.3 --- TimeSeriesXlsGenerator.java 17 Oct 2007 21:40:53 -0000 1.4 *************** *** 35,38 **** --- 35,39 ---- public HSSFSheet generate(Report report) throws IOException { LOG.info("Initializing Time Series Generator"); + long time = System.currentTimeMillis(); int row = INDEX_FIRST_ROW; *************** *** 48,52 **** stylist.rearrangeSheet(sheet, 11); ! LOG.info("Ending Time Series Generator"); return this.sheet; } --- 49,55 ---- stylist.rearrangeSheet(sheet, 11); ! ! LOG.info("Time Series generated (" + (System.currentTimeMillis() - time )+ " miliseconds)"); ! return this.sheet; } *************** *** 72,76 **** private void generateInternalRow(int firtRow, TimeSeries series, HSSFCellStyle style) { int i; ! LOG.info("Initializing Internal rows"); for (i = series.getBegin(); i < series.getEnd(); i++) { Tick tick = series.getTick(i); --- 75,80 ---- private void generateInternalRow(int firtRow, TimeSeries series, HSSFCellStyle style) { int i; ! LOG.info("Initializing Internal rows of the Time Series"); ! long time = System.currentTimeMillis(); for (i = series.getBegin(); i < series.getEnd(); i++) { Tick tick = series.getTick(i); *************** *** 102,106 **** createCell(row, tick.getVolume(), (short) indexcolumn++, style); createCell(row, tick.getTrades(), (short) indexcolumn++, style); ! LOG.info("Ending Internal rows"); } --- 106,111 ---- createCell(row, tick.getVolume(), (short) indexcolumn++, style); createCell(row, tick.getTrades(), (short) indexcolumn++, style); ! ! LOG.info("Ending Internal of the Time Series (" + (System.currentTimeMillis() - time) + " miliseconds)"); } Index: SliceXlsGenerator.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/report/xls/SliceXlsGenerator.java,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** SliceXlsGenerator.java 10 Oct 2007 19:04:10 -0000 1.10 --- SliceXlsGenerator.java 17 Oct 2007 21:40:53 -0000 1.11 *************** *** 55,59 **** 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; --- 55,60 ---- public List<HSSFSheet> generate(Decision decision, List<AnalysisCriterion> criteria, Period period, File chart) throws IOException { ! LOG.info("Initializing XLS Decision for " + decision.getFileName()); ! long time = System.currentTimeMillis(); int row = INDEX_FIRST_ROW; *************** *** 75,79 **** sheets.add(sheet); ! LOG.info("Ending generator"); return sheets; } --- 76,81 ---- sheets.add(sheet); ! ! LOG.info("Decision "+ decision.getFileName() +" generated (" + (System.currentTimeMillis() - time) + " miliseconds)"); return sheets; } *************** *** 106,110 **** private int generateInternalRow(int firtRow, HSSFWorkbook wb, HSSFSheet sheet, Decision decision, List<AnalysisCriterion> criteria, HSSFCellStyle style) { ! LOG.info("Initializing Internal rows"); double calculate; int index = firtRow - INDEX_FIRST_ROW; --- 108,113 ---- private int generateInternalRow(int firtRow, HSSFWorkbook wb, HSSFSheet sheet, Decision decision, List<AnalysisCriterion> criteria, HSSFCellStyle style) { ! LOG.info("Initializing Internal rows of the Decision " + decision.getFileName()); ! long time = System.currentTimeMillis(); double calculate; int index = firtRow - INDEX_FIRST_ROW; *************** *** 137,141 **** } } ! LOG.info("Ending Internal rows"); return firtRow; } --- 140,145 ---- } } ! ! LOG.info("Ending Internal rows of the Decision " + decision.getFileName() + " (" + (System.currentTimeMillis() - time) + " miliseconds)"); return firtRow; } *************** *** 159,163 **** createCell(rowLast, calculate, (short) indexcolumn++, style); } ! LOG.info("Created summary"); } --- 163,167 ---- createCell(rowLast, calculate, (short) indexcolumn++, style); } ! LOG.info("Summary created"); } Index: WorkbookGenerator.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/report/xls/WorkbookGenerator.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** WorkbookGenerator.java 11 Oct 2007 00:17:20 -0000 1.2 --- WorkbookGenerator.java 17 Oct 2007 21:40:53 -0000 1.3 *************** *** 12,15 **** --- 12,16 ---- import net.sf.tail.report.Report; + import org.apache.log4j.Logger; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.joda.time.Period; *************** *** 17,20 **** --- 18,23 ---- public class WorkbookGenerator { + private static final Logger LOG = Logger.getLogger(WorkbookGenerator.class); + public HSSFWorkbook generate(Report report, Period period, List<File> charts) throws IOException { List<AnalysisCriterion> criteria = new LinkedList<AnalysisCriterion>(); *************** *** 24,28 **** } ! 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)); --- 27,35 ---- } ! public HSSFWorkbook generate(Report report, List<AnalysisCriterion> criteria, Period period, List<File> charts) ! throws IOException { ! long time = System.currentTimeMillis(); ! LOG.info("Initializing the generation of the XLS"); ! List<File> chartFile = new ArrayList<File>(); chartFile.add(charts.remove(0)); *************** *** 39,43 **** reportXls.generate(report, criteria, period, chartFile); slicerXls.generate(report, criteria2, period, charts); ! for (File file : charts) { file.delete(); --- 46,50 ---- reportXls.generate(report, criteria, period, chartFile); slicerXls.generate(report, criteria2, period, charts); ! for (File file : charts) { file.delete(); *************** *** 47,50 **** --- 54,58 ---- } + LOG.info("XLS generated (" + (System.currentTimeMillis() - time) + " miliseconds)"); return workbook; } Index: ReportXlsGenerator.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/report/xls/ReportXlsGenerator.java,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** ReportXlsGenerator.java 10 Oct 2007 19:04:10 -0000 1.10 --- ReportXlsGenerator.java 17 Oct 2007 21:40:53 -0000 1.11 *************** *** 30,34 **** private CellStylist stylist; ! private static final Logger LOG = Logger.getLogger(ReportXlsGenerator.class); --- 30,34 ---- private CellStylist stylist; ! private static final Logger LOG = Logger.getLogger(ReportXlsGenerator.class); *************** *** 47,52 **** } ! 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; --- 47,54 ---- } ! public List<HSSFSheet> generate(Report report, List<AnalysisCriterion> criteria, Period period, List<File> charts) ! throws IOException { ! LOG.info("Initializing XLS Report"); ! long time = System.currentTimeMillis(); int row = INDEX_FIRST_ROW; *************** *** 71,75 **** sheets.add(sheet); ! LOG.info("Ending Report Generator"); return sheets; } --- 73,77 ---- sheets.add(sheet); ! LOG.info("XLS Report generated (" + (System.currentTimeMillis() - time) + " miliseconds)"); return sheets; } *************** *** 104,109 **** createCell(rowFirst, " - ", (short) indexcolumn++, style); ! for (int i=0; i < criteria.size(); i++) ! { createCell(rowFirst, " - ", (short) indexcolumn++, style); } --- 106,110 ---- createCell(rowFirst, " - ", (short) indexcolumn++, style); ! for (int i = 0; i < criteria.size(); i++) { createCell(rowFirst, " - ", (short) indexcolumn++, style); } *************** *** 114,118 **** private int generateInternalRow(int firtRow, HSSFSheet sheet, Report report, List<AnalysisCriterion> criteria, HSSFCellStyle style) { ! LOG.info("Initializing Internal rows"); double calculate; int index = firtRow - INDEX_FIRST_ROW; --- 115,120 ---- private int generateInternalRow(int firtRow, HSSFSheet sheet, Report report, List<AnalysisCriterion> criteria, HSSFCellStyle style) { ! LOG.info("Initializing Internal rows of the Report"); ! long time = System.currentTimeMillis(); double calculate; int index = firtRow - INDEX_FIRST_ROW; *************** *** 120,124 **** int indexcolumn = 1; HSSFRow rowDecision = sheet.createRow((short) firtRow++); ! createCell(rowDecision, index++, (short) indexcolumn++, style); createCell(rowDecision, decision.getSeries().getTick(decision.getSeries().getBegin()).getDateName(), --- 122,126 ---- int indexcolumn = 1; HSSFRow rowDecision = sheet.createRow((short) firtRow++); ! createCell(rowDecision, index++, (short) indexcolumn++, style); createCell(rowDecision, decision.getSeries().getTick(decision.getSeries().getBegin()).getDateName(), *************** *** 132,136 **** } } ! LOG.info("Ending Internal rows"); return firtRow; } --- 134,138 ---- } } ! LOG.info("Ending Internal rows of the Report (" + (System.currentTimeMillis() - time) + " miliseconds)"); return firtRow; } *************** *** 153,157 **** createCell(rowLast, calculate, (short) indexcolumn++, style); } ! LOG.info("Created summary"); } --- 155,159 ---- createCell(rowLast, calculate, (short) indexcolumn++, style); } ! LOG.info("Summary created"); } |
|
From: Carlos <ma...@us...> - 2007-10-17 21:37:44
|
Update of /cvsroot/tail/Tail/src/test/net/sf/tail/graphics In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv6029/src/test/net/sf/tail/graphics Modified Files: CriteriaDatasetTest.java Log Message: Atualização... coloquei o chart na tela. Index: CriteriaDatasetTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/graphics/CriteriaDatasetTest.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** CriteriaDatasetTest.java 17 Oct 2007 19:06:42 -0000 1.1 --- CriteriaDatasetTest.java 17 Oct 2007 21:37:43 -0000 1.2 *************** *** 10,14 **** import net.sf.tail.AnalysisCriterion; - import net.sf.tail.DummyStock; import net.sf.tail.OperationType; import net.sf.tail.Strategy; --- 10,13 ---- *************** *** 65,69 **** ticks.add(new Tick(new DateTime().withDate(2007, 6, 15), 8d)); ! series = new DummyStock(new DefaultTimeSeries(ticks)); reports = new LinkedList<Report>(); --- 64,68 ---- ticks.add(new Tick(new DateTime().withDate(2007, 6, 15), 8d)); ! series = new DefaultTimeSeries(ticks); reports = new LinkedList<Report>(); *************** *** 130,134 **** strategies4.add(new IndicatorOverIndicatorStrategy(sindicator2, sindicator1)); ticks2.add(new Tick(new DateTime().withDate(2007, 6, 10), 4d)); ! TimeSeries series2 = new DummyStock(new DefaultTimeSeries(ticks2)); WalkForward walk = new WalkForward(new HigherValueEvaluator(new HistoryRunner(OperationType.BUY))); TimeSeriesSlicer slice = new RegularSlicer(series2, new Period().withDays(2)); --- 129,133 ---- strategies4.add(new IndicatorOverIndicatorStrategy(sindicator2, sindicator1)); ticks2.add(new Tick(new DateTime().withDate(2007, 6, 10), 4d)); ! TimeSeries series2 = new DefaultTimeSeries(ticks2); WalkForward walk = new WalkForward(new HigherValueEvaluator(new HistoryRunner(OperationType.BUY))); TimeSeriesSlicer slice = new RegularSlicer(series2, new Period().withDays(2)); *************** *** 163,167 **** strategies4.add(new IndicatorOverIndicatorStrategy(sindicator2, sindicator1)); ticks2.add(new Tick(new DateTime().withDate(2007, 6, 10), 4d)); ! TimeSeries series2 = new DummyStock(new DefaultTimeSeries(ticks2)); WalkForward walk = new WalkForward(new HigherValueEvaluator(new HistoryRunner(OperationType.BUY))); TimeSeriesSlicer slice = new RegularSlicer(series2, new Period().withDays(2)); --- 162,166 ---- strategies4.add(new IndicatorOverIndicatorStrategy(sindicator2, sindicator1)); ticks2.add(new Tick(new DateTime().withDate(2007, 6, 10), 4d)); ! TimeSeries series2 = new DefaultTimeSeries(ticks2); WalkForward walk = new WalkForward(new HigherValueEvaluator(new HistoryRunner(OperationType.BUY))); TimeSeriesSlicer slice = new RegularSlicer(series2, new Period().withDays(2)); |
|
From: Carlos <ma...@us...> - 2007-10-17 21:37:44
|
Update of /cvsroot/tail/Tail/src/java/net/sf/tail/graphics In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv6029/src/java/net/sf/tail/graphics Modified Files: SeriesDataset.java Log Message: Atualização... coloquei o chart na tela. Index: SeriesDataset.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/graphics/SeriesDataset.java,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** SeriesDataset.java 17 Oct 2007 19:06:39 -0000 1.8 --- SeriesDataset.java 17 Oct 2007 21:37:43 -0000 1.9 *************** *** 8,11 **** --- 8,12 ---- import net.sf.tail.TimeSeries; import net.sf.tail.Trade; + import net.sf.tail.indicator.simple.ClosePriceIndicator; import org.jfree.data.DefaultKeyedValues2D; *************** *** 13,16 **** --- 14,19 ---- import org.jfree.data.general.AbstractDataset; + import edu.emory.mathcs.backport.java.util.Collections; + @SuppressWarnings("unchecked") public class SeriesDataset extends AbstractDataset implements CategoryDataset { *************** *** 38,46 **** this.lastIndex = lastIndex; this.series = series; ! this.DATASET_SIZE = lastIndex - firstIndex; loadValues(firstIndex, lastIndex); } public SeriesDataset(TimeSeries timeSeries, List<Indicator<? extends Number>> indicators, List<Trade> trades) { this(timeSeries, indicators, timeSeries.getBegin(), timeSeries.getEnd(), trades); --- 41,53 ---- this.lastIndex = lastIndex; this.series = series; ! this.DATASET_SIZE = lastIndex - firstIndex + 1; loadValues(firstIndex, lastIndex); } + public SeriesDataset(TimeSeries timeSeries, int seriesSize) { + this(timeSeries, Collections.nCopies(1, new ClosePriceIndicator(timeSeries)), timeSeries.getBegin(), timeSeries.getBegin() + seriesSize - 1); + } + public SeriesDataset(TimeSeries timeSeries, List<Indicator<? extends Number>> indicators, List<Trade> trades) { this(timeSeries, indicators, timeSeries.getBegin(), timeSeries.getEnd(), trades); |
|
From: Carlos <ma...@us...> - 2007-10-17 21:37:37
|
Update of /cvsroot/tail/TailS/src/java/net/sf/tails/swing/frame In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv6011/src/java/net/sf/tails/swing/frame Modified Files: Index.java Log Message: Atualização... coloquei o chart na tela. Index: Index.java =================================================================== RCS file: /cvsroot/tail/TailS/src/java/net/sf/tails/swing/frame/Index.java,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** Index.java 15 Oct 2007 21:22:47 -0000 1.23 --- Index.java 17 Oct 2007 21:37:39 -0000 1.24 *************** *** 29,32 **** --- 29,36 ---- import net.sf.tail.analysis.StockAnalysis; + import net.sf.tail.graphics.CriteriaChart; + import net.sf.tail.graphics.CriteriaDataset; + import net.sf.tail.graphics.SeriesChart; + import net.sf.tail.graphics.SeriesDataset; import net.sf.tail.io.StockAnalysisSerializer; import net.sf.tails.swing.frame.report.NewReportFrame; *************** *** 35,38 **** --- 39,44 ---- import net.sf.tails.swing.helper.FrameHelper; + import org.jfree.chart.ChartPanel; + public class Index extends javax.swing.JFrame { private static final ResourceBundle messageBundle = ResourceBundle.getBundle("net.sf.tails.i18n.Messages"); *************** *** 52,55 **** --- 58,64 ---- private javax.swing.JSeparator separator2; private javax.swing.JMenuItem exitMenuItem; + private javax.swing.JTabbedPane chartsPane; + private javax.swing.JPanel seriesPanel; + private javax.swing.JPanel criteriaPanel; private javax.swing.JButton addReportButton; *************** *** 58,63 **** private javax.swing.JScrollPane reportScrollPane; private javax.swing.JTable reportTable; - private javax.swing.JLabel seriesIntervalLabel; - private javax.swing.JLabel stockNameLabel; private javax.swing.JFileChooser directoryFileChooser; private javax.swing.JFileChooser xlsFileChooser; --- 67,70 ---- *************** *** 111,114 **** --- 118,124 ---- consoleArea = new javax.swing.JTextArea(); reportProgress = new javax.swing.JProgressBar(); + chartsPane = new javax.swing.JTabbedPane(); + seriesPanel = new javax.swing.JPanel(); + criteriaPanel = new javax.swing.JPanel(); addReportButton = new javax.swing.JButton(); *************** *** 117,122 **** reportScrollPane = new javax.swing.JScrollPane(); reportTable = new javax.swing.JTable(); - seriesIntervalLabel = new javax.swing.JLabel(); - stockNameLabel = new javax.swing.JLabel(); directoryFileChooser = new javax.swing.JFileChooser(); xlsFileChooser = new javax.swing.JFileChooser(); --- 127,130 ---- *************** *** 143,155 **** htmlFileChooser.setCurrentDirectory(new File("Data/Html")); - stockNameLabel.setText("Stock Name: "); - - seriesIntervalLabel.setText("Series Interval: "); - reportScrollPane.setAutoscrolls(true); reportScrollPane.setHorizontalScrollBar(null); reportScrollPane.setWheelScrollingEnabled(true); ! consoleScrollPane.setBorder(javax.swing.BorderFactory.createEtchedBorder()); consoleScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); consoleScrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); --- 151,159 ---- htmlFileChooser.setCurrentDirectory(new File("Data/Html")); reportScrollPane.setAutoscrolls(true); reportScrollPane.setHorizontalScrollBar(null); reportScrollPane.setWheelScrollingEnabled(true); ! consoleScrollPane.setBorder(javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createEtchedBorder(), "Console")); consoleScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); consoleScrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED); *************** *** 157,166 **** consoleScrollPane.setViewportView(consoleArea); consoleScrollPane.setWheelScrollingEnabled(true); ! if (stockAnalysis != null) { ! stockNameLabel.setText(stockNameLabel.getText() + stockAnalysis.getStock().getName()); ! seriesIntervalLabel.setText(seriesIntervalLabel.getText() + stockAnalysis.getSlicer().getSeries().getTick(stockAnalysis.getSlicer().getSeries().getBegin()).getDateName() + ! " - " + stockAnalysis.getSlicer().getSeries().getTick(stockAnalysis.getSlicer().getSeries().getEnd()).getDateName()); reportTable.setAutoCreateRowSorter(true); --- 161,169 ---- consoleScrollPane.setViewportView(consoleArea); consoleScrollPane.setWheelScrollingEnabled(true); ! if (stockAnalysis != null) { ! //stockAnalysis.getSlicer().getSeries().getTick(stockAnalysis.getSlicer().getSeries().getBegin()).getDateName() + ! //" - " + stockAnalysis.getSlicer().getSeries().getTick(stockAnalysis.getSlicer().getSeries().getEnd()).getDateName()); reportTable.setAutoCreateRowSorter(true); *************** *** 168,176 **** reportTable.setGridColor(new java.awt.Color(255, 255, 255)); reportTable.setEnabled(true); } else ! { ! stockNameLabel.setText(stockNameLabel.getText() + "No Stock"); ! seriesIntervalLabel.setText(seriesIntervalLabel.getText() + " -"); reportTable.setAutoCreateRowSorter(false); --- 171,192 ---- reportTable.setGridColor(new java.awt.Color(255, 255, 255)); reportTable.setEnabled(true); + + SeriesDataset seriesDataset = new SeriesDataset(stockAnalysis.getSlicer().getSeries(), 20); + SeriesChart seriesChart = new SeriesChart(seriesDataset); + seriesPanel = new org.jfree.chart.ChartPanel(seriesChart.createChart("")); + + chartsPane.addTab(stockAnalysis.getStock().getName(), seriesPanel); + + if (stockAnalysis.getReports().size() > 0) + { + CriteriaDataset criteriaDataset = new CriteriaDataset(stockAnalysis.getReports(), stockAnalysis.getSlicer().getSeries(), 20); + CriteriaChart criteriaChart = new CriteriaChart(criteriaDataset); + criteriaPanel = new ChartPanel(criteriaChart.createChart("")); + + chartsPane.addTab("Reports", criteriaPanel); + } } else ! { reportTable.setAutoCreateRowSorter(false); *************** *** 178,184 **** reportTable.setGridColor(new java.awt.Color(255, 255, 255)); reportTable.setEnabled(true); } - reportScrollPane.setBorder(javax.swing.BorderFactory.createEtchedBorder()); reportScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); --- 194,203 ---- reportTable.setGridColor(new java.awt.Color(255, 255, 255)); reportTable.setEnabled(true); + + javax.swing.JLabel noChartsLabel = new javax.swing.JLabel(); + noChartsLabel.setText("- No Charts Available"); + chartsPane.addTab("Charts", noChartsLabel); } reportScrollPane.setBorder(javax.swing.BorderFactory.createEtchedBorder()); reportScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); *************** *** 296,300 **** .addComponent(reportScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 776, Short.MAX_VALUE) .addComponent(consoleScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 776, Short.MAX_VALUE) ! .addComponent(stockNameLabel) .addGroup(layout.createSequentialGroup() .addComponent(addReportButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) --- 315,319 ---- .addComponent(reportScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 776, Short.MAX_VALUE) .addComponent(consoleScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 776, Short.MAX_VALUE) ! .addComponent(chartsPane, javax.swing.GroupLayout.DEFAULT_SIZE, 776, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() .addComponent(addReportButton, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) *************** *** 304,309 **** .addComponent(xlsButton) .addGap(200) ! .addComponent(reportProgress)) ! .addComponent(seriesIntervalLabel)) .addContainerGap()) ); --- 323,327 ---- .addComponent(xlsButton) .addGap(200) ! .addComponent(reportProgress))) .addContainerGap()) ); *************** *** 311,333 **** layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() ! .addContainerGap() ! .addComponent(stockNameLabel) ! .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) ! .addComponent(seriesIntervalLabel) ! .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addComponent(xlsButton, 0, 0, Short.MAX_VALUE) .addComponent(htmlButton, 0, 0, Short.MAX_VALUE) ! .addComponent(addReportButton, javax.swing.GroupLayout.PREFERRED_SIZE, 17, Short.MAX_VALUE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) ! .addComponent(reportScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE) ! .addGap(20) ! .addComponent(consoleScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 130, javax.swing.GroupLayout.PREFERRED_SIZE) ! .addContainerGap(163, Short.MAX_VALUE) ! .addComponent(reportProgress)) ); pack(); ! }// </editor-fold> private void xlsButtonActionPerformed(java.awt.event.ActionEvent evt) { --- 329,351 ---- layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(layout.createSequentialGroup() ! .addContainerGap(10, 10) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) .addComponent(xlsButton, 0, 0, Short.MAX_VALUE) .addComponent(htmlButton, 0, 0, Short.MAX_VALUE) ! .addComponent(addReportButton, javax.swing.GroupLayout.PREFERRED_SIZE, 17, Short.MAX_VALUE) ! .addComponent(reportProgress)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) ! .addGap(10) ! .addComponent(chartsPane, javax.swing.GroupLayout.PREFERRED_SIZE, 180, Short.MAX_VALUE) ! .addGap(10) ! .addComponent(reportScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 110, javax.swing.GroupLayout.PREFERRED_SIZE) ! .addGap(4) ! .addComponent(consoleScrollPane, javax.swing.GroupLayout.PREFERRED_SIZE, 120, javax.swing.GroupLayout.PREFERRED_SIZE) ! .addContainerGap(10, 10) ! ) ); pack(); ! } private void xlsButtonActionPerformed(java.awt.event.ActionEvent evt) { *************** *** 422,428 **** public void loadStockAnalysis(StockAnalysis analysis) { - stockNameLabel.setText("Stock Name: " + analysis.getStock().getName()); - seriesIntervalLabel.setText("Series Interval: " + analysis.getSlicer().getSeries().getTick(analysis.getSlicer().getSeries().getBegin()).getDateName() + - " - " + analysis.getSlicer().getSeries().getTick(analysis.getSlicer().getSeries().getEnd()).getDateName()); reportTable.setVisible(true); reportTable.setAutoCreateRowSorter(true); --- 440,443 ---- *************** *** 433,436 **** --- 448,467 ---- reportScrollPane.setViewportView(reportTable); + + SeriesDataset seriesDataset = new SeriesDataset(analysis.getSlicer().getSeries(), analysis.getSlicer().getSeries().getSize()); + SeriesChart seriesChart = new SeriesChart(seriesDataset); + seriesPanel = new org.jfree.chart.ChartPanel(seriesChart.createChart("")); + + chartsPane.removeAll(); + chartsPane.addTab(analysis.getStock().getName(), seriesPanel); + + if (analysis.getReports().size() > 0) + { + CriteriaDataset criteriaDataset = new CriteriaDataset(analysis.getReports(), analysis.getSlicer().getSeries(), analysis.getSlicer().getSeries().getSize()); + CriteriaChart criteriaChart = new CriteriaChart(criteriaDataset); + criteriaPanel = new ChartPanel(criteriaChart.createChart("")); + + chartsPane.addTab("Reports", criteriaPanel); + } this.stockAnalysis = analysis; |
|
From: Carlos <ma...@us...> - 2007-10-17 21:37:37
|
Update of /cvsroot/tail/TailS/src/java/net/sf/tails/swing In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv6011/src/java/net/sf/tails/swing Modified Files: Main.java Log Message: Atualização... coloquei o chart na tela. Index: Main.java =================================================================== RCS file: /cvsroot/tail/TailS/src/java/net/sf/tails/swing/Main.java,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** Main.java 17 Oct 2007 18:59:58 -0000 1.9 --- Main.java 17 Oct 2007 21:37:39 -0000 1.10 *************** *** 24,32 **** */ public static void main(String[] args) { ! try { ! UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); ! } catch (Exception e) { ! e.printStackTrace(); ! } new Index().setVisible(true); } --- 24,32 ---- */ public static void main(String[] args) { ! // try { ! // UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); ! // } catch (Exception e) { ! // e.printStackTrace(); ! // } new Index().setVisible(true); } |
|
From: Thies <tg...@us...> - 2007-10-17 21:11:46
|
Update of /cvsroot/tail/Tail/src/java/net/sf/tail/analysis/criteria In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv27126/src/java/net/sf/tail/analysis/criteria Modified Files: NumberOfTicksCriterion.java Log Message: acerto no criterio Index: NumberOfTicksCriterion.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/analysis/criteria/NumberOfTicksCriterion.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** NumberOfTicksCriterion.java 3 Oct 2007 18:57:44 -0000 1.7 --- NumberOfTicksCriterion.java 17 Oct 2007 21:11:48 -0000 1.8 *************** *** 19,25 **** for (Trade trade : trades) { ! nTicks += trade.getExit().getIndex() - trade.getEntry().getIndex(); } ! return nTicks + 1; } --- 19,25 ---- for (Trade trade : trades) { ! nTicks += 1 + trade.getExit().getIndex() - trade.getEntry().getIndex(); } ! return nTicks; } |
|
From: Thies <tg...@us...> - 2007-10-17 21:11:46
|
Update of /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/criteria In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv27126/src/test/net/sf/tail/analysis/criteria Modified Files: NumberOfTicksCriterionTest.java Log Message: acerto no criterio Index: NumberOfTicksCriterionTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/analysis/criteria/NumberOfTicksCriterionTest.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** NumberOfTicksCriterionTest.java 3 Oct 2007 18:57:45 -0000 1.4 --- NumberOfTicksCriterionTest.java 17 Oct 2007 21:11:49 -0000 1.5 *************** *** 36,40 **** AnalysisCriterion buyAndHold = new NumberOfTicksCriterion(); ! assertEquals(5d, buyAndHold.calculate(series, trades)); } --- 36,40 ---- AnalysisCriterion buyAndHold = new NumberOfTicksCriterion(); ! assertEquals(6d, buyAndHold.calculate(series, trades)); } *************** *** 55,59 **** AnalysisCriterion buyAndHold = new NumberOfTicksCriterion(); ! assertEquals(5d, buyAndHold.summarize(series, decisions)); } } --- 55,59 ---- AnalysisCriterion buyAndHold = new NumberOfTicksCriterion(); ! assertEquals(6d, buyAndHold.summarize(series, decisions)); } } |
|
From: Thies <tg...@us...> - 2007-10-17 20:06:14
|
Update of /cvsroot/tail/Tail/src/test/net/sf/tail/indicator/tracker In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv30173/src/test/net/sf/tail/indicator/tracker Modified Files: ParabolicSarIndicatorTest.java Log Message: Mudancas no parabolic sar Index: ParabolicSarIndicatorTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/indicator/tracker/ParabolicSarIndicatorTest.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** ParabolicSarIndicatorTest.java 17 Oct 2007 18:29:56 -0000 1.3 --- ParabolicSarIndicatorTest.java 17 Oct 2007 20:06:17 -0000 1.4 *************** *** 21,36 **** ticks.add(new Tick(0, 6, 9, 4)); ticks.add(new Tick(0, 11, 15, 9)); ! ticks.add(new Tick(0, 13, 14, 9)); ParabolicSarIndicator sar = new ParabolicSarIndicator(new SampleTimeSeries(ticks), 1); assertEquals(10d, sar.getValue(0)); ! double value = 10d + 0.02d * (6d - 10d); ! assertEquals(value , sar.getValue(1)); ! value = value + (0.04d * (4d - value)); ! assertEquals(value, sar.getValue(2)); ! value = value + 0.02d * (15d - value); ! assertEquals(value, sar.getValue(3)); ! value = value + 0.02d * (14d - value); ! assertEquals(value, sar.getValue(4)); } --- 21,32 ---- ticks.add(new Tick(0, 6, 9, 4)); ticks.add(new Tick(0, 11, 15, 9)); ! ticks.add(new Tick(0, 13, 15, 9)); ParabolicSarIndicator sar = new ParabolicSarIndicator(new SampleTimeSeries(ticks), 1); assertEquals(10d, sar.getValue(0)); ! assertEquals(8d, sar.getValue(1)); ! assertEquals(11d, sar.getValue(2)); ! assertEquals(4d, sar.getValue(3)); ! assertEquals(4d, sar.getValue(4)); } *************** *** 40,60 **** { List<Tick> ticks = new ArrayList<Tick>(); ! ticks.add(new Tick(0, 10, 16, 11)); ! ticks.add(new Tick(0, 12, 15, 12)); ! ticks.add(new Tick(0, 13, 12, 11)); ! ticks.add(new Tick(0, 14, 13, 7)); ticks.add(new Tick(0, 9, 15, 9)); ! ParabolicSarIndicator sar = new ParabolicSarIndicator(new SampleTimeSeries(ticks), 3); assertEquals(10d, sar.getValue(0)); ! double value = 10d + 0.02d * (16d - 10d); ! assertEquals(value, sar.getValue(1)); ! value = value + 0.02d * (16d - value); ! assertEquals(value, sar.getValue(2)); ! value = value + 0.02d * (15d - value); ! assertEquals(value, sar.getValue(3)); ! value = value + 0.02d * (7d - value); ! assertEquals(value, sar.getValue(4)); } @Test --- 36,53 ---- { List<Tick> ticks = new ArrayList<Tick>(); ! ticks.add(new Tick(0, 10, 13, 11)); ! ticks.add(new Tick(0, 10, 15, 13)); ! ticks.add(new Tick(0, 12, 18, 11)); ! ticks.add(new Tick(0, 10, 15, 9)); ticks.add(new Tick(0, 9, 15, 9)); ! ParabolicSarIndicator sar = new ParabolicSarIndicator(new SampleTimeSeries(ticks), 1); assertEquals(10d, sar.getValue(0)); ! assertEquals(10d, sar.getValue(1)); ! assertEquals(0.04 * (18d - 10) + 10d, sar.getValue(2)); ! assertEquals(18d, sar.getValue(3)); ! assertEquals(18d, sar.getValue(3)); ! assertEquals(18d, sar.getValue(4)); } @Test *************** *** 63,83 **** List<Tick> ticks = new ArrayList<Tick>(); ticks.add(new Tick(0, 10, 13, 11)); ! ticks.add(new Tick(0, 17, 15, 12)); ticks.add(new Tick(0, 18, 16, 14)); ticks.add(new Tick(0, 19, 17, 12)); ! ticks.add(new Tick(0, 20, 16, 9)); ! ParabolicSarIndicator sar = new ParabolicSarIndicator(new SampleTimeSeries(ticks), 2); ! double value = 10d; ! assertEquals(value, sar.getValue(0)); ! value = value + 0.02d * (15d - value); ! assertEquals(value, sar.getValue(1)); ! value = value + 0.04d * (16d - value); ! assertEquals(value, sar.getValue(2)); ! value = value + 0.06d * (17d - value); ! assertEquals(value, sar.getValue(3)); ! value = value + 0.06d * (17d - value); ! assertEquals(value, sar.getValue(4)); } --- 56,71 ---- List<Tick> ticks = new ArrayList<Tick>(); ticks.add(new Tick(0, 10, 13, 11)); ! ticks.add(new Tick(0, 17, 15, 11.38)); ticks.add(new Tick(0, 18, 16, 14)); ticks.add(new Tick(0, 19, 17, 12)); ! ticks.add(new Tick(0, 20, 18, 9)); ! ParabolicSarIndicator sar = new ParabolicSarIndicator(new SampleTimeSeries(ticks), 1); ! assertEquals(10d, sar.getValue(0)); ! assertEquals(17d, sar.getValue(1)); ! assertEquals(11.38d, sar.getValue(2)); ! assertEquals(11.38d, sar.getValue(3)); ! assertEquals(18d, sar.getValue(4)); } *************** *** 87,110 **** List<Tick> ticks = new ArrayList<Tick>(); ticks.add(new Tick(0, 20, 18, 9)); ! ticks.add(new Tick(0, 19, 17, 8)); ! ticks.add(new Tick(0, 18, 16, 9)); ! ticks.add(new Tick(0, 17, 15, 9)); ! ticks.add(new Tick(0, 10, 13, 6)); ! ticks.add(new Tick(0, 9, 30, 8)); ! ParabolicSarIndicator sar = new ParabolicSarIndicator(new SampleTimeSeries(ticks), 3); ! double value = 20d; ! assertEquals(value, sar.getValue(0)); ! value = value + 0.02d * (8d - value); ! assertEquals(value, sar.getValue(1)); ! value = value + 0.02d * (8d - value); ! assertEquals(value, sar.getValue(2)); ! value = value + 0.02d * (8d - value); ! assertEquals(value, sar.getValue(3)); ! value = value + 0.04d * (6d - value); ! assertEquals(value, sar.getValue(4)); ! value = value + 0.04d * (6d - value); ! assertEquals(value, sar.getValue(5)); } --- 75,93 ---- List<Tick> ticks = new ArrayList<Tick>(); ticks.add(new Tick(0, 20, 18, 9)); ! ticks.add(new Tick(0, 19, 17, 12)); ! ticks.add(new Tick(0, 18, 16, 14)); ! ticks.add(new Tick(0, 17, 15, 11.38)); ! ticks.add(new Tick(0, 10, 13, 11)); ! ticks.add(new Tick(0, 10, 30, 11)); ! ParabolicSarIndicator sar = new ParabolicSarIndicator(new SampleTimeSeries(ticks), 1); ! assertEquals(20d, sar.getValue(0)); ! assertEquals(19d, sar.getValue(1)); ! assertEquals(0.04d * (14d - 19d) + 19d, sar.getValue(2)); ! double value = 0.06d * (11.38d - 18.8d) + 18.8d; ! assertEquals(0.06d * (11.38d - 18.8d) + 18.8d, sar.getValue(3)); ! assertEquals(0.08d * (11d - value) + value, sar.getValue(4)); ! assertEquals(11d, sar.getValue(5)); } |
|
From: Thies <tg...@us...> - 2007-10-17 20:06:14
|
Update of /cvsroot/tail/Tail/src/java/net/sf/tail/indicator/tracker In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv30173/src/java/net/sf/tail/indicator/tracker Modified Files: ParabolicSarIndicator.java Log Message: Mudancas no parabolic sar Index: ParabolicSarIndicator.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/indicator/tracker/ParabolicSarIndicator.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** ParabolicSarIndicator.java 17 Oct 2007 18:29:56 -0000 1.3 --- ParabolicSarIndicator.java 17 Oct 2007 20:06:16 -0000 1.4 *************** *** 15,31 **** private double extremePoint; ! ! private final HighestValueIndicator highestValueIndicator; ! private final LowestValueIndicator lowestValueIndicator; ! private Boolean isDownTrade; public ParabolicSarIndicator(TimeSeries series, int timeFrame) { this.acceleration = 0.02d; this.series = series; - this.highestValueIndicator = new HighestValueIndicator(new MaxPriceIndicator(series), timeFrame); this.lowestValueIndicator = new LowestValueIndicator(new MinPriceIndicator(series), timeFrame); ! isDownTrade = null; } --- 15,31 ---- private double extremePoint; ! private final LowestValueIndicator lowestValueIndicator; + + private final HighestValueIndicator highestValueIndicator; ! private final int timeFrame; public ParabolicSarIndicator(TimeSeries series, int timeFrame) { this.acceleration = 0.02d; this.series = series; this.lowestValueIndicator = new LowestValueIndicator(new MinPriceIndicator(series), timeFrame); ! this.highestValueIndicator = new HighestValueIndicator(new MaxPriceIndicator(series), timeFrame); ! this.timeFrame = timeFrame; } *************** *** 33,80 **** protected Double calculate(int index) { ! if (index == 0) { extremePoint = series.getTick(index).getClosePrice(); return extremePoint; } ! ! //DownTrend ! if (series.getTick(index - 1).getClosePrice() >= series.getTick(index).getClosePrice()) { ! double actualLowest = lowestValueIndicator.getValue(index); ! if(isDownTrade == null || !isDownTrade) { ! isDownTrade = true; ! acceleration = 0.02d; ! extremePoint = actualLowest; } ! else if(actualLowest != extremePoint) { ! if(actualLowest < extremePoint) ! acceleration = acceleration >= 0.2d? 0.2d : acceleration + 0.02d; ! extremePoint = actualLowest; } - } //UpTrend else { ! double actualHighest = highestValueIndicator.getValue(index); ! if(isDownTrade == null || isDownTrade) { ! isDownTrade = false; ! acceleration = 0.02d; ! extremePoint = actualHighest; } ! else if(actualHighest != extremePoint){ ! if(actualHighest > extremePoint) ! acceleration = acceleration >= 0.2d? 0.2d : acceleration + 0.02d; ! extremePoint = actualHighest; ! } } ! return getValue(index - 1) + acceleration * (extremePoint - getValue(index - 1)); } @Override public String getName() { ! return getClass().getSimpleName(); } --- 33,99 ---- protected Double calculate(int index) { ! if (index <= 1) { extremePoint = series.getTick(index).getClosePrice(); return extremePoint; } ! double sar; ! ! // trend switch ! if (series.getTick(index - 2).getClosePrice() > series.getTick(index - 1).getClosePrice() && series.getTick( ! index - 1).getClosePrice() < series.getTick(index).getClosePrice()) ! { ! sar = extremePoint; ! extremePoint = highestValueIndicator.getValue(index); ! acceleration = 0.02; ! } ! // trend switch ! else if((series.getTick(index - 2).getClosePrice() < series.getTick(index - 1).getClosePrice() && series ! .getTick(index - 1).getClosePrice() > series.getTick(index).getClosePrice())) { ! sar = extremePoint; ! extremePoint = lowestValueIndicator.getValue(index); ! acceleration = 0.02; ! ! } ! //DownTrend ! else if (series.getTick(index - 1).getClosePrice() >= series.getTick(index).getClosePrice()) { ! double lowestValue = lowestValueIndicator.getValue(index); ! if (extremePoint > lowestValue) { ! acceleration = acceleration >= 0.19 ? 0.2 : acceleration + 0.02d; ! extremePoint = lowestValue; } ! sar = acceleration * (extremePoint - getValue(index - 1)) + getValue(index - 1); ! if (sar <= series.getTick(index - 1).getMaxPrice()) ! sar = series.getTick(index - 1).getMaxPrice(); ! else if (sar <= series.getTick(index - 2).getMaxPrice()) ! sar = series.getTick(index - 2).getMaxPrice(); ! if (sar <= series.getTick(index).getMaxPrice()) { ! sar = series.getTick(index).getMinPrice(); } } //UpTrend else { ! double highestValue = highestValueIndicator.getValue(index); ! if (extremePoint < highestValue) { ! acceleration = acceleration >= 0.19 ? 0.2 : acceleration + 0.02; ! extremePoint = highestValue; } ! sar = acceleration * (extremePoint - getValue(index - 1)) + getValue(index - 1); ! if (sar >= series.getTick(index - 1).getMinPrice()) ! sar = series.getTick(index - 1).getMinPrice(); ! else if (sar >= series.getTick(index - 2).getMinPrice()) ! sar = series.getTick(index - 2).getMinPrice(); ! if (sar >= series.getTick(index).getMinPrice()) { ! sar = series.getTick(index).getMaxPrice(); } } ! return sar; } @Override public String getName() { ! return getClass().getSimpleName() + " timeFrame: " + timeFrame; } |
|
From: Carlos <ma...@us...> - 2007-10-17 19:06:43
|
Update of /cvsroot/tail/Tail/src/java/net/sf/tail/graphics In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv2952/src/java/net/sf/tail/graphics Modified Files: SeriesDataset.java Added Files: CriteriaChart.java CriteriaDataset.java Log Message: Commit do novo chart que será usado no TailS. --- NEW FILE: CriteriaDataset.java --- package net.sf.tail.graphics; import java.util.List; import net.sf.tail.TimeSeries; import net.sf.tail.report.Report; import org.jfree.data.DefaultKeyedValues2D; import org.jfree.data.category.CategoryDataset; import org.jfree.data.general.AbstractDataset; @SuppressWarnings("unchecked") public class CriteriaDataset extends AbstractDataset implements CategoryDataset { private static final long serialVersionUID = -7204964027452086107L; private DefaultKeyedValues2D data; private final int DATASET_SIZE; private List<Report> reports; private int firstIndex; private int lastIndex; private TimeSeries series; public CriteriaDataset(List<Report> reports, TimeSeries series, int datasetSize) { this.data = new DefaultKeyedValues2D(); this.reports = reports; this.series = series; this.DATASET_SIZE = datasetSize; this.firstIndex = series.getBegin(); this.lastIndex = series.getBegin() + DATASET_SIZE - 1; loadValues(firstIndex, lastIndex); } private void loadValues(int firstIndex, int lastIndex) { data = new DefaultKeyedValues2D(); for (int i = 0; i < reports.size(); i++) { for (int j = firstIndex; j <= lastIndex; j++) { data.addValue(reports.get(i).getApplyedCriterion().calculate(series, reports.get(i).getTradesUntilIndex(j)), reports.get(i).getName(), series.getTick(j).getDate() .toString("hh:mm d/M/yyyy")); } } } public int getColumnIndex(Comparable key) { return this.data.getColumnIndex(key); } public Comparable getColumnKey(int column) { return this.data.getColumnKey(column); } public List getColumnKeys() { return this.data.getColumnKeys(); } public int getRowIndex(Comparable key) { return this.data.getRowIndex(key); } public Comparable getRowKey(int row) { return this.data.getRowKey(row); } public List getRowKeys() { return this.data.getRowKeys(); } public Number getValue(Comparable rowKey, Comparable columnKey) { return this.data.getValue(rowKey, columnKey); } public int getColumnCount() { return this.data.getColumnCount(); } public int getRowCount() { return this.data.getRowCount(); } public Number getValue(int row, int column) { return this.data.getValue(row, column); } public void moveRight() { if (lastIndex + 1 < series.getSize()) { lastIndex++; for (Report report : reports) { data.addValue(report.getApplyedCriterion().calculate(series, report.getTradesUntilIndex(lastIndex)), report.getName(), series.getTick(lastIndex).getDate() .toString("hh:mm d/M/yyyy")); } if (data.getColumnCount() >= DATASET_SIZE) { firstIndex++; data.removeColumn(0); } fireDatasetChanged(); } } public void moveLeft() { if (firstIndex > 0) { firstIndex--; lastIndex--; loadValues(firstIndex, lastIndex); fireDatasetChanged(); } } } --- NEW FILE: CriteriaChart.java --- package net.sf.tail.graphics; import java.awt.Color; import java.awt.Font; import net.sf.tail.graphics.forms.ShapeFactory; import org.jfree.chart.ChartFactory; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.CategoryAxis; import org.jfree.chart.axis.NumberAxis; import org.jfree.chart.plot.CategoryPlot; import org.jfree.chart.plot.PlotOrientation; import org.jfree.chart.renderer.category.LineAndShapeRenderer; import org.jfree.data.category.CategoryDataset; import org.jfree.data.general.DatasetChangeEvent; import org.jfree.data.general.DatasetChangeListener; public class CriteriaChart implements DatasetChangeListener { private CategoryDataset dataSet; private CategoryPlot plot; private LineAndShapeRenderer lineAndShapeRenderer; public CriteriaChart(CategoryDataset dataSet) { this.dataSet = dataSet; this.dataSet.addChangeListener(this); this.lineAndShapeRenderer = new LineAndShapeRenderer(true, true); } public JFreeChart createChart(String chartName) { JFreeChart jfreechart = ChartFactory.createLineChart(chartName, "Date", "Value", dataSet, PlotOrientation.VERTICAL, true, true, false); plot = (CategoryPlot) jfreechart.getPlot(); plot.setBackgroundPaint(Color.WHITE); // Setando labels em 90 graus CategoryAxis categoryAxis = plot.getDomainAxis(); categoryAxis.setVisible(false); // categoryAxis.setCategoryLabelPositions(CategoryLabelPositions.DOWN_90); // Setando tamanho do grafico NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis(); rangeAxis.setAutoRangeIncludesZero(false); // Setando tamanho do label categoryAxis.setLabelFont(new Font("SansSerif", 0, 10)); // Setando tamanho do label de cada tick categoryAxis.setTickLabelFont(new Font("SansSerif", 0, 10)); // gerando setas setSeriesShapes(); return jfreechart; } /** * @param dataSet * @param plot */ private void setSeriesShapes() { for (int i = 0; i < dataSet.getRowCount(); i++) { lineAndShapeRenderer.setSeriesShape(i, ShapeFactory.getPoint()); } plot.setRenderer(lineAndShapeRenderer); } public void datasetChanged(DatasetChangeEvent event) { setSeriesShapes(); } } Index: SeriesDataset.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/graphics/SeriesDataset.java,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** SeriesDataset.java 3 Sep 2007 22:10:43 -0000 1.7 --- SeriesDataset.java 17 Oct 2007 19:06:39 -0000 1.8 *************** *** 1,2 **** --- 1,3 ---- + package net.sf.tail.graphics; *************** *** 149,151 **** } } ! } --- 150,152 ---- } } ! } \ No newline at end of file |
|
From: Carlos <ma...@us...> - 2007-10-17 19:06:42
|
Update of /cvsroot/tail/Tail/src/java/net/sf/tail/report In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv2952/src/java/net/sf/tail/report Modified Files: Report.java Log Message: Commit do novo chart que será usado no TailS. Index: Report.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/report/Report.java,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** Report.java 15 Oct 2007 20:23:24 -0000 1.21 --- Report.java 17 Oct 2007 19:06:43 -0000 1.22 *************** *** 6,9 **** --- 6,11 ---- import net.sf.tail.AnalysisCriterion; + import net.sf.tail.Operation; + import net.sf.tail.OperationType; import net.sf.tail.Strategy; import net.sf.tail.TimeSeriesSlicer; *************** *** 26,29 **** --- 28,33 ---- private String name; + + private List<Trade> trades; private Set<Strategy> strategies; *************** *** 67,80 **** public List<Trade> getAllTrades() { ! List<Trade> trades = new ArrayList<Trade>(); ! for (Decision decision : decisions) { ! trades.addAll(decision.getTrades()); } return trades; } ! ! ! @Override --- 71,108 ---- public List<Trade> getAllTrades() { ! if (trades == null) ! { ! List<Trade> trades = new ArrayList<Trade>(); ! for (Decision decision : decisions) { ! trades.addAll(decision.getTrades()); ! } ! this.trades = trades; } return trades; } ! public List<Trade> getTradesUntilIndex(int index) { ! List<Trade> trades = getAllTrades(); ! List<Trade> partialTrades = new ArrayList<Trade>(); ! for (Trade trade : trades) { ! if (trade.getExit().getIndex() <= index) ! partialTrades.add(trade); ! else if (trade.getEntry().getIndex() <= index) ! { ! Trade artificialTrade; ! if(trade.getEntry().getType() == OperationType.BUY) ! { ! artificialTrade = new Trade(trade.getEntry(), new Operation(index, OperationType.SELL)); ! } ! else ! { ! artificialTrade = new Trade(trade.getEntry(), new Operation(index, OperationType.BUY)); ! } ! partialTrades.add(artificialTrade); ! break; ! } ! } ! return partialTrades; ! } @Override |
|
From: Carlos <ma...@us...> - 2007-10-17 19:06:41
|
Update of /cvsroot/tail/Tail/src/test/net/sf/tail/graphics In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv2952/src/test/net/sf/tail/graphics Added Files: CriteriaDatasetTest.java Log Message: Commit do novo chart que será usado no TailS. --- NEW FILE: CriteriaDatasetTest.java --- package net.sf.tail.graphics; import static junit.framework.Assert.assertEquals; import java.util.ArrayList; import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Set; import net.sf.tail.AnalysisCriterion; import net.sf.tail.DummyStock; import net.sf.tail.OperationType; import net.sf.tail.Strategy; import net.sf.tail.Tick; import net.sf.tail.TimeSeries; import net.sf.tail.TimeSeriesSlicer; import net.sf.tail.analysis.criteria.TotalProfitCriterion; import net.sf.tail.analysis.evaluator.HigherValueEvaluator; import net.sf.tail.analysis.walk.WalkForward; import net.sf.tail.report.Report; import net.sf.tail.runner.HistoryRunner; import net.sf.tail.sample.SampleIndicator; import net.sf.tail.series.DefaultTimeSeries; import net.sf.tail.series.RegularSlicer; import net.sf.tail.strategy.IndicatorCrossedIndicatorStrategy; import net.sf.tail.strategy.IndicatorOverIndicatorStrategy; import org.joda.time.DateTime; import org.joda.time.Period; import org.junit.Before; import org.junit.Test; public class CriteriaDatasetTest { private TimeSeries series; private List<Report> reports; private List<Tick> ticks; private Set<Strategy> strategies; private Set<Strategy> strategies2; private SampleIndicator indicator1; private SampleIndicator indicator2; @Before public void setUp() throws Exception { ticks = new LinkedList<Tick>(); ticks.add(new Tick(new DateTime().withDate(2007, 6, 6), 1d)); ticks.add(new Tick(new DateTime().withDate(2007, 6, 7), 2d)); ticks.add(new Tick(new DateTime().withDate(2007, 6, 8), 3d)); ticks.add(new Tick(new DateTime().withDate(2007, 6, 9), 4d)); ticks.add(new Tick(new DateTime().withDate(2007, 6, 10), 3d)); ticks.add(new Tick(new DateTime().withDate(2007, 6, 11), 1d)); ticks.add(new Tick(new DateTime().withDate(2007, 6, 12), 4d)); ticks.add(new Tick(new DateTime().withDate(2007, 6, 13), 6d)); ticks.add(new Tick(new DateTime().withDate(2007, 6, 12), 4d)); ticks.add(new Tick(new DateTime().withDate(2007, 6, 13), 6d)); ticks.add(new Tick(new DateTime().withDate(2007, 6, 14), 7d)); ticks.add(new Tick(new DateTime().withDate(2007, 6, 15), 8d)); series = new DummyStock(new DefaultTimeSeries(ticks)); reports = new LinkedList<Report>(); indicator1 = new SampleIndicator(new double[] { 2d, 3d, 4d, 5d , 3d, 4d, 5d, 3d, 4d, 5d, 3d, 4d}); indicator2 = new SampleIndicator(new double[] { 5d, 4d, 3d, 2d , 4d, 3d, 2d, 4d, 3d, 2d, 4d, 3d}); strategies = new HashSet<Strategy>(); strategies2 = new HashSet<Strategy>(); strategies.add(new IndicatorCrossedIndicatorStrategy(indicator1, indicator2)); strategies2.add(new IndicatorCrossedIndicatorStrategy(indicator2, indicator1)); strategies.add(new IndicatorOverIndicatorStrategy(indicator1, indicator2)); strategies2.add(new IndicatorOverIndicatorStrategy(indicator2, indicator1)); WalkForward walk = new WalkForward(new HigherValueEvaluator(new HistoryRunner(OperationType.BUY))); TimeSeriesSlicer slice = new RegularSlicer(series, new Period().withDays(2)); AnalysisCriterion criterion = new TotalProfitCriterion(); Report report1 = walk.walk(strategies, slice, criterion); report1.setName("rep1"); Report report2 = walk.walk(strategies2, slice, criterion); report2.setName("rep2"); reports.add(report1); reports.add(report2); } @Test public void testDefaultConstructor() { CriteriaDataset dataset = new CriteriaDataset(reports, series, 4); assertEquals(reports.size(), dataset.getRowCount()); assertEquals(4, dataset.getColumnCount()); assertEquals(4d/3, dataset.getValue(1, 3)); } @Test public void testMoveRightWhenIndicatorDontHaveMoreDataUnmappedShouldDoNothing() { CriteriaDataset dataset = new CriteriaDataset(reports, series, 4); dataset.moveRight(); assertEquals(reports.size(), dataset.getRowCount()); assertEquals(4, dataset.getColumnCount()); assertEquals(1d, dataset.getValue(1, 0)); } @Test public void testMoveLeftWhenIndicatorDontHaveMoreDataUnmappedShouldDoNothing() { CriteriaDataset dataset = new CriteriaDataset(reports, series, 4); dataset.moveLeft(); assertEquals(reports.size(), dataset.getRowCount()); assertEquals(4, dataset.getColumnCount()); assertEquals(1d, dataset.getValue(1, 1)); } @Test public void testMoveRight() { List<Tick> ticks2 = ticks; SampleIndicator sindicator1 = indicator1; SampleIndicator sindicator2 = indicator2; sindicator1.addValue(5d); sindicator2.addValue(6d); Set<Strategy> strategies3 = new HashSet<Strategy>(); Set<Strategy> strategies4 = new HashSet<Strategy>(); strategies3.add(new IndicatorCrossedIndicatorStrategy(sindicator1, sindicator2)); strategies4.add(new IndicatorCrossedIndicatorStrategy(sindicator2, sindicator1)); strategies3.add(new IndicatorOverIndicatorStrategy(sindicator1, sindicator2)); strategies4.add(new IndicatorOverIndicatorStrategy(sindicator2, sindicator1)); ticks2.add(new Tick(new DateTime().withDate(2007, 6, 10), 4d)); TimeSeries series2 = new DummyStock(new DefaultTimeSeries(ticks2)); WalkForward walk = new WalkForward(new HigherValueEvaluator(new HistoryRunner(OperationType.BUY))); TimeSeriesSlicer slice = new RegularSlicer(series2, new Period().withDays(2)); AnalysisCriterion criterion = new TotalProfitCriterion(); List<Report> reports2 = new ArrayList<Report>(); Report report3 = walk.walk(strategies3, slice, criterion); report3.setName("rep3"); Report report4 = walk.walk(strategies4, slice, criterion); report4.setName("rep4"); reports2.add(report3); reports2.add(report4); CriteriaDataset dataset = new CriteriaDataset(reports2, series2, 12); dataset.moveRight(); assertEquals(reports2.size(), dataset.getRowCount()); assertEquals(10, dataset.getColumnCount()); assertEquals(3d, dataset.getValue(1, 9)); } @Test public void testMoveLeft() { List<Tick> ticks2 = ticks; SampleIndicator sindicator1 = indicator1; SampleIndicator sindicator2 = indicator2; sindicator1.addValue(5d); sindicator2.addValue(6d); Set<Strategy> strategies3 = new HashSet<Strategy>(); Set<Strategy> strategies4 = new HashSet<Strategy>(); strategies3.add(new IndicatorCrossedIndicatorStrategy(sindicator1, sindicator2)); strategies4.add(new IndicatorCrossedIndicatorStrategy(sindicator2, sindicator1)); strategies3.add(new IndicatorOverIndicatorStrategy(sindicator1, sindicator2)); strategies4.add(new IndicatorOverIndicatorStrategy(sindicator2, sindicator1)); ticks2.add(new Tick(new DateTime().withDate(2007, 6, 10), 4d)); TimeSeries series2 = new DummyStock(new DefaultTimeSeries(ticks2)); WalkForward walk = new WalkForward(new HigherValueEvaluator(new HistoryRunner(OperationType.BUY))); TimeSeriesSlicer slice = new RegularSlicer(series2, new Period().withDays(2)); AnalysisCriterion criterion = new TotalProfitCriterion(); List<Report> reports2 = new ArrayList<Report>(); Report report3 = walk.walk(strategies3, slice, criterion); report3.setName("rep3"); Report report4 = walk.walk(strategies4, slice, criterion); report4.setName("rep4"); reports2.add(report3); reports2.add(report4); CriteriaDataset dataset = new CriteriaDataset(reports2, series2, 12); dataset.moveRight(); dataset.moveLeft(); assertEquals(reports2.size(), dataset.getRowCount()); assertEquals(10, dataset.getColumnCount()); assertEquals(2d, dataset.getValue(1, 6)); } } |
|
From: Márcio V. d. S. <mv...@us...> - 2007-10-17 18:59:57
|
Update of /cvsroot/tail/TailS/src/java/net/sf/tails/swing In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv31480/src/java/net/sf/tails/swing Modified Files: Main.java Log Message: Index: Main.java =================================================================== RCS file: /cvsroot/tail/TailS/src/java/net/sf/tails/swing/Main.java,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** Main.java 24 Sep 2007 22:27:49 -0000 1.8 --- Main.java 17 Oct 2007 18:59:58 -0000 1.9 *************** *** 10,13 **** --- 10,15 ---- package net.sf.tails.swing; + import javax.swing.UIManager; + import net.sf.tails.swing.frame.Index; *************** *** 22,25 **** --- 24,32 ---- */ public static void main(String[] args) { + try { + UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); + } catch (Exception e) { + e.printStackTrace(); + } new Index().setVisible(true); } |
|
From: Thies <tg...@us...> - 2007-10-17 18:36:56
|
Update of /cvsroot/tail/TailS/src/test/net/sf/tails/swing/helper In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv21356/src/test/net/sf/tails/swing/helper Modified Files: CompleteHtmlGeneratorExecutor.java Log Message: Acerto para o novo construtor do parabolic Index: CompleteHtmlGeneratorExecutor.java =================================================================== RCS file: /cvsroot/tail/TailS/src/test/net/sf/tails/swing/helper/CompleteHtmlGeneratorExecutor.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** CompleteHtmlGeneratorExecutor.java 17 Oct 2007 16:42:10 -0000 1.5 --- CompleteHtmlGeneratorExecutor.java 17 Oct 2007 18:36:58 -0000 1.6 *************** *** 24,28 **** 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; --- 24,27 ---- *************** *** 58,65 **** } ! 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()); --- 57,61 ---- } ! Report r = w.walk(strategies, new FullyMemorizedSlicer(timeSeries, new Period().withMonths(1), new DateTime( 2000, 1, 1, 0, 0, 0, 0)), new TotalProfitCriterion()); |
|
From: Thies <tg...@us...> - 2007-10-17 18:36:56
|
Update of /cvsroot/tail/TailS/src/java/net/sf/tails/swing/helper In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv21356/src/java/net/sf/tails/swing/helper Modified Files: DefaultStrategiesGenerator.java Log Message: Acerto para o novo construtor do parabolic Index: DefaultStrategiesGenerator.java =================================================================== RCS file: /cvsroot/tail/TailS/src/java/net/sf/tails/swing/helper/DefaultStrategiesGenerator.java,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** DefaultStrategiesGenerator.java 10 Oct 2007 18:44:32 -0000 1.3 --- DefaultStrategiesGenerator.java 17 Oct 2007 18:36:58 -0000 1.4 *************** *** 8,13 **** import net.sf.tail.Strategy; import net.sf.tail.TimeSeries; - import net.sf.tail.indicator.helper.DirectionalMovementDownIndicator; - import net.sf.tail.indicator.helper.DirectionalMovementUpIndicator; import net.sf.tail.indicator.helper.StandardDeviationIndicator; import net.sf.tail.indicator.simple.ClosePriceIndicator; --- 8,11 ---- *************** *** 21,26 **** import net.sf.tail.indicator.tracker.bollingerbands.BollingerBandsUpperIndicator; import net.sf.tail.strategy.IndicatorCrossedIndicatorStrategy; - import net.sf.tail.strategy.IndicatorOverIndicatorStrategy; - import net.sf.tail.strategy.ParabolicSarAndDMIStrategy; import net.sf.tail.strategy.PipeEnterStrategy; --- 19,22 ---- *************** *** 91,111 **** break; case PARABOLICSAR: ! indicator = new ParabolicSarIndicator(series); ! strategy = new IndicatorCrossedIndicatorStrategy(close, indicator); ! strategies.add(strategy); ! ! DirectionalMovementUpIndicator dmiUp = new DirectionalMovementUpIndicator( ! series); ! DirectionalMovementDownIndicator dmiDown = new DirectionalMovementDownIndicator( ! series); ! IndicatorOverIndicatorStrategy over = new IndicatorOverIndicatorStrategy( ! dmiUp, dmiDown); ! ParabolicSarIndicator parabolic = new ParabolicSarIndicator(series); ! IndicatorCrossedIndicatorStrategy crossed = new IndicatorCrossedIndicatorStrategy( ! close, parabolic); ! ! strategy = new ParabolicSarAndDMIStrategy(crossed, over); ! strategies.add(strategy); ! LOG.info(indicatorDescription.getString("ParabolicSarIndicator")); --- 87,95 ---- break; case PARABOLICSAR: ! for (int i = initial; i < end; i++) { ! indicator = new ParabolicSarIndicator(series, i); ! strategy = new IndicatorCrossedIndicatorStrategy(indicator, close); ! strategies.add(strategy); ! } LOG.info(indicatorDescription.getString("ParabolicSarIndicator")); |
|
From: Thies <tg...@us...> - 2007-10-17 18:32:32
|
Update of /cvsroot/tail/TailS/src/java/net/sf/tails/swing/helper In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv19487/src/java/net/sf/tails/swing/helper Modified Files: CompleteReportGenerator.java Log Message: Acerto em contas Index: CompleteReportGenerator.java =================================================================== RCS file: /cvsroot/tail/TailS/src/java/net/sf/tails/swing/helper/CompleteReportGenerator.java,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** CompleteReportGenerator.java 15 Oct 2007 23:05:39 -0000 1.4 --- CompleteReportGenerator.java 17 Oct 2007 18:32:33 -0000 1.5 *************** *** 57,61 **** try { index.updateReportProgress(0); ! double percent = 44 / report.getDecisions().size(); for (Decision decision : report.getDecisions()) { charts.add(generateImage(decision, filePath)); --- 57,61 ---- try { index.updateReportProgress(0); ! double percent = 44d / report.getDecisions().size(); for (Decision decision : report.getDecisions()) { charts.add(generateImage(decision, filePath)); *************** *** 90,94 **** public void run() { index.updateReportProgress(0); ! double percent = 43 / report.getDecisions().size(); new File(reportDir).mkdir(); new File(styleDir).mkdir(); --- 90,94 ---- public void run() { index.updateReportProgress(0); ! double percent = 43d / report.getDecisions().size(); new File(reportDir).mkdir(); new File(styleDir).mkdir(); |
|
From: Thies <tg...@us...> - 2007-10-17 18:29:54
|
Update of /cvsroot/tail/Tail/src/test/net/sf/tail/indicator/tracker In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv18190/src/test/net/sf/tail/indicator/tracker Modified Files: ParabolicSarIndicatorTest.java Log Message: Nova forma de calcular o parabolic sar Index: ParabolicSarIndicatorTest.java =================================================================== RCS file: /cvsroot/tail/Tail/src/test/net/sf/tail/indicator/tracker/ParabolicSarIndicatorTest.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** ParabolicSarIndicatorTest.java 26 Sep 2007 19:24:06 -0000 1.2 --- ParabolicSarIndicatorTest.java 17 Oct 2007 18:29:56 -0000 1.3 *************** *** 21,32 **** ticks.add(new Tick(0, 6, 9, 4)); ticks.add(new Tick(0, 11, 15, 9)); ! ticks.add(new Tick(0, 13, 15, 9)); ! ParabolicSarIndicator sar = new ParabolicSarIndicator(new SampleTimeSeries(ticks)); assertEquals(10d, sar.getValue(0)); ! assertEquals(8d, sar.getValue(1)); ! assertEquals(11d, sar.getValue(2)); ! assertEquals(4d, sar.getValue(3)); ! assertEquals(4d, sar.getValue(4)); } --- 21,36 ---- ticks.add(new Tick(0, 6, 9, 4)); ticks.add(new Tick(0, 11, 15, 9)); ! ticks.add(new Tick(0, 13, 14, 9)); ! ParabolicSarIndicator sar = new ParabolicSarIndicator(new SampleTimeSeries(ticks), 1); assertEquals(10d, sar.getValue(0)); ! double value = 10d + 0.02d * (6d - 10d); ! assertEquals(value , sar.getValue(1)); ! value = value + (0.04d * (4d - value)); ! assertEquals(value, sar.getValue(2)); ! value = value + 0.02d * (15d - value); ! assertEquals(value, sar.getValue(3)); ! value = value + 0.02d * (14d - value); ! assertEquals(value, sar.getValue(4)); } *************** *** 36,53 **** { List<Tick> ticks = new ArrayList<Tick>(); ! ticks.add(new Tick(0, 10, 13, 11)); ! ticks.add(new Tick(0, 10, 15, 13)); ! ticks.add(new Tick(0, 12, 18, 11)); ! ticks.add(new Tick(0, 10, 15, 9)); ticks.add(new Tick(0, 9, 15, 9)); ! ParabolicSarIndicator sar = new ParabolicSarIndicator(new SampleTimeSeries(ticks)); assertEquals(10d, sar.getValue(0)); ! assertEquals(10d, sar.getValue(1)); ! assertEquals(0.04 * (18d - 10) + 10d, sar.getValue(2)); ! assertEquals(18d, sar.getValue(3)); ! assertEquals(18d, sar.getValue(3)); ! assertEquals(18d, sar.getValue(4)); } @Test --- 40,60 ---- { List<Tick> ticks = new ArrayList<Tick>(); ! ticks.add(new Tick(0, 10, 16, 11)); ! ticks.add(new Tick(0, 12, 15, 12)); ! ticks.add(new Tick(0, 13, 12, 11)); ! ticks.add(new Tick(0, 14, 13, 7)); ticks.add(new Tick(0, 9, 15, 9)); ! ParabolicSarIndicator sar = new ParabolicSarIndicator(new SampleTimeSeries(ticks), 3); assertEquals(10d, sar.getValue(0)); ! double value = 10d + 0.02d * (16d - 10d); ! assertEquals(value, sar.getValue(1)); ! value = value + 0.02d * (16d - value); ! assertEquals(value, sar.getValue(2)); ! value = value + 0.02d * (15d - value); ! assertEquals(value, sar.getValue(3)); ! value = value + 0.02d * (7d - value); ! assertEquals(value, sar.getValue(4)); } @Test *************** *** 56,71 **** List<Tick> ticks = new ArrayList<Tick>(); ticks.add(new Tick(0, 10, 13, 11)); ! ticks.add(new Tick(0, 17, 15, 11.38)); ticks.add(new Tick(0, 18, 16, 14)); ticks.add(new Tick(0, 19, 17, 12)); ! ticks.add(new Tick(0, 20, 18, 9)); ! ParabolicSarIndicator sar = new ParabolicSarIndicator(new SampleTimeSeries(ticks)); ! assertEquals(10d, sar.getValue(0)); ! assertEquals(17d, sar.getValue(1)); ! assertEquals(11.38d, sar.getValue(2)); ! assertEquals(11.38d, sar.getValue(3)); ! assertEquals(18d, sar.getValue(4)); } --- 63,83 ---- List<Tick> ticks = new ArrayList<Tick>(); ticks.add(new Tick(0, 10, 13, 11)); ! ticks.add(new Tick(0, 17, 15, 12)); ticks.add(new Tick(0, 18, 16, 14)); ticks.add(new Tick(0, 19, 17, 12)); ! ticks.add(new Tick(0, 20, 16, 9)); ! ParabolicSarIndicator sar = new ParabolicSarIndicator(new SampleTimeSeries(ticks), 2); ! double value = 10d; ! assertEquals(value, sar.getValue(0)); ! value = value + 0.02d * (15d - value); ! assertEquals(value, sar.getValue(1)); ! value = value + 0.04d * (16d - value); ! assertEquals(value, sar.getValue(2)); ! value = value + 0.06d * (17d - value); ! assertEquals(value, sar.getValue(3)); ! value = value + 0.06d * (17d - value); ! assertEquals(value, sar.getValue(4)); } *************** *** 75,93 **** List<Tick> ticks = new ArrayList<Tick>(); ticks.add(new Tick(0, 20, 18, 9)); ! ticks.add(new Tick(0, 19, 17, 12)); ! ticks.add(new Tick(0, 18, 16, 14)); ! ticks.add(new Tick(0, 17, 15, 11.38)); ! ticks.add(new Tick(0, 10, 13, 11)); ! ticks.add(new Tick(0, 10, 30, 11)); ! ParabolicSarIndicator sar = new ParabolicSarIndicator(new SampleTimeSeries(ticks)); ! assertEquals(20d, sar.getValue(0)); ! assertEquals(19d, sar.getValue(1)); ! assertEquals(0.04d * (14d - 19d) + 19d, sar.getValue(2)); ! double value = 0.04d * (14d - 18.8d) + 18.8d; ! assertEquals(0.04d * (14d - 18.8d) + 18.8d, sar.getValue(3)); ! assertEquals(0.06d * (11d - value) + value, sar.getValue(4)); ! assertEquals(11d, sar.getValue(5)); } --- 87,110 ---- List<Tick> ticks = new ArrayList<Tick>(); ticks.add(new Tick(0, 20, 18, 9)); ! ticks.add(new Tick(0, 19, 17, 8)); ! ticks.add(new Tick(0, 18, 16, 9)); ! ticks.add(new Tick(0, 17, 15, 9)); ! ticks.add(new Tick(0, 10, 13, 6)); ! ticks.add(new Tick(0, 9, 30, 8)); ! ParabolicSarIndicator sar = new ParabolicSarIndicator(new SampleTimeSeries(ticks), 3); ! double value = 20d; ! assertEquals(value, sar.getValue(0)); ! value = value + 0.02d * (8d - value); ! assertEquals(value, sar.getValue(1)); ! value = value + 0.02d * (8d - value); ! assertEquals(value, sar.getValue(2)); ! value = value + 0.02d * (8d - value); ! assertEquals(value, sar.getValue(3)); ! value = value + 0.04d * (6d - value); ! assertEquals(value, sar.getValue(4)); ! value = value + 0.04d * (6d - value); ! assertEquals(value, sar.getValue(5)); } |
|
From: Thies <tg...@us...> - 2007-10-17 18:29:54
|
Update of /cvsroot/tail/Tail/src/java/net/sf/tail/indicator/tracker In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv18190/src/java/net/sf/tail/indicator/tracker Modified Files: ParabolicSarIndicator.java Log Message: Nova forma de calcular o parabolic sar Index: ParabolicSarIndicator.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/indicator/tracker/ParabolicSarIndicator.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** ParabolicSarIndicator.java 26 Sep 2007 19:24:06 -0000 1.2 --- ParabolicSarIndicator.java 17 Oct 2007 18:29:56 -0000 1.3 *************** *** 3,6 **** --- 3,10 ---- import net.sf.tail.TimeSeries; import net.sf.tail.indicator.cache.CachedIndicator; + import net.sf.tail.indicator.helper.HighestValueIndicator; + import net.sf.tail.indicator.helper.LowestValueIndicator; + import net.sf.tail.indicator.simple.MaxPriceIndicator; + import net.sf.tail.indicator.simple.MinPriceIndicator; public class ParabolicSarIndicator extends CachedIndicator<Double> { *************** *** 11,18 **** private double extremePoint; ! ! public ParabolicSarIndicator(TimeSeries series) { ! this.acceleration = 0.02; this.series = series; } --- 15,31 ---- private double extremePoint; ! ! private final HighestValueIndicator highestValueIndicator; ! ! private final LowestValueIndicator lowestValueIndicator; ! ! private Boolean isDownTrade; ! ! public ParabolicSarIndicator(TimeSeries series, int timeFrame) { ! this.acceleration = 0.02d; this.series = series; + this.highestValueIndicator = new HighestValueIndicator(new MaxPriceIndicator(series), timeFrame); + this.lowestValueIndicator = new LowestValueIndicator(new MinPriceIndicator(series), timeFrame); + isDownTrade = null; } *************** *** 20,79 **** protected Double calculate(int index) { ! if (index <= 1) { extremePoint = series.getTick(index).getClosePrice(); return extremePoint; } ! double sar; ! ! // trend switch ! if (series.getTick(index - 2).getClosePrice() > series.getTick(index - 1).getClosePrice() && series.getTick( ! index - 1).getClosePrice() < series.getTick(index).getClosePrice()) ! { ! sar = extremePoint; ! extremePoint = series.getTick(index).getMaxPrice(); ! acceleration = 0.02; ! } ! // trend switch ! else if((series.getTick(index - 2).getClosePrice() < series.getTick(index - 1).getClosePrice() && series ! .getTick(index - 1).getClosePrice() > series.getTick(index).getClosePrice())) { ! ! sar = extremePoint; ! extremePoint = series.getTick(index).getMinPrice(); ! acceleration = 0.02; ! ! } //DownTrend ! else if (series.getTick(index - 1).getClosePrice() >= series.getTick(index).getClosePrice()) { ! if (extremePoint > series.getTick(index).getClosePrice()) { ! acceleration = acceleration >= 0.19 ? 0.2 : acceleration + 0.02d; ! extremePoint = series.getTick(index).getMinPrice(); } ! sar = acceleration * (extremePoint - getValue(index - 1)) + getValue(index - 1); ! if (sar <= series.getTick(index - 1).getMaxPrice()) ! sar = series.getTick(index - 1).getMaxPrice(); ! else if (sar <= series.getTick(index - 2).getMaxPrice()) ! sar = series.getTick(index - 2).getMaxPrice(); ! if (sar <= series.getTick(index).getMaxPrice()) { ! sar = series.getTick(index).getMinPrice(); } } //UpTrend else { ! if (extremePoint < series.getTick(index).getMaxPrice()) { ! acceleration = acceleration >= 0.19 ? 0.2 : acceleration + 0.02; ! extremePoint = series.getTick(index).getMaxPrice(); } ! sar = acceleration * (extremePoint - getValue(index - 1)) + getValue(index - 1); ! if (sar >= series.getTick(index - 1).getMinPrice()) ! sar = series.getTick(index - 1).getMinPrice(); ! else if (sar >= series.getTick(index - 2).getMinPrice()) ! sar = series.getTick(index - 2).getMinPrice(); ! if (sar >= series.getTick(index).getMinPrice()) { ! sar = series.getTick(index).getMaxPrice(); } } ! return sar; } --- 33,75 ---- protected Double calculate(int index) { ! if (index == 0) { extremePoint = series.getTick(index).getClosePrice(); return extremePoint; } ! //DownTrend ! if (series.getTick(index - 1).getClosePrice() >= series.getTick(index).getClosePrice()) { ! double actualLowest = lowestValueIndicator.getValue(index); ! ! if(isDownTrade == null || !isDownTrade) { ! isDownTrade = true; ! acceleration = 0.02d; ! extremePoint = actualLowest; } ! else if(actualLowest != extremePoint) { ! if(actualLowest < extremePoint) ! acceleration = acceleration >= 0.2d? 0.2d : acceleration + 0.02d; ! extremePoint = actualLowest; } + } //UpTrend else { ! double actualHighest = highestValueIndicator.getValue(index); ! if(isDownTrade == null || isDownTrade) { ! isDownTrade = false; ! acceleration = 0.02d; ! extremePoint = actualHighest; } ! else if(actualHighest != extremePoint){ ! if(actualHighest > extremePoint) ! acceleration = acceleration >= 0.2d? 0.2d : acceleration + 0.02d; ! extremePoint = actualHighest; ! } } ! return getValue(index - 1) + acceleration * (extremePoint - getValue(index - 1)); } |
|
From: xanaot <xa...@us...> - 2007-10-17 18:04:35
|
Update of /cvsroot/tail/Tail/BaseBovespa/diario In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv7466/BaseBovespa/diario Added Files: petr3_diario_08102007.csv vale5_diario_08102007.csv Log Message: csv da Vale5 e petr3 diario para geração de relatório --- NEW FILE: vale5_diario_08102007.csv --- (This appears to be a binary file; contents omitted.) --- NEW FILE: petr3_diario_08102007.csv --- (This appears to be a binary file; contents omitted.) |
|
From: xanaot <xa...@us...> - 2007-10-17 17:38:11
|
Update of /cvsroot/tail/Tail/src/test/net/sf/tail/report/xls In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv28044/src/test/net/sf/tail/report/xls Added Files: WorkbookGeneratorTest.java SliceXlsGeneratorTest.java ReportXlsGeneratorTest.java TImeSeriesXlsGeneratorTest.java Log Message: Refatoração dos testes do Report XLS generator --- NEW FILE: WorkbookGeneratorTest.java --- package net.sf.tail.report.xls; import static org.junit.Assert.assertEquals; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import net.sf.tail.Indicator; import net.sf.tail.Operation; import net.sf.tail.OperationType; import net.sf.tail.Strategy; import net.sf.tail.Trade; import net.sf.tail.analysis.criteria.TotalProfitCriterion; import net.sf.tail.analysis.evaluator.Decision; import net.sf.tail.graphics.SeriesChart; import net.sf.tail.graphics.SeriesDataset; import net.sf.tail.indicator.simple.ClosePriceIndicator; import net.sf.tail.indicator.tracker.EMAIndicator; 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 net.sf.tail.strategy.IndicatorCrossedIndicatorStrategy; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.jfree.chart.ChartUtilities; import org.jfree.chart.JFreeChart; import org.joda.time.Period; import org.junit.After; import org.junit.Before; import org.junit.Test; public class WorkbookGeneratorTest { private WorkbookGenerator Workbook; private final String CHAR_DIST = "./"; private Report report; private Period period; private List<File> charts; private HSSFWorkbook book; @Before public void setUp() throws IOException { Workbook = new WorkbookGenerator(); SampleTimeSeries series = new SampleTimeSeries(); ArrayList<Trade> trades = new ArrayList<Trade>(); 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 decision = new Decision(new FakeStrategy(new Operation[0], new Operation[0]), series, new TotalProfitCriterion(), trades, new HistoryRunner(OperationType.BUY)); decisions.add(decision); period = new Period().withYears(1); FullyMemorizedSlicer slicer = new FullyMemorizedSlicer(series, period); Set<Strategy> strategies = new HashSet<Strategy>(); Indicator<Double> close = new ClosePriceIndicator(series); List<Indicator<? extends Number>> indicators = new ArrayList<Indicator<? extends Number>>(); for (int i = 4; i < 5; i++) { Indicator<Double> tracker = new EMAIndicator(close, i); Strategy strategy = new IndicatorCrossedIndicatorStrategy(close, tracker); indicators.add(tracker); strategies.add(strategy); } SeriesDataset seriesDataset = new SeriesDataset(series, indicators, series.getBegin(), series.getEnd()); SeriesChart seriesChart = new SeriesChart(seriesDataset); JFreeChart jfreechart = seriesChart.createChart(""); String imagePath = CHAR_DIST + File.separatorChar + decision.getFileName() + ".png"; File file = new File(imagePath); ChartUtilities.saveChartAsPNG(file, jfreechart, 800, 300); charts = new ArrayList<File>(); for (int i = 0; i < decisions.size(); i++) { charts.add(file); } charts.add(file); report = new Report(strategies, new TotalProfitCriterion(), slicer, decisions); book = Workbook.generate(report, period, charts); } @Test public void testGenerateWorkbook() throws IOException { assertEquals(3, book.getNumberOfSheets()); } @After public void tearDown() { for (File f : charts) { f.delete(); } } } --- NEW FILE: SliceXlsGeneratorTest.java --- package net.sf.tail.report.xls; import static org.junit.Assert.assertEquals; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import net.sf.tail.Indicator; import net.sf.tail.Operation; import net.sf.tail.OperationType; import net.sf.tail.Strategy; import net.sf.tail.Trade; import net.sf.tail.analysis.criteria.TotalProfitCriterion; import net.sf.tail.analysis.evaluator.Decision; import net.sf.tail.graphics.SeriesChart; import net.sf.tail.graphics.SeriesDataset; import net.sf.tail.indicator.simple.ClosePriceIndicator; import net.sf.tail.indicator.tracker.EMAIndicator; 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 net.sf.tail.strategy.IndicatorCrossedIndicatorStrategy; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.jfree.chart.ChartUtilities; import org.jfree.chart.JFreeChart; import org.joda.time.Period; import org.junit.After; import org.junit.Before; import org.junit.Test; public class SliceXlsGeneratorTest { private SliceXlsGenerator XLSSlicerSeries; private Report report; private Period period; private List<File> charts; private List<HSSFSheet> sheet; private final String CHAR_DIST = "./"; @Before public void setUp() throws IOException { XLSSlicerSeries = new SliceXlsGenerator(new HSSFWorkbook()); SampleTimeSeries series = new SampleTimeSeries(); ArrayList<Trade> trades = new ArrayList<Trade>(); 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 decision = new Decision(new FakeStrategy(new Operation[0], new Operation[0]), series, new TotalProfitCriterion(), trades, new HistoryRunner(OperationType.BUY)); decisions.add(decision); period = new Period().withYears(1); FullyMemorizedSlicer slicer = new FullyMemorizedSlicer(series, period); Set<Strategy> strategies = new HashSet<Strategy>(); List<Indicator<? extends Number>> indicators = new ArrayList<Indicator<? extends Number>>(); Indicator<Double> close = new ClosePriceIndicator(series); for (int i = 4; i < 5; i++) { Indicator<Double> tracker = new EMAIndicator(close, i); Strategy strategy = new IndicatorCrossedIndicatorStrategy(close, tracker); indicators.add(tracker); strategies.add(strategy); } SeriesDataset seriesDataset = new SeriesDataset(series, indicators, series.getBegin(), series.getEnd()); SeriesChart seriesChart = new SeriesChart(seriesDataset); JFreeChart jfreechart = seriesChart.createChart(""); String imagePath = CHAR_DIST + File.separatorChar + decision.getFileName() + ".png"; File file = new File(imagePath); ChartUtilities.saveChartAsPNG(file, jfreechart, 800, 300); charts = new ArrayList<File>(); for (int i = 0; i < decisions.size(); i++) { charts.add(file); } report = new Report(strategies, new TotalProfitCriterion(), slicer, decisions); sheet = XLSSlicerSeries.generate(report, period, charts); } @Test public void testGenerateSlicer() throws IOException { assertEquals(21, sheet.get(0).getLastRowNum()); } @After public void tearDown() { for (File f : charts) { f.delete(); } } } --- NEW FILE: ReportXlsGeneratorTest.java --- package net.sf.tail.report.xls; import static org.junit.Assert.assertEquals; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import net.sf.tail.Indicator; import net.sf.tail.Operation; import net.sf.tail.OperationType; import net.sf.tail.Strategy; import net.sf.tail.Trade; import net.sf.tail.analysis.criteria.TotalProfitCriterion; import net.sf.tail.analysis.evaluator.Decision; import net.sf.tail.graphics.SeriesChart; import net.sf.tail.graphics.SeriesDataset; import net.sf.tail.indicator.simple.ClosePriceIndicator; import net.sf.tail.indicator.tracker.EMAIndicator; 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 net.sf.tail.strategy.IndicatorCrossedIndicatorStrategy; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.jfree.chart.ChartUtilities; import org.jfree.chart.JFreeChart; import org.joda.time.Period; import org.junit.After; import org.junit.Before; import org.junit.Test; public class ReportXlsGeneratorTest { private final String CHAR_DIST = "./"; private ReportXlsGenerator XLSReportSeries; private Report report; private Period period; private List<File> charts; private List<HSSFSheet> sheet; @Before public void setUp() throws IOException { XLSReportSeries = new ReportXlsGenerator(new HSSFWorkbook()); SampleTimeSeries series = new SampleTimeSeries(); ArrayList<Trade> trades = new ArrayList<Trade>(); 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 decision = new Decision(new FakeStrategy(new Operation[0], new Operation[0]), series, new TotalProfitCriterion(), trades, new HistoryRunner(OperationType.BUY)); decisions.add(decision); period = new Period().withYears(1); FullyMemorizedSlicer slicer = new FullyMemorizedSlicer(series, period); Set<Strategy> strategies = new HashSet<Strategy>(); List<Indicator<? extends Number>> indicators = new ArrayList<Indicator<? extends Number>>(); Indicator<Double> close = new ClosePriceIndicator(series); for (int i = 4; i < 5; i++) { Indicator<Double> tracker = new EMAIndicator(close, i); Strategy strategy = new IndicatorCrossedIndicatorStrategy(close, tracker); indicators.add(tracker); strategies.add(strategy); } SeriesDataset seriesDataset = new SeriesDataset(series, indicators, series.getBegin(), series.getEnd()); SeriesChart seriesChart = new SeriesChart(seriesDataset); JFreeChart jfreechart = seriesChart.createChart(""); String imagePath = CHAR_DIST + File.separatorChar + decision.getFileName() + ".png"; File file = new File(imagePath); ChartUtilities.saveChartAsPNG(file, jfreechart, 800, 300); charts = new ArrayList<File>(); for (int i = 0; i < decisions.size(); i++) { charts.add(file); } report = new Report(strategies, new TotalProfitCriterion(), slicer, decisions); sheet = XLSReportSeries.generate(report, period, charts); } @Test public void testGenerateReport() throws IOException { assertEquals(21, sheet.get(0).getLastRowNum()); } @After public void tearDown() { for (File f : charts) { f.delete(); } } } --- NEW FILE: TImeSeriesXlsGeneratorTest.java --- package net.sf.tail.report.xls; import java.io.IOException; import java.util.ArrayList; import java.util.HashSet; import java.util.Set; import net.sf.tail.Indicator; import net.sf.tail.Operation; import net.sf.tail.OperationType; import net.sf.tail.Strategy; import net.sf.tail.Trade; import net.sf.tail.analysis.criteria.TotalProfitCriterion; import net.sf.tail.analysis.evaluator.Decision; import net.sf.tail.indicator.simple.ClosePriceIndicator; import net.sf.tail.indicator.tracker.EMAIndicator; 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 net.sf.tail.strategy.IndicatorCrossedIndicatorStrategy; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.joda.time.Period; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.*; public class TImeSeriesXlsGeneratorTest { private TimeSeriesXlsGenerator XLStimeSeries; @Before public void setUp() { XLStimeSeries = new TimeSeriesXlsGenerator(new HSSFWorkbook()); } @Test public void testGenerateTimeSeriesXls() throws IOException { SampleTimeSeries series = new SampleTimeSeries(); ArrayList<Trade> trades = new ArrayList<Trade>(); 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 decision = new Decision(new FakeStrategy(new Operation[0], new Operation[0]), series, new TotalProfitCriterion(), trades, new HistoryRunner(OperationType.BUY)); decisions.add(decision); FullyMemorizedSlicer slicer = new FullyMemorizedSlicer(series, new Period().withYears(1)); Set<Strategy> strategies = new HashSet<Strategy>(); Indicator<Double> close = new ClosePriceIndicator(series); for (int i = 4; i < 5; i++) { Indicator<Double> tracker = new EMAIndicator(close, i); Strategy strategy = new IndicatorCrossedIndicatorStrategy(close, tracker); strategies.add(strategy); } Report report = new Report(strategies, new TotalProfitCriterion(), slicer, decisions); HSSFSheet sheet = XLStimeSeries.generate(report); assertEquals(10, sheet.getPhysicalNumberOfRows()); } } |