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