我正在尝试在 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);
}
}
尽管该算法几乎可以完成这项工作,但它并不总是最佳的。想知道你们中是否有人有更好的算法来找到股票的支持水平,或者有什么建议来优化这个算法。