kali-hi
Banned
- Registriert
- Sep. 2025
- Beiträge
- 760
Diese Methode ist recht wichtig, deshalb wollte ich wissen, ob meine Implementierung richtig ist, und auch, wie dafür ein funktionaler Ansatz aussehen könnte.
Es soll geprüft werden, ob der RSI-Wert von unten nach oben kreuzt und aktuell über einem festen Wert liegt. Dafür muss ich doch nur über eine bestimmte Zeitspanne die lokalen Minima und Maxima ermitteln - oder? Wie lang muss diese Zeitspanne denn sein?
Könnte diese Methode auch anders implementiert werden? Und ist der Doc-String auch richtig, oder ist er "zu blumig" (also zu sehr "Wie?", anstatt "Was?" betont) geschrieben?
Es soll geprüft werden, ob der RSI-Wert von unten nach oben kreuzt und aktuell über einem festen Wert liegt. Dafür muss ich doch nur über eine bestimmte Zeitspanne die lokalen Minima und Maxima ermitteln - oder? Wie lang muss diese Zeitspanne denn sein?
Könnte diese Methode auch anders implementiert werden? Und ist der Doc-String auch richtig, oder ist er "zu blumig" (also zu sehr "Wie?", anstatt "Was?" betont) geschrieben?
Java:
/**
* Checks whether the RSI has risen from below 50 to above 50 in recent periods.
*
* <p>To do this, local minima and maxima of the RSI values in the last look-back periods are
* determined and compared to determine whether the minimum occurred before the maximum. Finally,
* this method checks whether the last RSI value is above 50.
*
* @return true if RSI has risen from below 50 to above 50, false otherwise
*/
public boolean isRsiRisesFromBelowToAbove50() {
final int lookBackPeriods = 6;
ClosePriceIndicator closePrice = new ClosePriceIndicator(series);
RSIIndicator rsiIndicator = new RSIIndicator(closePrice, RSI_PERIOD);
final int endIndex = series.getEndIndex();
int minIndex = endIndex - lookBackPeriods;
int maxIndex = endIndex - lookBackPeriods;
for (int i = endIndex - lookBackPeriods + 1; i < endIndex; i++) {
double rsiValue = rsiIndicator.getValue(i).doubleValue();
if (rsiValue < rsiIndicator.getValue(minIndex).doubleValue()) {
minIndex = i;
}
if (rsiValue > rsiIndicator.getValue(maxIndex).doubleValue()) {
maxIndex = i;
}
}
double lastRsi = rsiIndicator.getValue(endIndex).doubleValue();
return minIndex < maxIndex && lastRsi > 50.0;
}