|
From: Thies <tg...@us...> - 2007-10-03 18:57:44
|
Update of /cvsroot/tail/Tail/src/java/net/sf/tail/analysis/criteria In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv26367/src/java/net/sf/tail/analysis/criteria Modified Files: BuyAndHoldCriterion.java VersusBuyAndHoldCriterion.java NumberOfTicksCriterion.java Log Message: Criterio VersusBuyAndHold agora compara qualquer outro critério com o BuyAndHold. Também foi acertado o critério NumberOfTicks Index: NumberOfTicksCriterion.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/analysis/criteria/NumberOfTicksCriterion.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** NumberOfTicksCriterion.java 4 Sep 2007 13:09:14 -0000 1.6 --- NumberOfTicksCriterion.java 3 Oct 2007 18:57:44 -0000 1.7 *************** *** 13,21 **** public double calculate(TimeSeries series, List<Trade> trades) { int nTicks = 0; for (Trade trade : trades) { nTicks += trade.getExit().getIndex() - trade.getEntry().getIndex(); } ! return nTicks; } --- 13,25 ---- public double calculate(TimeSeries series, List<Trade> trades) { + if(trades.size() == 0) + return 0d; + int nTicks = 0; + for (Trade trade : trades) { nTicks += trade.getExit().getIndex() - trade.getEntry().getIndex(); } ! return nTicks + 1; } Index: VersusBuyAndHoldCriterion.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/analysis/criteria/VersusBuyAndHoldCriterion.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** VersusBuyAndHoldCriterion.java 4 Sep 2007 13:09:14 -0000 1.6 --- VersusBuyAndHoldCriterion.java 3 Oct 2007 18:57:44 -0000 1.7 *************** *** 6,9 **** --- 6,11 ---- import net.sf.tail.AnalysisCriterion; + import net.sf.tail.Operation; + import net.sf.tail.OperationType; import net.sf.tail.TimeSeries; import net.sf.tail.Trade; *************** *** 12,21 **** public class VersusBuyAndHoldCriterion implements AnalysisCriterion { ! private AnalysisCriterion totalProfit = new TotalProfitCriterion(); ! ! private AnalysisCriterion buyAndHold = new BuyAndHoldCriterion(); public double calculate(TimeSeries series, List<Trade> trades) { ! return totalProfit.calculate(series, trades) / buyAndHold.calculate(series, trades); } --- 14,28 ---- public class VersusBuyAndHoldCriterion implements AnalysisCriterion { ! private AnalysisCriterion criterion; + public VersusBuyAndHoldCriterion(AnalysisCriterion criterion) { + this.criterion = criterion; + } + public double calculate(TimeSeries series, List<Trade> trades) { ! List<Trade> fakeTrades = new ArrayList<Trade>(); ! fakeTrades.add(new Trade(new Operation(series.getBegin(), OperationType.BUY), new Operation(series.getEnd(), OperationType.SELL))); ! ! return criterion.calculate(series, trades) / criterion.calculate(series, fakeTrades); } Index: BuyAndHoldCriterion.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/analysis/criteria/BuyAndHoldCriterion.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** BuyAndHoldCriterion.java 4 Sep 2007 13:09:14 -0000 1.6 --- BuyAndHoldCriterion.java 3 Oct 2007 18:57:44 -0000 1.7 *************** *** 2,9 **** import java.util.ArrayList; - import java.util.LinkedList; import java.util.List; import net.sf.tail.AnalysisCriterion; import net.sf.tail.TimeSeries; import net.sf.tail.Trade; --- 2,9 ---- import java.util.ArrayList; import java.util.List; import net.sf.tail.AnalysisCriterion; + import net.sf.tail.OperationType; import net.sf.tail.TimeSeries; import net.sf.tail.Trade; *************** *** 17,31 **** public double summarize(TimeSeries series, List<Decision> decisions) { ! List<Trade> trades = new LinkedList<Trade>(); ! ! for (Decision decision : decisions) { ! trades.addAll(decision.getTrades()); ! } ! return calculate(series, trades); } public double calculate(TimeSeries series, Trade trade) { ! List<Trade> trades = new ArrayList<Trade>(); ! trades.add(trade); ! return calculate(series, trades); } --- 17,28 ---- public double summarize(TimeSeries series, List<Decision> decisions) { ! ! return calculate(series, new ArrayList<Trade>()); } public double calculate(TimeSeries series, Trade trade) { ! if(trade.getEntry().getType() == OperationType.BUY) ! return series.getTick(trade.getExit().getIndex()).getClosePrice() / series.getTick(trade.getEntry().getIndex()).getClosePrice(); ! else ! return series.getTick(trade.getEntry().getIndex()).getClosePrice() / series.getTick(trade.getExit().getIndex()).getClosePrice(); } |