ETF动量轮动交易系统
背景
用户希望用动量策略自动交易A股ETF,通过排名轮动获取超额收益。系统需要:每日两次自动计算排名、生成买卖信号、推送交易建议。
方案设计
数据源:东方财富基金API(api.fund.eastmoney.com)
覆盖范围:39只ETF(涵盖A股、港股、美股、商品)
排名算法:加权动量得分 = 20日涨幅×0.5 + 10日涨幅×0.3 + 3日涨幅×0.2
筛选条件:价格 > MA20 且 均线多头排列
卖出规则:回撤 > 7% 或 跌破MA20 或 跌出TOP5
技术实现
- **etf_dl.sh**:curl + grep 批量下载39只ETF净值
- **etf_calc.py**:Python 计算技术指标和排名
- **Cron**:交易日上午10:30和下午14:30自动运行
- **推送**:钉钉/微信双通道推送结果
运行状态
- 系统运行稳定,每日自动执行
- 当前持仓:半导体设备 + 煤炭 + 通信(3只)
- 历史累计亏损 -14.89%(策略在回撤期)
- 连亏暂停机制已生效,保护本金
踩过的坑
- **数据下载不稳定**:东方财富API偶尔403,加了重试和备用数据源
- **重复交易记录**:状态文件累积了重复的买卖记录,需定期去重
- **百分比计算精度**:浮点数比较产生误判,增加了容差判断
- **微信限流**:多推送挤在一起被限,已切部分到钉钉
当前改进方向
- 接入 ntfy 推送解决微信限流
- 增加30分钟级别的止损监控
- 回测框架验证参数组合