From 4884ebffeed775d63dbf7bb7d0ece8182f10c344 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Fri, 26 Dec 2025 18:19:46 +0800
Subject: [PATCH] fix(okxNewPrice): 解决交易订单为空时的空指针异常
---
src/main/java/com/xcong/excoin/modules/okxNewPrice/indicator/macdAndMatrategy/MACD_MA_Strategy_Documentation | 182 +++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 182 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/xcong/excoin/modules/okxNewPrice/indicator/macdAndMatrategy/MACD_MA_Strategy_Documentation b/src/main/java/com/xcong/excoin/modules/okxNewPrice/indicator/macdAndMatrategy/MACD_MA_Strategy_Documentation
new file mode 100644
index 0000000..bf38da3
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/modules/okxNewPrice/indicator/macdAndMatrategy/MACD_MA_Strategy_Documentation
@@ -0,0 +1,182 @@
+MACD和MA组合交易策略文档
+
+策略概述
+
+该策略是一个综合的技术分析交易系统,结合了EMA指标、MACD指标、价格突破信号和波动率过滤,形成了一套完整的开仓、平仓和持仓管理机制。
+
+策略核心逻辑
+
+开仓条件
+
+多头开仓条件
+
+EMA金叉:短期EMA(12周期)上穿长期EMA(26周期)
+MACD柱状线扩张+金叉:
+DIF线(MACD线)上穿DEA线(信号线)形成金叉
+MACD柱状线在零轴上方且呈扩张趋势
+价格突破前高:价格突破前15个周期的高点
+波动率过滤:波动率在0.5%~5%之间
+
+空头开仓条件
+
+EMA死叉:短期EMA(12周期)下穿长期EMA(26周期)
+MACD柱状线收缩+死叉:
+DIF线下穿DEA线形成死叉
+MACD柱状线在零轴下方且呈收缩趋势
+价格跌破前低:价格跌破前低并形成顶背离
+波动率过滤:波动率在0.5%~5%之间
+
+平仓条件
+
+平仓逻辑遵循以下优先级:
+
+止损触发:当价格达到预设的止损比例时平仓
+止盈触发:当价格达到预设的止盈比例时平仓
+MACD反向信号:当出现反向的MACD信号时平仓
+
+平仓流程
+
+plaintext
+开始平仓检查
+ |
+ v
+是否持仓? --否--> 结束
+ |
+ v
+检查止损 --触发止损--> 平仓
+ |
+ v
+检查止盈 --触发止盈--> 平仓
+ |
+ v
+检查MACD反向信号 --出现死叉/金叉--> 平仓
+ |
+ v
+保持持仓
+
+
+策略参数
+
+默认参数
+
+短期EMA周期:12
+长期EMA周期:26
+MACD信号线周期:9
+波动率计算周期:20
+止损比例:1%
+止盈比例:2%
+
+自定义参数
+
+用户可以根据需要调整以下参数:
+
+shortPeriod:短期EMA周期
+longPeriod:长期EMA周期
+signalPeriod:MACD信号线周期
+volatilityPeriod:波动率计算周期
+stopLossRatio:止损比例
+takeProfitRatio:止盈比例
+
+策略实现细节
+
+关键技术指标
+
+EMA指标:使用指数移动平均线,对近期价格赋予更高权重
+MACD指标:
+DIF:短期EMA与长期EMA的差值
+DEA:DIF的指数移动平均线
+MACD柱状图:DIF与DEA的差值
+波动率指标:使用标准差与平均值的比值计算波动率
+
+信号检测
+
+金叉/死叉检测:通过比较连续两个周期的DIF和DEA值判断交叉信号
+柱状线扩张/收缩检测:通过比较连续三个周期的MACD柱状线值判断趋势
+价格突破检测:通过比较当前价格与前15个周期的最高/最低价判断突破信号
+波动率过滤:确保波动率在0.5%~5%的合理范围内
+
+代码结构
+
+主要类
+
+MacdMaStrategy:策略主类,包含开仓、平仓逻辑
+MACDCalculator:MACD指标计算类
+EMACalculator:EMA指标计算类
+Volatility:波动率计算类
+BullishSignalDetector:多头信号检测类
+BearishSignalDetector:空头信号检测类
+PriceData:价格数据实体类
+MACDResult:MACD计算结果封装类
+
+核心方法
+
+analyze() :主分析方法,处理价格数据并生成交易信号
+generateTradingOrder() :生成交易指令,返回包含side和posSide的组合
+isLongEntryCondition() :多头开仓条件检查
+isShortEntryCondition() :空头开仓条件检查
+shouldClosePosition() :平仓条件检查
+isStopLossTriggered() :止损触发检查
+isTakeProfitTriggered() :止盈触发检查
+
+使用示例
+
+java
+// 创建策略实例(使用默认参数)
+MacdMaStrategy strategy = new MacdMaStrategy();
+
+// 示例:模拟历史价格数据
+List<BigDecimal> historicalPrices = new ArrayList<>();
+for (int i = 0; i < 50; i++) {
+ historicalPrices.add(new BigDecimal("100.00").add(new BigDecimal(i * 0.5)));
+}
+
+// 模拟实时价格流处理
+for (int i = 0; i < 20; i++) {
+ BigDecimal newPrice = new BigDecimal("125.00").add(new BigDecimal(i * 0.2));
+ historicalPrices.add(newPrice);
+
+ // 使用策略分析最新价格数据并生成交易指令
+ MacdMaStrategy.TradingOrder order = strategy.generateTradingOrder(historicalPrices);
+
+ // 根据指令执行交易操作
+ if (order != null) {
+ if (order.getSide().equals("buy") && order.getPosSide().equals("long")) {
+ System.out.println("[交易操作] 买入开多");
+ } else if (order.getSide().equals("sell") && order.getPosSide().equals("short")) {
+ System.out.println("[交易操作] 卖出开空");
+ } else if (order.getSide().equals("sell") && order.getPosSide().equals("long")) {
+ System.out.println("[交易操作] 卖出平多");
+ } else if (order.getSide().equals("buy") && order.getPosSide().equals("short")) {
+ System.out.println("[交易操作] 买入平空");
+ }
+ }
+}
+
+
+交易指令说明
+
+策略生成的交易指令包含以下组合:
+
+操作类型 side posSide 说明
+开多 buy long 买入开多
+开空 sell short 卖出开空
+平多 sell long 卖出平多
+平空 buy short 买入平空
+
+策略优势
+
+多维度验证:结合了趋势指标(EMA)、动量指标(MACD)、价格形态和波动率过滤
+严格的风险控制:设置了明确的止损和止盈机制
+自适应市场:通过波动率过滤避免在极端市场条件下交易
+清晰的交易逻辑:开仓和平仓条件明确,易于理解和验证
+
+注意事项
+
+数据质量:策略依赖于高质量的历史价格数据
+参数优化:建议根据不同的交易品种和时间周期优化参数
+回测验证:在实盘交易前进行充分的回测验证
+市场适应性:策略可能在某些市场环境下表现更好,建议结合其他分析方法
+
+总结
+
+该MACD和MA组合交易策略是一个稳健的技术分析系统,通过多维度的指标验证和严格的风险控制,为交易者提供了一套系统化的交易决策框架。策略的实现遵循了模块化设计原则,便于维护和扩展。
\ No newline at end of file
--
Gitblit v1.9.1