MACD策略 (Moving Average Convergence Divergence)
技术实现:基于 pandas-ta 库,使用标准 MACD 指标计算
策略原理
MACD 是一种趋势跟踪动量指标,通过分析快速和慢速指数移动平均线(EMA)的差值来判断买卖时机。
核心指标
- MACD线:快速EMA - 慢速EMA(差离值 DIF)
- 信号线:MACD线的EMA平滑(讯号线 DEA)
- 柱状图:MACD线 - 信号线(差值柱状图 OSC)
交易信号
- 金叉买入:柱状图从负值转正(MACD线上穿信号线),且柱状图强度足够
- 死叉卖出:柱状图从正值转负(MACD线下穿信号线),且柱状图强度足够
- 强度过滤:柱状图绝对值需大于 0.01,过滤微小波动
策略参数
| 参数名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| fast_period | int | 5 | 快速EMA周期(分钟级) |
| slow_period | int | 13 | 慢速EMA周期(分钟级) |
| signal_period | int | 4 | 信号线EMA周期 |
| position_size | float | 0.04 | 每次交易的仓位比例(4%) |
注:默认参数针对分钟级交易优化。日线级交易建议使用标准参数(fast=12, slow=26, signal=9)。
预热要求
- 最小历史数据:
slow_period + signal_period条K线(默认 17 条) - 推荐历史数据:50+ 条K线,确保指标计算稳定
信号生成逻辑
1. 真正的交叉检测
策略不是静态比较 MACD 和信号线大小,而是检测真正的”交叉”事件:
- 金叉:前一个柱状图 ≤ 0 且当前柱状图 > 0
- 死叉:前一个柱状图 ≥ 0 且当前柱状图 < 0
2. 强度阈值过滤
柱状图绝对值必须 > 0.01,避免横盘震荡时频繁交易。
3. 信号防重复
已发出买入/卖出信号后,不会重复发出相同信号。
示例配置
基础配置
{
"name": "macd_5_13_4",
"strategy_type": "MACDStrategy",
"config": {
"fast_period": 5,
"slow_period": 13,
"signal_period": 4,
"position_size": 0.04
}
}
日线级配置(标准参数)
{
"name": "macd_standard",
"strategy_type": "MACDStrategy",
"config": {
"fast_period": 12,
"slow_period": 26,
"signal_period": 9,
"position_size": 0.03
}
}
激进配置(快速反应)
{
"name": "macd_aggressive",
"strategy_type": "MACDStrategy",
"config": {
"fast_period": 3,
"slow_period": 8,
"signal_period": 3,
"position_size": 0.02
}
}
策略优缺点
优点
- 趋势+动量双重确认:结合趋势跟踪和动量分析,信号可靠性较高
- 趋势强度可视化:柱状图直观显示趋势强度和变化
- 多周期适用:从分钟级到日线级均可使用
- 趋势市场表现:在明显趋势中表现出色
缺点
- 震荡市假信号:横盘整理时容易产生虚假交叉
- 信号滞后:作为EMA派生指标,存在固有滞后性
- 参数敏感:不同市场和周期需要调整参数
- 需要充足数据:至少需要 slow_period + signal_period 条历史数据
优化建议
1. 背离交易
关注价格与MACD的背离,往往预示趋势反转:
- 顶背离:价格创新高,MACD未创新高 → 看跌
- 底背离:价格创新低,MACD未创新低 → 看涨
2. 零轴过滤
结合MACD线的零轴位置:
- MACD > 0:多头市场,优先做多
- MACD < 0:空头市场,优先做空
3. 趋势确认
结合其他指标过滤信号:
- ADX > 25:趋势强劲,信号可靠
- 均线方向:只在均线趋势一致时交易
4. 多时间框架
使用多个时间周期的MACD进行确认:
- 日线 MACD 确定大方向
- 小时线 MACD 确定入场时机
- 分钟线 MACD 优化入场价格
5. 动态参数
根据市场波动性调整周期:
- 高波动市场:缩短周期(如 5-13-4)
- 低波动市场:延长周期(如 12-26-9)
典型使用场景
场景 1:趋势跟踪
市场状态:明显上升趋势
配置:fast=12, slow=26, signal=9
策略:金叉买入,死叉卖出
预期胜率:40-45%
场景 2:短线交易
市场状态:波动性较大
配置:fast=5, slow=13, signal=4
策略:快速进出,严格止损
预期胜率:35-40%
场景 3:趋势反转
市场状态:区间震荡
配置:fast=8, slow=17, signal=9
策略:等待背离信号,反向交易
预期胜率:30-35%
信号示例
金叉买入信号
时间: 2024-01-15 10:30:00
股票: AAPL.US
MACD: 2.30
Signal: 1.80
Histogram: 0.50 (前值 -0.20)
信号: BUY (金叉,柱状图从负转正)
死叉卖出信号
时间: 2024-01-20 14:15:00
股票: TSLA.US
MACD: -1.50
Signal: -1.10
Histogram: -0.40 (前值 0.15)
信号: SELL (死叉,柱状图从正转负)
强度不足,保持观望
时间: 2024-01-22 11:00:00
股票: NVDA.US
MACD: 0.05
Signal: 0.04
Histogram: 0.01 (前值 -0.005)
信号: HOLD (柱状图绝对值 ≤ 0.01,强度不足)
相关策略
参考资料
- MACD 发明者:Gerald Appel (1979年)
- 经典书籍:《Technical Analysis of the Financial Markets》- John Murphy
- pandas-ta 文档:https://github.com/twopirllc/pandas-ta