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