|
From: Márcio V. d. S. <mv...@us...> - 2007-06-08 18:24:37
|
Update of /cvsroot/tail/Tail/src/java/net/sf/tail/analysis/criteria In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv20178/src/java/net/sf/tail/analysis/criteria Modified Files: RewardRiskRatioCriterion.java Added Files: MaximumDrawDownCriterion.java AverageProfitCriterion.java Removed Files: MaximumDrawDownCriteria.java Log Message: Refatoração --- NEW FILE: MaximumDrawDownCriterion.java --- package net.sf.tail.analysis.criteria; import net.sf.tail.Indicator; public class MaximumDrawDownCriterion implements AnalysisCriterion { private Indicator<? extends Number> indicator; private int seriesSize; public MaximumDrawDownCriterion(Indicator<? extends Number> indicator, int seriesSize) { this.indicator = indicator; this.seriesSize = seriesSize; } public double calculate() { double max = 0; double maxPeak = 0; double drawDown = 0; for (int i = 0; i < seriesSize; i++) { double value = indicator.getValue(i).doubleValue(); if (value > maxPeak) { maxPeak = value; } drawDown = maxPeak - value; if (drawDown > max) { max = drawDown; } } return max; } } --- MaximumDrawDownCriteria.java DELETED --- Index: RewardRiskRatioCriterion.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/analysis/criteria/RewardRiskRatioCriterion.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** RewardRiskRatioCriterion.java 8 Jun 2007 15:14:26 -0000 1.1 --- RewardRiskRatioCriterion.java 8 Jun 2007 18:24:36 -0000 1.2 *************** *** 13,21 **** ! private MaximumDrawDownCriteria maxDrawnCriteria; public RewardRiskRatioCriterion(Indicator<? extends Number> indicator, List<Trade> trades, int seriesSize) { this.totalProfit = new TotalProfitCriterion(indicator,trades); ! maxDrawnCriteria = new MaximumDrawDownCriteria(indicator,seriesSize); } --- 13,21 ---- ! private MaximumDrawDownCriterion maxDrawnCriterion; public RewardRiskRatioCriterion(Indicator<? extends Number> indicator, List<Trade> trades, int seriesSize) { this.totalProfit = new TotalProfitCriterion(indicator,trades); ! maxDrawnCriterion = new MaximumDrawDownCriterion(indicator,seriesSize); } *************** *** 26,30 **** public double calculate() { ! return totalProfit.calculate()/maxDrawnCriteria.calculate(); } --- 26,30 ---- public double calculate() { ! return totalProfit.calculate()/maxDrawnCriterion.calculate(); } --- NEW FILE: AverageProfitCriterion.java --- package net.sf.tail.analysis.criteria; import java.util.List; import net.sf.tail.Indicator; import net.sf.tail.TimeSeries; import net.sf.tail.Trade; import net.sf.tail.indicator.simple.ClosePriceIndicator; public class AverageProfitCriterion implements AnalysisCriterion { private final AnalysisCriterion totalProfit; int nTicks = 0; public AverageProfitCriterion(Indicator<? extends Number> indicator, List<Trade> trades) { totalProfit = new TotalProfitCriterion(indicator,trades); for (Trade trade : trades) { nTicks += trade.getExit().getIndex() - trade.getEntry().getIndex(); } } public AverageProfitCriterion(TimeSeries series, List<Trade> trades) { this(new ClosePriceIndicator(series),trades); } public double calculate() { return Math.pow(totalProfit.calculate(), 1d/nTicks); } } |