| | |
| | | // 金叉判断:DIF从下往上穿过DEA |
| | | boolean isGoldenCross = prevPrev.getDif().compareTo(prevPrev.getDea()) <= 0 && |
| | | previous.getDif().compareTo(previous.getDea()) > 0; |
| | | |
| | | boolean isUp = latest.getDif().compareTo(BigDecimal.ZERO) > 0 && latest.getDea().compareTo(BigDecimal.ZERO) > 0; |
| | | |
| | | // 柱状线扩张判断:连续正值且绝对值增大 |
| | | boolean isExpanding = latest.getMacdHist().compareTo(BigDecimal.ZERO) > 0 && |
| | | boolean isExpanding = latest.getMacdHist().compareTo(BigDecimal.ZERO) > 0 && |
| | | previous.getMacdHist().compareTo(BigDecimal.ZERO) > 0 && |
| | | previous.getMacdHist().abs().compareTo(latest.getMacdHist().abs()) < 0; |
| | | |
| | | // 金叉或柱状线扩张任一满足即可 |
| | | return isGoldenCross && isExpanding; |
| | | return isGoldenCross && isExpanding && isUp; |
| | | } |
| | | |
| | | /** |
| | |
| | | boolean isDeathCross = prevPrev.getDif().compareTo(prevPrev.getDea()) >= 0 && |
| | | previous.getDif().compareTo(previous.getDea()) < 0; |
| | | |
| | | boolean isDown = latest.getDif().compareTo(BigDecimal.ZERO) < 0 && latest.getDea().compareTo(BigDecimal.ZERO) < 0; |
| | | |
| | | // 柱状线收缩判断:连续负值且绝对值减小 |
| | | boolean isContracting = latest.getMacdHist().compareTo(BigDecimal.ZERO) < 0 && |
| | | boolean isContracting = latest.getMacdHist().compareTo(BigDecimal.ZERO) < 0 && |
| | | previous.getMacdHist().compareTo(BigDecimal.ZERO) < 0 && |
| | | previous.getMacdHist().abs().compareTo(latest.getMacdHist().abs()) > 0; |
| | | |
| | | // 死叉或柱状线收缩任一满足即可 |
| | | return isDeathCross && isContracting; |
| | | return isDeathCross && isContracting && isDown; |
| | | } |
| | | |
| | | /** |