|
From: Márcio V. d. S. <mv...@us...> - 2007-05-17 23:07:00
|
Update of /cvsroot/tail/Tail/src/java/net/sf/tail/indicator/tracker In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv3463/src/java/net/sf/tail/indicator/tracker Modified Files: SMAIndicator.java CachedIndicator.java WilliamsRIndicator.java EMAIndicator.java AverageLossIndicator.java RSIIndicator.java AverageGainIndicator.java Log Message: Refatoração de código Index: EMAIndicator.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/indicator/tracker/EMAIndicator.java,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** EMAIndicator.java 17 May 2007 21:30:55 -0000 1.10 --- EMAIndicator.java 17 May 2007 23:06:56 -0000 1.11 *************** *** 6,26 **** private final Indicator<? extends Number> indicator; private final int timeFrame; ! public EMAIndicator(Indicator<? extends Number> indicator, int timeFrame) { this.indicator = indicator; this.timeFrame = timeFrame; } ! ! private double multiplier(){ ! return 2 / (double)(timeFrame + 1); } ! public Double getValue(int index) { ! if(index + 1 < timeFrame) ! return new SMAIndicator(indicator,timeFrame).getValue(index); ! double emaPrev = getValue(index - 1).doubleValue(); ! return ( ( indicator.getValue(index).doubleValue() - emaPrev ) * multiplier()) + emaPrev; } } --- 6,27 ---- private final Indicator<? extends Number> indicator; + private final int timeFrame; ! public EMAIndicator(Indicator<? extends Number> indicator, int timeFrame) { this.indicator = indicator; this.timeFrame = timeFrame; } ! ! private double multiplier() { ! return 2 / (double) (timeFrame + 1); } ! public Double getValue(int index) { ! if (index + 1 < timeFrame) ! return new SMAIndicator(indicator, timeFrame).getValue(index); ! double emaPrev = getValue(index - 1).doubleValue(); ! return ((indicator.getValue(index).doubleValue() - emaPrev) * multiplier()) + emaPrev; } } Index: AverageLossIndicator.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/indicator/tracker/AverageLossIndicator.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** AverageLossIndicator.java 17 May 2007 21:30:54 -0000 1.2 --- AverageLossIndicator.java 17 May 2007 23:06:56 -0000 1.3 *************** *** 6,11 **** private final Indicator<? extends Number> indicator; private final int timeFrame; ! public AverageLossIndicator(Indicator<? extends Number> indicator, int timeFrame) { this.indicator = indicator; --- 6,12 ---- private final Indicator<? extends Number> indicator; + private final int timeFrame; ! public AverageLossIndicator(Indicator<? extends Number> indicator, int timeFrame) { this.indicator = indicator; Index: RSIIndicator.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/indicator/tracker/RSIIndicator.java,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** RSIIndicator.java 17 May 2007 21:30:55 -0000 1.10 --- RSIIndicator.java 17 May 2007 23:06:56 -0000 1.11 *************** *** 6,11 **** private final Indicator<? extends Number> indicator; private final int timeFrame; ! public RSIIndicator(Indicator<? extends Number> indicator, int timeFrame) { this.indicator = indicator; --- 6,12 ---- private final Indicator<? extends Number> indicator; + private final int timeFrame; ! public RSIIndicator(Indicator<? extends Number> indicator, int timeFrame) { this.indicator = indicator; Index: SMAIndicator.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/indicator/tracker/SMAIndicator.java,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** SMAIndicator.java 17 May 2007 21:30:54 -0000 1.8 --- SMAIndicator.java 17 May 2007 23:06:56 -0000 1.9 *************** *** 6,11 **** private final Indicator<? extends Number> indicator; private final int timeFrame; ! public SMAIndicator(Indicator<? extends Number> indicator, int timeFrame) { this.indicator = indicator; --- 6,12 ---- private final Indicator<? extends Number> indicator; + private final int timeFrame; ! public SMAIndicator(Indicator<? extends Number> indicator, int timeFrame) { this.indicator = indicator; *************** *** 16,25 **** double sum = 0.0; for (int i = Math.max(0, index - timeFrame + 1); i <= index; i++) { ! sum += indicator.getValue(i).doubleValue(); } ! return sum / Math.min(timeFrame, index + 1); } - } --- 17,25 ---- double sum = 0.0; for (int i = Math.max(0, index - timeFrame + 1); i <= index; i++) { ! sum += indicator.getValue(i).doubleValue(); } ! return sum / Math.min(timeFrame, index + 1); } } Index: AverageGainIndicator.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/indicator/tracker/AverageGainIndicator.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** AverageGainIndicator.java 17 May 2007 21:30:55 -0000 1.2 --- AverageGainIndicator.java 17 May 2007 23:06:56 -0000 1.3 *************** *** 6,11 **** private final Indicator<? extends Number> indicator; private final int timeFrame; ! public AverageGainIndicator(Indicator<? extends Number> indicator, int timeFrame) { this.indicator = indicator; --- 6,12 ---- private final Indicator<? extends Number> indicator; + private final int timeFrame; ! public AverageGainIndicator(Indicator<? extends Number> indicator, int timeFrame) { this.indicator = indicator; Index: WilliamsRIndicator.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/indicator/tracker/WilliamsRIndicator.java,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** WilliamsRIndicator.java 17 May 2007 22:58:07 -0000 1.5 --- WilliamsRIndicator.java 17 May 2007 23:06:56 -0000 1.6 *************** *** 8,17 **** public class WilliamsRIndicator implements Indicator<Double> { ! private final Indicator<? extends Number> indicator; private final int timeFrame; private MaxPriceIndicator maxPriceIndicator; private MinPriceIndicator minPriceIndicator; ! public WilliamsRIndicator(TimeSeries timeSeries, int timeFrame) { --- 8,21 ---- public class WilliamsRIndicator implements Indicator<Double> { ! private final Indicator<? extends Number> indicator; + private final int timeFrame; + private MaxPriceIndicator maxPriceIndicator; + private MinPriceIndicator minPriceIndicator; ! ! // TODO - ver a complexidade dos construtores. public WilliamsRIndicator(TimeSeries timeSeries, int timeFrame) { *************** *** 25,38 **** this.minPriceIndicator = minPriceIndicator; } ! public Double getValue(int index) { HighestValueIndicator highestHigh = new HighestValueIndicator(maxPriceIndicator, timeFrame); LowestValueIndicator lowestMin = new LowestValueIndicator(minPriceIndicator, timeFrame); ! double highestHighPrice = highestHigh.getValue(index); double lowestLowPrice = lowestMin.getValue(index); ! ! return ((highestHighPrice - indicator.getValue(index).doubleValue()) / (highestHighPrice - lowestLowPrice)) * -100d; } } - --- 29,46 ---- this.minPriceIndicator = minPriceIndicator; } ! public Double getValue(int index) { + /* + * TODO - Pensar em otimização ou maior número de indicadores ? + * + */ HighestValueIndicator highestHigh = new HighestValueIndicator(maxPriceIndicator, timeFrame); LowestValueIndicator lowestMin = new LowestValueIndicator(minPriceIndicator, timeFrame); ! double highestHighPrice = highestHigh.getValue(index); double lowestLowPrice = lowestMin.getValue(index); ! ! return ((highestHighPrice - indicator.getValue(index).doubleValue()) / (highestHighPrice - lowestLowPrice)) ! * -100d; } } Index: CachedIndicator.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/indicator/tracker/CachedIndicator.java,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** CachedIndicator.java 17 May 2007 21:42:16 -0000 1.6 --- CachedIndicator.java 17 May 2007 23:06:56 -0000 1.7 *************** *** 9,15 **** public class CachedIndicator implements Indicator { - private final Indicator<? extends Number> indicator; private List<Number> results; --- 9,15 ---- public class CachedIndicator implements Indicator { private final Indicator<? extends Number> indicator; + //TODO - A melhor solução é realmente List<Number> ? private List<Number> results; *************** *** 17,22 **** this.indicator = indicator; results = new ArrayList<Number>(); ! } ! public Number getValue(int index) { increaseLength(index); --- 17,22 ---- this.indicator = indicator; results = new ArrayList<Number>(); ! } ! public Number getValue(int index) { increaseLength(index); *************** *** 34,38 **** } - - } --- 34,36 ---- |