| | |
| | | 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 && |
| | | previous.getMacdHist().compareTo(BigDecimal.ZERO) > 0 && |
| | | previous.getMacdHist().abs().compareTo(latest.getMacdHist().abs()) < 0; |
| | | |
| | | // 金叉或柱状线扩张任一满足即可 |
| | | return isGoldenCross && isExpanding && isUp; |
| | | // 金叉柱状线扩张满足 |
| | | return isGoldenCross && isExpanding; |
| | | } |
| | | |
| | | /** |
| | |
| | | } |
| | | |
| | | /** |
| | | * MACD死叉且柱状线收缩检查 |
| | | * MACD死叉且柱状线扩张检查 |
| | | * <p> |
| | | * 条件: |
| | | * 1. DIF线从上往下穿过DEA线(死叉) |
| | | * 2. MACD柱状线绝对值减小且为负值(动量减弱) |
| | | * 2. MACD柱状线绝对值增大且为负值(动量增强) |
| | | * |
| | | * @param macdResult MACD计算结果 |
| | | * @return 是否形成MACD死叉或柱状线收缩 |
| | | * @return 是否形成MACD死叉且柱状线扩张 |
| | | */ |
| | | private boolean isMacdDeathCrossAndContracting(MACDResult macdResult) { |
| | | List<PriceData> macdData = macdResult.getMacdData(); |
| | |
| | | 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 isExpanding = latest.getMacdHist().compareTo(BigDecimal.ZERO) < 0 && |
| | | previous.getMacdHist().compareTo(BigDecimal.ZERO) < 0 && |
| | | previous.getMacdHist().abs().compareTo(latest.getMacdHist().abs()) < 0; |
| | | |
| | | // 死叉或柱状线收缩任一满足即可 |
| | | return isDeathCross && isExpanding && isDown; |
| | | // 死叉且柱状线扩张 |
| | | return isDeathCross && isExpanding; |
| | | } |
| | | |
| | | /** |