我试图找到ArrayList中的所有局部最小值。基本思路是找到股票的所有支撑位。
支撑位指的是价格水平,低于该水平,历史上,股票难以下跌。这是买家倾向于进入股票的水平。
我在下面附上了截图,其中显示了该股票的所有支撑位。
在图片中,我突出显示了3个支持级别以及使用该算法获得的这些支持点,如下所示 -
SEGMENT_SIZE = 4;
localMinSkipCount = 0;
noOfSkipSegments = 3;
for(i = 0; i < datapoints.size(); i = i + SEGMENT_SIZE) {
int endIndex = i + SEGMENT_SIZE;
if (endIndex > datapoints.size()) {
endIndex = datapoints.size();
}
// Finds the min point in the segment
double localMin = findLocalMin(i, endIndex);
if (localMins.size() > 0) {
lastLocalMin = localMins.get(localMins.size() - 1);
if ( localMin > lastLocalMin ) {
if (localMinSkipCount > noOfSkipSegments) {
localMins.add(localMin);
localMinSkipCount = 0;
}
localMinSkipCount++;
} else {
// update the local min here
localMins.set(localMins.size() - 1, localMin);
localMinSkipCount = 0;
}
} else {
localMins.add(localMin);
}
}
虽然这个算法几乎完成了这项工作,但它并不总是最佳的。想知道你们是否有更好的算法来找到股票的支撑位或任何建议来优化这种算法。