|
From: Márcio V. d. S. <mv...@us...> - 2007-05-12 14:24:58
|
Update of /cvsroot/tail/Tail/src/java/net/sf/tail/indicator/tracker In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv14135/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.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** EMAIndicator.java 11 May 2007 20:41:40 -0000 1.1 --- EMAIndicator.java 12 May 2007 14:23:35 -0000 1.2 *************** *** 10,14 **** } ! public Double calculate(int index) { return 0.0; } --- 10,14 ---- } ! public Double getValue(int index) { return 0.0; } Index: SMAIndicator.java =================================================================== RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/indicator/tracker/SMAIndicator.java,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** SMAIndicator.java 11 May 2007 20:41:40 -0000 1.1 --- SMAIndicator.java 12 May 2007 14:23:35 -0000 1.2 *************** *** 1,25 **** package net.sf.tail.indicator.tracker; import net.sf.tail.Indicator; public class SMAIndicator implements Indicator<Double> { ! private final Indicator<? extends Number> indicator; ! private final int timeFrame; ! public SMAIndicator(Indicator<? extends Number> indicator, int timeFrame) { ! this.indicator = indicator; ! this.timeFrame = timeFrame; ! } ! public Double calculate(int index) { ! double sum = 0.0; ! for (int i = Math.max(0, index - timeFrame + 1); i <= index; i++) { ! sum += indicator.calculate(i).doubleValue(); ! } ! return sum / Math.min(timeFrame, index + 1); ! } } --- 1,45 ---- package net.sf.tail.indicator.tracker; + import java.util.ArrayList; + import java.util.List; import net.sf.tail.Indicator; public class SMAIndicator implements Indicator<Double> { ! 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); ! ! } ! private Double calculate(int index) { ! double sum = 0.0; ! for (int i = Math.max(0, index - timeFrame + 1); i <= index; i++) { ! 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; ! } } |