Update of /cvsroot/tail/Tail/src/test/net/sf/tail/io
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv24783/src/test/net/sf/tail/io
Added Files:
SerializerTest.java
Log Message:
Refatoração de packages e criação de novas classes para serializar em xml
--- NEW FILE: SerializerTest.java ---
package net.sf.tail.io;
import static org.junit.Assert.assertEquals;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.HashSet;
import java.util.Set;
import net.sf.tail.AnalysisCriterion;
import net.sf.tail.Indicator;
import net.sf.tail.OperationType;
import net.sf.tail.Runner;
import net.sf.tail.Strategy;
import net.sf.tail.TimeSeries;
import net.sf.tail.TimeSeriesSlicer;
import net.sf.tail.Walker;
import net.sf.tail.TimeSeriesSlicer.SlicerType;
import net.sf.tail.analysis.Stock;
import net.sf.tail.analysis.StockAnalysis;
import net.sf.tail.analysis.criteria.AverageProfitCriterion;
import net.sf.tail.analysis.criteria.MaximumDrawDownCriterion;
import net.sf.tail.analysis.criteria.NumberOfTicksCriterion;
import net.sf.tail.analysis.criteria.TotalProfitCriterion;
import net.sf.tail.analysis.evaluator.BestStrategyEvaluator;
import net.sf.tail.analysis.walk.WalkForward;
import net.sf.tail.indicator.simple.ClosePriceIndicator;
import net.sf.tail.indicator.tracker.EMAIndicator;
import net.sf.tail.indicator.tracker.SMAIndicator;
import net.sf.tail.indicator.tracker.WilliamsRIndicator;
import net.sf.tail.io.reader.CedroTimeSeriesLoader;
import net.sf.tail.report.Report;
import net.sf.tail.runner.HistoryRunner;
import net.sf.tail.sample.SampleTimeSeries;
import net.sf.tail.series.SlicerByTimePeriod;
import net.sf.tail.strategy.IndicatorCrossedIndicatorStrategy;
import net.sf.tail.strategy.JustBuyOnceStrategy;
import org.joda.time.DateTime;
import org.joda.time.Period;
import org.junit.Test;
public class SerializerTest {
@Test
public void testReportSerializer() {
DateTime date = new DateTime();
TimeSeries timeSeries = new SampleTimeSeries(date.withYear(2000), date.withDate(2000, 2, 20),date.withDate(2000, 4, 25) , date.withYear(2002), date.withYear(2003));
Walker w = new WalkForward(new BestStrategyEvaluator(new HistoryRunner(OperationType.BUY)));
ClosePriceIndicator close = new ClosePriceIndicator(timeSeries);
SMAIndicator sma = new SMAIndicator(close, 8);
Set<Strategy> strategies = new HashSet<Strategy>();
strategies.add(new IndicatorCrossedIndicatorStrategy(close,sma) );
strategies.add(new JustBuyOnceStrategy());
Report r = w.walk(strategies,new SlicerByTimePeriod(timeSeries,new Period().withYears(1), SlicerType.MEMORIZED),new TotalProfitCriterion());
Serializer<Report> serializer = new Serializer<Report>();
String xml = serializer.toXML(r);
Report reportAfter = serializer.fromXML(xml);
assertEquals(r.getApplyedCriterion().getClass(),reportAfter.getApplyedCriterion().getClass());
assertEquals(r.getSlicer().getClass(), reportAfter.getSlicer().getClass());
}
@Test
public void testStockAnalysisSerializer() {
Stock stock = new Stock("test","BaseBovespa/15min/ambv4.csv");
AnalysisCriterion applyedCriterion = new TotalProfitCriterion();
CedroTimeSeriesLoader ctsl = new CedroTimeSeriesLoader();
TimeSeries timeSeries = null;
try {
timeSeries = ctsl.load(new FileInputStream(stock.getSeriesAdress()), "Por favor me tire esse campo");
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
TimeSeriesSlicer slicer = new SlicerByTimePeriod(timeSeries,new Period().withDays(1), SlicerType.MEMORIZED);
Runner runner = new HistoryRunner(OperationType.BUY);
StockAnalysis stockAnalysis = new StockAnalysis(stock,applyedCriterion,slicer,runner);
stockAnalysis.addCriterion(new MaximumDrawDownCriterion());
stockAnalysis.addCriterion(new AverageProfitCriterion());
stockAnalysis.addCriterion(new NumberOfTicksCriterion());
Set<Strategy> strategies = new HashSet<Strategy>();
for (int i = 4; i < 20; i++) {
Indicator<Double> close = new ClosePriceIndicator(timeSeries);
Indicator<Double> tracker = new EMAIndicator(close, i);
Strategy strategy = new IndicatorCrossedIndicatorStrategy(close, tracker);
strategies.add(strategy);
}
stockAnalysis.createReport(strategies);
strategies = new HashSet<Strategy>();
for (int i = 4; i < 20; i++) {
Indicator<Double> close = new ClosePriceIndicator(timeSeries);
Indicator<Double> tracker = new SMAIndicator(close, i);
Strategy strategy = new IndicatorCrossedIndicatorStrategy(close, tracker);
strategies.add(strategy);
}
stockAnalysis.createReport(strategies);
strategies = new HashSet<Strategy>();
for (int i = 4; i < 20; i++) {
Indicator<Double> close = new ClosePriceIndicator(timeSeries);
Indicator<Double> tracker = new WilliamsRIndicator(timeSeries,i);
Strategy strategy = new IndicatorCrossedIndicatorStrategy(close, tracker);
strategies.add(strategy);
}
stockAnalysis.createReport(strategies);
Serializer<StockAnalysis> serializer = new Serializer<StockAnalysis>();
String xml = serializer.toXML(stockAnalysis);
try {
FileOutputStream fos = new FileOutputStream("xml/ReportTest.xml");
OutputStreamWriter osw = new OutputStreamWriter(fos);
BufferedWriter bw = new BufferedWriter(osw);
bw.write(xml);
bw.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
StockAnalysis after = serializer.fromXML(xml);
}
}
|