edit | blame | history | raw

com.xcong.excoin.modules.okxNewPrice.indicator 包文档

1. 包概述

该包实现了一套完整的技术指标分析系统,包含基础指标计算、高级指标策略以及信号生成功能。主要用于加密货币交易中的技术分析和策略决策,支持三重EMA交叉系统、波动率自适应布林带、MACD能量柱分级策略等高级分析方法。

2. 类层次结构

├── IndicatorBase (抽象基类)
│   ├── MA (简单移动平均线)
│   ├── AdvancedMA (三重EMA交叉系统)
│   ├── BOLL (波动率自适应布林带)
│   ├── MACD (移动平均线收敛发散)
│   ├── RSI (相对强弱指标)
│   └── KDJ (随机指标)
└── strategy/
    ├── TechnicalIndicatorStrategy (策略接口)
    ├── AbstractTechnicalIndicatorStrategy (策略抽象基类)
    ├── CoreTechnicalStrategy (核心技术指标策略)
    ├── ComprehensiveTechnicalStrategy (综合技术指标策略)
    └── TradeSignal (交易信号枚举)

3. 核心类详解

3.1 IndicatorBase (指标基类)

功能:提供所有技术指标的通用计算方法

核心方法
- calculateMA(List<BigDecimal> prices, int period) - 计算移动平均值
- calculateEMA(List<BigDecimal> prices, int period, BigDecimal prevEMA) - 计算指数移动平均值
- calculateStdDev(List<BigDecimal> prices, int period) - 计算标准差
- getRecentPrices(List<BigDecimal> prices, int period) - 获取最近N个价格数据

使用场景:作为所有指标类的父类,提供基础计算功能

3.2 MA (移动平均线)

功能:实现标准周期的移动平均线指标

支持的周期
- MA5/MA10/MA20/MA30/MA60 (简单移动平均线)
- EMA5/EMA10/EMA20/EMA30/EMA60 (指数移动平均线)

核心方法
- calculate(List<BigDecimal> prices) - 计算所有周期的移动平均线
- isGoldenCross() - 判断金叉信号
- isDeathCross() - 判断死叉信号

使用场景:用于基本趋势判断和交叉信号分析

3.3 AdvancedMA (高级移动平均线)

功能:实现三重EMA交叉系统,用于高级趋势分析

支持的周期:EMA9/EMA21/EMA55 (三重EMA交叉系统)

核心方法
- calculateTripleEMA(List<BigDecimal> prices) - 计算三重EMA指标
- isBullish() - 判断多头排列 (9EMA > 21EMA > 55EMA)
- isBearish() - 判断空头排列 (9EMA < 21EMA < 55EMA)
- calculatePercent() - 计算三线粘合度
- isUpAndDown() - 判断震荡行情 (粘合度 < 2%)

使用场景:用于判断市场趋势强度和过滤震荡行情

3.4 BOLL (布林带)

功能:实现波动率自适应布林带指标

计算逻辑
- 中轨(MB)= N日移动平均线
- 上轨(UP)= 中轨 + K倍标准差
- 下轨(DN)= 中轨 - K倍标准差

核心方法
- calculate(List<BigDecimal> prices) - 计算布林带指标
- isBreakUpper() - 判断价格突破上轨
- isBreakLower() - 判断价格跌破下轨
- isReturnFromUpper() - 判断价格回归上轨下方
- isReturnFromLower() - 判断价格回归下轨上方
- calculateBandWidth() - 计算布林带宽度

使用场景:用于判断价格波动范围和突破信号

3.5 MACD (移动平均线收敛发散)

功能:实现MACD指标,包括DIF、DEA和柱状图

计算逻辑
- DIF = EMA(12) - EMA(26)
- DEA = EMA(DIF, 9)
- MACD柱状图 = (DIF - DEA) * 2

核心方法
- calculate(List<BigDecimal> prices) - 计算MACD指标
- isGoldenCross() - 判断金叉信号(DIF上穿DEA)
- isDeathCross() - 判断死叉信号(DIF下穿DEA)

使用场景:用于判断价格动量和趋势强度

3.6 RSI (相对强弱指标)

功能:实现相对强弱指标,用于判断超买超卖

计算逻辑
- RSI = 100 - (100 / (1 + (平均上涨幅度 / 平均下跌幅度)))

核心方法
- calculate(List<BigDecimal> prices) - 计算RSI指标
- isOverbought() - 判断超买 (RSI > 70)
- isOversold() - 判断超卖 (RSI < 30)
- isExtremelyOverbought() - 判断严重超买 (RSI > 80)
- isExtremelyOversold() - 判断严重超卖 (RSI < 20)

使用场景:用于判断市场情绪和价格反转点

3.7 KDJ (随机指标)

功能:实现KDJ指标,用于判断价格反转和超买超卖

计算逻辑
- RSV = (收盘价 - N日内最低价) / (N日内最高价 - N日内最低价) * 100
- K = 2/3 * 前一日K值 + 1/3 * 当日RSV
- D = 2/3 * 前一日D值 + 1/3 * 当日K值
- J = 3*K - 2*D

核心方法
- calculate(List<BigDecimal> prices) - 计算KDJ指标
- isOverbought() - 判断超买 (K > 80)
- isOversold() - 判断超卖 (K < 20)
- isGoldenCross() - 判断金叉信号(K线上穿D线)
- isDeathCross() - 判断死叉信号(K线下穿D线)

使用场景:用于判断价格短期反转和超买超卖

4. 策略相关类

4.1 TechnicalIndicatorStrategy (策略接口)

功能:定义技术指标策略的基本方法

核心方法
- initialize() - 初始化策略
- updatePrices(List<BigDecimal> prices) - 更新价格数据
- getSignal() - 获取交易信号
- getStrategyName() - 获取策略名称
- isValid() - 判断策略是否有效

使用场景:作为所有技术指标策略的接口,定义统一的方法规范

4.2 AbstractTechnicalIndicatorStrategy (策略抽象基类)

功能:提供技术指标策略的通用功能

核心功能
- 价格历史管理(最多保存100条记录)
- 策略初始化
- 价格更新
- 交易请求参数创建

使用场景:作为所有具体策略的父类,提供基础功能

4.3 TradeSignal (交易信号枚举)

功能:定义所有可能的交易信号类型

信号类型
- NO_SIGNAL (无信号)
- BUY (买入)
- SELL (卖出)
- OPEN_LONG (开多)
- CLOSE_LONG (平多)
- OPEN_SHORT (开空)
- CLOSE_SHORT (平空)
- STOP_LOSS (止损)
- TAKE_PROFIT (止盈)

使用场景:用于策略生成和传递交易信号

4.4 CoreTechnicalStrategy (核心技术指标策略)

功能:整合三重EMA交叉系统、波动率自适应布林带、MACD能量柱分级策略等高级指标

核心特点
- 波动率自适应布林带(根据ATR动态调整标准差倍数)
- MACD能量柱面积指标(累计过去5根柱体积分)
- 多重指标综合分析(EMA、MACD、RSI、KDJ、BOLL)
- 震荡行情过滤(三线粘合度 < 2%)

交易信号生成规则
- 多头入场:当前柱体>0且面积增速>前周期20%
- 空头入场:当前柱体<0且面积增速>前周期20%
- 突破上轨+成交量放大3倍=做空信号
- 触及下轨+期货资金费率转正=做多信号
- 空头反转:柱体顶背离+RSI>70区域死叉
- 多头反转:柱体底背离+RSI<30区域金叉

使用场景:用于复杂的技术分析和交易决策

4.5 ComprehensiveTechnicalStrategy (综合技术指标策略)

功能:整合MACD、KDJ、RSI、BOLL等指标生成交易信号

核心特点
- 基于多空方向分别分析信号
- 结合超买超卖条件和指标交叉信号
- 简化的信号生成逻辑

交易信号生成规则
- 多头方向:RSI超卖+KDJ金叉或布林带下轨突破+MACD金叉=买入信号
- 多头方向:RSI超买+KDJ死叉或布林带上轨突破+MACD死叉=卖出信号
- 空头方向:RSI超买+KDJ死叉或布林带上轨突破+MACD死叉=卖出信号
- 空头方向:RSI超卖+KDJ金叉或布林带下轨突破+MACD金叉=买入信号

使用场景:用于较为简单的技术分析和交易决策

5. 工作流程

1. 初始化策略(initialize())
2. 更新价格数据(updatePrices())
3. 计算技术指标(calculate())
4. 分析交易信号(analyzeSignal())
5. 生成交易请求参数(createTradeRequestParam())
6. 执行交易操作

6. 如何使用

6.1 基本使用示例

// 创建策略实例
CoreTechnicalStrategy strategy = new CoreTechnicalStrategy();

// 初始化策略
strategy.initialize();

// 更新价格数据(需要外部定期调用)
List<BigDecimal> prices = new ArrayList<>();
// 添加价格数据...
strategy.updatePrices(prices);

// 获取交易信号
TradeRequestParam param = strategy.getSignal("account1", "45000.0", "long");

// 处理交易信号
if (TradeSignal.BUY.equals(param.getSignal())) {
    // 执行买入操作
} else if (TradeSignal.SELL.equals(param.getSignal())) {
    // 执行卖出操作
}

6.2 参数说明

  • accountName:账户名称,用于标识交易账户
  • markPx:当前标记价格,用于计算指标和生成信号
  • posSide:仓位方向,取值为"long"(多头)或"short"(空头)

6.3 价格更新说明

策略不会自动更新价格历史,需要外部定期调用updatePrices()方法添加新价格。价格历史最多保存100条记录,超过时会自动移除最旧的价格记录。

7. 代码优化建议

  1. 性能优化
  • 考虑使用缓存机制存储已计算的指标值
  • 对于高频更新的场景,可实现增量计算
  1. 功能扩展
  • 添加更多技术指标(如ATR、OBV等)
  • 实现回测功能,支持历史数据验证
  1. 鲁棒性提升
  • 增加异常处理和参数验证
  • 实现策略监控和告警机制
  1. 可维护性
  • 提取常量到配置文件
  • 增强日志记录,便于调试和分析

8. 总结

该包提供了一套完整的技术指标分析系统,支持从基础指标计算到高级策略分析的全流程。通过整合多种技术指标,实现了复杂的交易信号生成逻辑,可用于加密货币交易中的技术分析和策略决策。系统设计遵循面向对象原则,具有良好的可扩展性和可维护性。