Article
利用 OpenClaw 开展量化股票操盘:从 0 到 1 的完整实践
引言
在 AI 时代,个人投资者也可以拥有自己的量化交易系统。本文将分享我利用 OpenClaw 平台,从零构建一套完整股票操盘系统的实践经验。
OpenClaw 是一个 AI Agent 平台,它允许你创建自定义技能、设置定时任务、管理记忆文件,非常适合构建个性化的量化交易助手。
一、系统架构概览
整个系统采用 "AI 分析 + 提醒建议 + 人工确认" 的协作模式:
┌─────────────────────────────────────────────────────────┐
│ OpenClaw 平台 │
├─────────────────────────────────────────────────────────┤
│ 触发层 │ 分析层 │ 决策层 │ 执行层 │
├──────────────┼───────────────┼──────────────┼────────────┤
│ 定时任务 量化分析技能 人工确认 更新持仓 │
│ 异动监测 12因子评分 买卖指令 记录交易 │
│ 选股推送 策略建议 记忆文件 │
└─────────────────────────────────────────────────────────┘
核心设计哲学:让 AI 做分析和建议,让人做最终决策。
二、量化分析技能的开发
2.1 技能设计思路
我创建了一个名为 quant-stock-monitor 的自定义技能,核心是多因子评分策略。传统的技术分析往往只看一两个指标,容易失真,所以我设计了12因子综合评分模型:
趋势指标(4个)
- MA 移动平均线:5日、10日、20日、60日均线排列
- ADX 平均趋向指数:衡量趋势强度(>25为强趋势)
- SAR 抛物线转向:判断持仓方向
- ATR 真实波幅:评估波动率
动量指标(5个)
- RSI 相对强弱指数:超买(>70)超卖(<30)
- KDJ 随机指标:中国A股经典指标,K/D/J三线分析
- WR 威廉指标:-20以上超买,-80以下超卖
- CCI 商品通道指数:±100外为极端区
- MACD 指数平滑异同:金叉死叉信号
量价指标(3个)
- 布林带:价格位置、收窄突破
- OBV 能量潮:量价背离检测
- 成交量异动:较20日均量放大/缩小
2.2 评分算法
基础分50分,根据各因子信号加减分:
# 伪代码示例
score = 50
# RSI超卖加分
if rsi <= 30: score += 10
# MACD金叉加分
if macd_golden_cross: score += 8
# KDJ超卖加分
if kdj_oversold: score += 5
# 趋势强度
if adx_strong and bullish: score += 4
# OBV底背离
if obv_divergence == "底背离": score += 6
# 最终评级
if score >= 80: rating = "强烈买入"
elif score >= 65: rating = "买入"
elif score >= 45: rating = "持有"
elif score >= 30: rating = "卖出"
else: rating = "强烈卖出"
2.3 技能文件结构
quant-stock-monitor/
├── SKILL.md # 技能说明文档
├── scripts/
│ ├── quant_analyzer.py # 核心分析脚本(12因子计算)
│ ├── stock_screener.py # 选股扫描脚本
│ ├── board_screener.py # 分板块选股
│ ├── portfolio_report.py # 持仓报告生成
│ └── portfolio_alert.py # 异动预警(带交易时间段判断)
└── quant-stock-monitor.skill # 打包后的技能文件
三、模拟盘系统的建立
3.1 持仓记忆文件
OpenClaw 支持记忆文件功能,我创建了一个 stock_simulation_portfolio.md 文件来管理模拟盘:
# 东航模拟盘持仓记录
初始资金: 10000
当前现金: 74
持仓1:
- 股票代码: 600115
- 股票名称: 中国东航
- 持仓数量: 1000股
- 成本价: 4.71元
- 建仓日期: 2026-03-12
持仓2:
- 股票代码: 605218
- 股票名称: 伟时电子
- 持仓数量: 100股
- 成本价: 19.39元
- 建仓日期: 2026-03-12
...
历史交易:
[2026-03-12 10:43] 买入 东航1000股 @4.71元
[2026-03-12 11:33] 买入 伟时电子100股 @19.39元
这个文件有两个作用:
- 人可读:随时查看持仓状况
- 机器可读:定时任务脚本解析这个文件获取持仓数据
关键设计:任务脚本不硬编码股票列表,而是从记忆文件动态读取。买卖股票后只需更新此文件,报告和监控自动同步。
3.2 操盘决策机制
系统采用 "建议-确认-执行" 的三步流程:
触发源(定时任务/用户指令)
↓
AI分析(生成建议)
↓
QQ消息通知用户
↓
用户确认(买入/卖出/持有)
↓
AI执行(更新记忆文件)
↓
发送执行结果
用户可随时触发的指令:
- "分析一下东航" → 完整量化分析 + 买卖建议
- "看看持仓" → 当前盈亏 + 仓位分布
- "选股" → 扫描市场 + 推荐高分股票
- "买入 XXX" / "卖出 XXX" → 执行并记录
3.3 首日操盘实录
基于量化分析,我制定了分层建仓策略:
建仓逻辑
中国东航 (600115) - 抄底策略
- 量化评分:68分(买入级别)
- 关键信号:RSI=9.15(严重超卖)、接近布林带下轨、距离支撑1.7%
- 仓位:47%(1000股 @4.71元)
- 逻辑:技术指标极度超卖,短线反弹概率高
伟时电子 (605218) - 强势股跟随
- 量化评分:81分(全场最高)
- 关键信号:均线多头排列、放量上涨3.47%
- 仓位:19%(100股 @19.39元)
- 逻辑:趋势确认,跟随 momentum
野马电池 (605378) - 回调低吸
- 量化评分:78分
- 关键信号:当日回调2.22%、RSI健康
- 仓位:21%(100股 @21.17元)
- 逻辑:强势股回调是上车机会
春雪食品 (605567) - 防守对冲
- 量化评分:76分
- 关键信号:走势稳健、消费板块
- 仓位:11%(100股 @11.60元)
- 逻辑:对冲科技股的波动风险
收盘结果
| 股票 | 成本 | 收盘 | 盈亏 | 策略效果 |
|---|---|---|---|---|
| 东航 | 4.71 | 4.69 | -0.42% | 趋势仍弱,但守住支撑 |
| 伟时电子 | 19.39 | 19.60 | +1.08% | ✅ 强势股策略正确 |
| 野马电池 | 21.17 | 21.14 | -0.14% | 低吸后震荡,等待 |
| 春雪食品 | 11.60 | 11.60 | 0.00% | 防守定位精准 |
首日战绩:总资产 ¥9,998,微亏 -0.02%,整体可控。伟时电子的盈利对冲了其他股票的下跌。
四、自动化监控系统
4.1 定时任务架构
┌─────────────────────────────────────────────────────────────┐
│ 定时任务调度中心 │
├─────────────────────────────────────────────────────────────┤
│ 9:00 │ 每日早盘选股推荐 → 推送沪深/创业板/科创板股票 │
│ 9:20 │ 持仓异动预警(盘前) → 检查盘前集合竞价异动 │
│ 9:20-15:10 │ 持仓异动预警(盘中) → 每30分钟检查,只在交易时段 │
│ 15:00 │ 每日持仓收盘报告 → 完整盈亏分析 + 明日策略 │
│ 15:10 │ 持仓异动预警(盘后) → 总结当日异动 │
└─────────────────────────────────────────────────────────────┘
4.2 交易时间段监测
异动预警脚本内置了交易时间判断,只在 9:20 - 15:10 监测:
# portfolio_alert.py
from datetime import datetime
def is_trading_time():
"""检查当前是否在交易时间段内(9:20 - 15:10)"""
now = datetime.now()
weekday = now.weekday()
# 周末不交易
if weekday >= 5:
return False
current_time = now.hour * 60 + now.minute
start_time = 9 * 60 + 20 # 9:20
end_time = 15 * 60 + 10 # 15:10
return start_time <= current_time <= end_time
def check_alerts():
if not is_trading_time():
print("HEARTBEAT_OK") # 非交易时间静默
return
# ... 检查异动
这样做的好处:
- 非交易时间不执行无谓的检查
- 避免凌晨、夜间收到静默消息
- 只在关键时段(9:20开盘前到15:10收盘后)监测
4.3 动态持仓读取
报告和预警脚本都从记忆文件动态读取持仓:
# portfolio_report.py
import re
def parse_portfolio():
with open('stock_simulation_portfolio.md', 'r') as f:
content = f.read()
# 正则解析持仓信息
pattern = r'股票代码:\s*(\d+)\s*\n.*?股票名称:\s*(.*?)\s*\n.*?持仓数量:\s*(\d+)股\s*\n.*?成本价:\s*([\d.]+)元'
matches = re.findall(pattern, content, re.DOTALL)
holdings = []
for code, name, qty, cost in matches:
holdings.append({
'code': code.strip(),
'name': name.strip(),
'qty': int(qty),
'cost': float(cost)
})
return holdings
这样做的好处:
- 买卖股票后只需更新记忆文件
- 报告自动生成,无需修改任务配置
- 支持任意数量的持仓股票
4.4 异动预警示例
📢 【持仓异动预警 - 13:30】
📈大涨 伟时电子(605218) +4.59%
超过3.0%阈值,请关注!
五、分板块选股系统
5.1 板块扫描逻辑
A股市场分为三大板块,各有特点:
- 沪深主板:稳健蓝筹,适合防守
- 创业板:高成长科技股,波动大
- 科创板:硬科技创新,流动性相对较低
选股脚本 board_screener.py 分别扫描三大板块:
TOPICS = {
'main': '沪深主板', # 排除300、688、8、4开头的股票
'cyb': '创业板', # 300开头
'kcb': '科创板' # 688开头
}
def screen_board(board_type):
stocks = fetch_board_stocks(board_type)
scored = [analyze_stock(s) for s in stocks if passes_filter(s)]
return top_n(scored, 3)
5.2 选股结果示例
沪深主板精选(2026-03-12):
- 伟时电子 (605218) - 评分81 🟢 - 均线多头排列
- 野马电池 (605378) - 评分78 🟢 - RSI低位回升
- 春雪食品 (605567) - 评分76 🟢 - 走势稳健
科创板精选:
- 倍轻松 (688793) - 评分76 🟢 - 健康护理设备
- 恒运昌 (688785) - 评分76 🟢 - 高价稳健型
- 赛分科技 (688758) - 评分76 🟢 - 科技股蓄势
5.3 早盘定时推送
工作日9:00自动推送选股结果,配合9:20的盘前异动预警,形成完整的早盘决策支持:
🌅 【今日早盘选股推荐】
📊 【沪深主板】精选推荐 (3只)
1. 伟时电子 (605218) 🟢 - 评分81
💰 价格: ¥19.39 📈 +3.47%
💡 信号: 均线多头排列 | RSI低位回升
📊 【科创板】精选推荐 (3只)
1. 倍轻松 (688793) 🟢 - 评分76
💰 价格: ¥22.05 📈 +0.78%
💡 信号: 均线多头排列 | RSI低位回升
六、技术要点总结
7.1 数据源
- 实时行情:新浪财经 API (
hq.sinajs.cn) - 历史K线:东方财富 API
- 股票列表:东方财富板块接口
7.2 技术指标计算
所有指标都是自行实现的 Python 函数,不依赖第三方库:
- RSI、KDJ、WR、CCI 等动量指标
- MACD、ADX、SAR 等趋势指标
- 布林带、ATR 等波动指标
- OBV 量价背离检测
7.3 文件结构
workspace/
├── skills/
│ └── quant-stock-monitor/ # 量化技能
│ ├── scripts/
│ │ ├── quant_analyzer.py # 12因子分析
│ │ ├── stock_screener.py # 选股
│ │ ├── board_screener.py # 分板块选股
│ │ ├── portfolio_report.py # 持仓报告
│ │ └── portfolio_alert.py # 异动预警(带时间判断)
│ └── SKILL.md
│
└── memory/
├── stock_simulation_portfolio.md # 持仓记忆(核心数据源)
└── YYYY-MM-DD.md # 每日记录
七、经验与反思
7.1 做得好的地方
- 多因子策略:12个指标综合评分,比单一指标更可靠
- 人机协作:AI 做分析建议,人做最终决策,既高效又安全
- 动态持仓:从记忆文件读取,灵活可扩展
- 分层建仓:进攻(伟时)+ 反击(野马)+ 防守(春雪),风险分散
- 时间智能:只在交易时间段监测,避免无效打扰
- 自动化程度高:选股、监控、报告全流程自动
7.2 需要改进的地方
- 回测缺失:策略没有经过历史数据回测,有效性待验证
- 止损不够果断:东航跌破支撑后应更坚决止损
- 仓位管理:首日就满仓,缺少缓冲余地,应保留更多现金
- 基本面分析:纯技术面,缺少财报和行业分析
- 情绪指标:缺少市场情绪、资金流向等指标
7.3 下一步计划
- [ ] 添加回测模块,验证策略有效性
- [ ] 整合基本面数据(PE、PB、财报)
- [ ] 添加板块轮动分析
- [ ] 优化仓位管理算法(凯利公式等)
- [ ] 接入龙虎榜、北向资金等情绪指标
八、使用指南
快速开始
- 查看持仓:说"看看持仓" → 获取当前盈亏
- 分析股票:说"分析一下600115" → 获取量化分析
- 选股:说"选股" → 获取今日推荐
- 买卖:说"买入 XXX 100股 @价格" → 执行并记录
定时任务清单
| 时间 | 任务 | 内容 |
|---|---|---|
| 9:00 | 早盘选股 | 推送沪深/科创板高分股票 |
| 9:20-15:10 | 异动监测 | 每30分钟检查,>=3%预警 |
| 15:00 | 收盘报告 | 完整持仓盈亏 + 明日策略 |
九、结语
利用 OpenClaw 构建量化操盘系统的核心优势在于:
- 低代码:通过技能系统和定时任务,无需开发完整应用
- 灵活性:可以随时调整策略、添加指标
- 人机协作:AI 做计算分析,人做价值判断
- 自动化:选股、监控、报告全流程自动
- 可扩展:从模拟盘到实盘只需替换执行层
这种**"AI Agent + 量化策略 + 人机协作"**的组合,让个人投资者也能拥有机构级的分析能力,同时保持对资金的绝对控制。
相关资源:
- OpenClaw 官网:https://docs.openclaw.ai
- VillaB 工具站:https://villab.cn
- 本文示例代码:
~/.openclaw/workspace/skills/quant-stock-monitor/ - 操盘记录:
~/.openclaw/workspace/memory/stock_simulation_portfolio.md
本文于 2026-03-12 完成,持续更新中