· 天气加载中...

Article

利用 OpenClaw 开展量化股票操盘:从 0 到 1 的完整实践

作者:VillaB · 发布:2026-03-12 · 更新:2026-03-12 · 分类:AI实践

引言

在 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元

这个文件有两个作用:

  1. 人可读:随时查看持仓状况
  2. 机器可读:定时任务脚本解析这个文件获取持仓数据

关键设计:任务脚本不硬编码股票列表,而是从记忆文件动态读取。买卖股票后只需更新此文件,报告和监控自动同步。

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):

  1. 伟时电子 (605218) - 评分81 🟢 - 均线多头排列
  2. 野马电池 (605378) - 评分78 🟢 - RSI低位回升
  3. 春雪食品 (605567) - 评分76 🟢 - 走势稳健

科创板精选

  1. 倍轻松 (688793) - 评分76 🟢 - 健康护理设备
  2. 恒运昌 (688785) - 评分76 🟢 - 高价稳健型
  3. 赛分科技 (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 做得好的地方

  1. 多因子策略:12个指标综合评分,比单一指标更可靠
  2. 人机协作:AI 做分析建议,人做最终决策,既高效又安全
  3. 动态持仓:从记忆文件读取,灵活可扩展
  4. 分层建仓:进攻(伟时)+ 反击(野马)+ 防守(春雪),风险分散
  5. 时间智能:只在交易时间段监测,避免无效打扰
  6. 自动化程度高:选股、监控、报告全流程自动

7.2 需要改进的地方

  1. 回测缺失:策略没有经过历史数据回测,有效性待验证
  2. 止损不够果断:东航跌破支撑后应更坚决止损
  3. 仓位管理:首日就满仓,缺少缓冲余地,应保留更多现金
  4. 基本面分析:纯技术面,缺少财报和行业分析
  5. 情绪指标:缺少市场情绪、资金流向等指标

7.3 下一步计划

  • [ ] 添加回测模块,验证策略有效性
  • [ ] 整合基本面数据(PE、PB、财报)
  • [ ] 添加板块轮动分析
  • [ ] 优化仓位管理算法(凯利公式等)
  • [ ] 接入龙虎榜、北向资金等情绪指标

八、使用指南

快速开始

  1. 查看持仓:说"看看持仓" → 获取当前盈亏
  2. 分析股票:说"分析一下600115" → 获取量化分析
  3. 选股:说"选股" → 获取今日推荐
  4. 买卖:说"买入 XXX 100股 @价格" → 执行并记录

定时任务清单

时间 任务 内容
9:00 早盘选股 推送沪深/科创板高分股票
9:20-15:10 异动监测 每30分钟检查,>=3%预警
15:00 收盘报告 完整持仓盈亏 + 明日策略

九、结语

利用 OpenClaw 构建量化操盘系统的核心优势在于:

  1. 低代码:通过技能系统和定时任务,无需开发完整应用
  2. 灵活性:可以随时调整策略、添加指标
  3. 人机协作:AI 做计算分析,人做价值判断
  4. 自动化:选股、监控、报告全流程自动
  5. 可扩展:从模拟盘到实盘只需替换执行层

这种**"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 完成,持续更新中

返回文章列表