| | |
| | | * 2. K = 2/3 * 前一日K值 + 1/3 * 当日RSV |
| | | * 3. D = 2/3 * 前一日D值 + 1/3 * 当日K值 |
| | | * 4. J = 3*K - 2*D |
| | | * |
| | | * 作用: |
| | | * 1. 衡量价格的超买超卖状态(K值>80超买,K值<20超卖) |
| | | * 2. K线上穿D线形成金叉,提示买入信号 |
| | | * 3. K线下穿D线形成死叉,提示卖出信号 |
| | | * 4. J值反映市场的极端状态,J值>100或J值<0为极端行情 |
| | | * |
| | | * 价格参数类型: |
| | | * - 参数名称:prices |
| | | * - 参数类型:List<BigDecimal> |
| | | * - 参数说明:需要至少9个(默认周期)价格数据点用于计算 |
| | | * |
| | | * 推荐时间粒度及优缺点: |
| | | * 1. 1分钟(1m): |
| | | * - 优点:反应迅速,适合超短线交易 |
| | | * - 缺点:K值波动剧烈,信号频繁且可靠性低 |
| | | * 2. 5分钟(5m): |
| | | * - 优点:K值波动相对稳定,适合短线交易 |
| | | * - 缺点:仍有一定虚假信号 |
| | | * 3. 15分钟(15m): |
| | | * - 优点:信号较为可靠,适合日内交易 |
| | | * - 缺点:反应速度较慢 |
| | | * 4. 1小时(1h)及以上: |
| | | * - 优点:超买超卖信号明确,适合中期交易 |
| | | * - 缺点:反应滞后,不适合短线交易 |
| | | */ |
| | | @Slf4j |
| | | @Getter |
| | |
| | | .subtract(d.multiply(new BigDecimal(2))) |
| | | .setScale(8, RoundingMode.HALF_UP); |
| | | |
| | | log.debug("KDJ计算结果 - K: {}, D: {}, J: {}", k, d, j); |
| | | log.info("KDJ计算结果 - K: {}, D: {}, J: {}", k, d, j); |
| | | } |
| | | |
| | | /** |
| | | * 判断超买(K > 80) |
| | | * 判断超买(J > 85) |
| | | * @return 是否超买 |
| | | */ |
| | | public boolean isOverbought() { |
| | | return k.compareTo(new BigDecimal(80)) > 0; |
| | | return j.compareTo(new BigDecimal(85)) > 0; |
| | | } |
| | | |
| | | /** |
| | | * 判断超卖(K < 20) |
| | | * 判断超卖(J < 15) |
| | | * @return 是否超卖 |
| | | */ |
| | | public boolean isOversold() { |
| | | return k.compareTo(new BigDecimal(20)) < 0; |
| | | return j.compareTo(new BigDecimal(15)) < 0; |
| | | } |
| | | |
| | | /** |