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;
! }
}
|