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();
}
|