Update of /cvsroot/tail/Tail/src/java/net/sf/tail/indicator/tracker
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv11972/src/java/net/sf/tail/indicator/tracker
Modified Files:
CachedIndicator.java RSIIndicator.java
Log Message:
Mais alguns TODOs e formatao de cdigo.
Index: RSIIndicator.java
===================================================================
RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/indicator/tracker/RSIIndicator.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -C2 -d -r1.7 -r1.8
*** RSIIndicator.java 14 May 2007 12:08:21 -0000 1.7
--- RSIIndicator.java 15 May 2007 14:52:43 -0000 1.8
***************
*** 10,40 ****
protected Double calculate(int index) {
! return 100d - 100d/(1 + rs(index));
}
!
private Double rs(int index) {
! if(index < timeFrame){
! /* TODO - Na interpretação da minha fonte (www.stockcharts.com) RSI de Ãndices menores que o timeFrame são null */
}
! return averageGain(index)/averageLoss(index);
}
private double averageLoss(int index) {
double result = 0;
! for (int i = Math.max(1, index - timeFrame + 1); i <= index; i++) {
! if(indicator.getValue(i).doubleValue() < indicator.getValue(i-1).doubleValue() )
! result += indicator.getValue(i-1).doubleValue() - indicator.getValue(i).doubleValue();
}
! return result/ Math.min(timeFrame, index + 1);
}
public double averageGain(int index) {
double result = 0;
! for (int i = Math.max(1, index - timeFrame + 1); i <= index; i++) {
! if(indicator.getValue(i).doubleValue() >= indicator.getValue(i-1).doubleValue() )
! result += indicator.getValue(i).doubleValue() - indicator.getValue(i-1).doubleValue();
}
! return result/ Math.min(timeFrame, index + 1);
}
}
--- 10,53 ----
protected Double calculate(int index) {
! return 100d - 100d / (1 + rs(index));
}
!
private Double rs(int index) {
! if (index < timeFrame) {
! /*
! * TODO - Na interpretação da minha fonte (www.stockcharts.com) RSI
! * de Ãndices menores que o timeFrame são null
! */
}
! return averageGain(index) / averageLoss(index);
}
+ /*
+ * TODO: O código desse método e do averageGain parecem muito duplicados
+ * (pouca coisa diferente). Ambos iteram nos mesmos Ãndices, o que significa
+ * que estamos fazendo loops demais. Como são private, acho que já podÃamos
+ * acumular as duas coisas para evitar comparações desnecessárias depois.
+ * (dtsato)
+ */
private double averageLoss(int index) {
double result = 0;
! for (int i = Math.max(1, index - timeFrame + 1); i <= index; i++) {
! if (indicator.getValue(i).doubleValue() < indicator.getValue(i - 1).doubleValue())
! result += indicator.getValue(i - 1).doubleValue() - indicator.getValue(i).doubleValue();
}
! return result / Math.min(timeFrame, index + 1);
}
+ /*
+ * TODO: Por que esse é público e o outro é private? (dtsato)
+ */
public double averageGain(int index) {
double result = 0;
! for (int i = Math.max(1, index - timeFrame + 1); i <= index; i++) {
! if (indicator.getValue(i).doubleValue() >= indicator.getValue(i - 1).doubleValue())
! result += indicator.getValue(i).doubleValue() - indicator.getValue(i - 1).doubleValue();
}
! return result / Math.min(timeFrame, index + 1);
}
}
Index: CachedIndicator.java
===================================================================
RCS file: /cvsroot/tail/Tail/src/java/net/sf/tail/indicator/tracker/CachedIndicator.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** CachedIndicator.java 14 May 2007 15:47:09 -0000 1.2
--- CachedIndicator.java 15 May 2007 14:52:43 -0000 1.3
***************
*** 16,19 ****
--- 16,25 ----
protected List<T> results;
+ /*
+ * TODO: Não entendi esse construtor nem os parâmetros. Eles não são usados
+ * aqui. Concordo em deixar o CachedIndicator como um decorator de Indicator.
+ * (dtsato)
+ */
+
public CachedIndicator(Indicator<? extends Number> indicator, int timeFrame) {
this.indicator = indicator;
|