|
From: Danilo S. <dt...@us...> - 2007-05-15 14:52:44
|
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; |