|
From: Márcio V. d. S. <mv...@us...> - 2007-05-12 17:34:06
|
Update of /cvsroot/tail/Tail/src/java/net/sf/tail/indicator/tracker In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv31643/src/java/net/sf/tail/indicator/tracker Modified Files: SMAIndicator.java EMAIndicator.java Log Message: Continuando a readaptar as classes Index: EMAIndicator.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/indicator/tracker/EMAIndicator.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** EMAIndicator.java 12 May 2007 14:23:35 -0000 1.2 --- EMAIndicator.java 12 May 2007 17:34:01 -0000 1.3 *************** *** 5,17 **** public class EMAIndicator implements Indicator<Double> { ! public EMAIndicator(Indicator<? extends Number> indicator, int timeFrame) { ! } public Double getValue(int index) { ! return 0.0; } ! } --- 5,53 ---- public class EMAIndicator implements Indicator<Double> { ! private final Indicator<? extends Number> indicator; ! private final int timeFrame; ! private Double[] resultsList; ! public EMAIndicator(Indicator<? extends Number> indicator, int timeFrame) { ! this.indicator = indicator; ! this.timeFrame = timeFrame; ! resultsList = new Double[100]; } public Double getValue(int index) { ! if(resultsList.length <= index ) { ! resultsList = increaseLenght(resultsList); ! } ! if(resultsList[index] == null){ ! resultsList[index] = calculate(index); ! } ! return resultsList[index]; } ! private Double[] increaseLenght(Double[] array) { ! Double[] tmpDouble = new Double[array.length*2]; ! for (int i = 0; i < array.length; i++) { ! tmpDouble[i] = array[i]; ! } ! return tmpDouble; ! } ! ! private double multiplier(){ ! return 2 / (timeFrame + 1); ! } ! ! private Double calculate(int index) { ! ! if(index + 1 < timeFrame){ ! return new SMAIndicator(indicator,timeFrame).getValue(index); ! } ! ! double emaPrev = getValue(index - 1).doubleValue(); ! double result = ( ( indicator.getValue(index).doubleValue() - emaPrev ) * multiplier()) + emaPrev; ! ! ! return result; ! ! ! } } Index: SMAIndicator.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/indicator/tracker/SMAIndicator.java,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** SMAIndicator.java 12 May 2007 14:23:35 -0000 1.2 --- SMAIndicator.java 12 May 2007 17:34:01 -0000 1.3 *************** *** 1,6 **** package net.sf.tail.indicator.tracker; - import java.util.ArrayList; - import java.util.List; import net.sf.tail.Indicator; --- 1,4 ---- *************** *** 9,27 **** private final Indicator<? extends Number> indicator; private final int timeFrame; ! private List<Double> resultsList; public SMAIndicator(Indicator<? extends Number> indicator, int timeFrame) { this.indicator = indicator; this.timeFrame = timeFrame; ! resultsList = new ArrayList<Double>(); } public Double getValue(int index) { ! if(resultsList.get(index) != null) { ! return resultsList.get(index); } ! return calculate(index); ! } --- 7,36 ---- private final Indicator<? extends Number> indicator; private final int timeFrame; ! private Double[] resultsList; public SMAIndicator(Indicator<? extends Number> indicator, int timeFrame) { this.indicator = indicator; this.timeFrame = timeFrame; ! resultsList = new Double[100]; } public Double getValue(int index) { ! if(resultsList.length <= index ) { ! resultsList = increaseLenght(resultsList); } ! if(resultsList[index] == null){ ! resultsList[index] = calculate(index); ! } ! return resultsList[index]; ! ! } ! ! private Double[] increaseLenght(Double[] array) { ! Double[] tmpDouble = new Double[array.length*2]; ! for (int i = 0; i < array.length; i++) { ! tmpDouble[i] = array[i]; ! } ! return tmpDouble; } *************** *** 31,45 **** sum += indicator.getValue(i).doubleValue(); } ! double result = sum / Math.min(timeFrame, index + 1); ! ! /** Armazenando todos resultados já calculados na lista. **/ ! resultsList.add(index, result); ! ! return result; } - public List<Double> getResultsList() { - return resultsList; - } } --- 40,47 ---- sum += indicator.getValue(i).doubleValue(); } ! ! return sum / Math.min(timeFrame, index + 1); } } |