0

我正在尝试在 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);
    }
}

尽管该算法几乎可以完成这项工作,但它并不总是最佳的。想知道你们中是否有人有更好的算法来找到股票的支持水平,或者有什么建议来优化这个算法。

4

0 回答 0