Install
openclaw skills install facai-stock查询A股实时行情、管理自选股、启动股票价格监控。当用户询问股票价格、涨跌、行情、查股票、看股价,或要求添加自选股、删除自选股、查看自选股、清空自选股、监控股票、盯盘、价格提醒、股价变动提醒时使用本技能。支持6位股票代码或股票名称关键字。
openclaw skills install facai-stock所有命令须在项目根目录当前文档目录下执行。
target 解析优先级:调用时传入 > data/config.json 的 monitor_target > 报错退出。
python -c "
import config
config.set('monitor_target', 'user:ou_xxxx')
"
ou_xxxx是用户的openId,配置持久化在 data/config.json,后续所有启动/重启自动读取。
python -c "
import json
from quote import get_detail
print(json.dumps(get_detail('000001'), ensure_ascii=False, indent=2))
"
python -c "
import json
from quote import get_detail_by_name
print(json.dumps(get_detail_by_name('平安银行'), ensure_ascii=False, indent=2))
"
若名称匹配多只股票,抛出 ValueError 并列出候选 → 询问用户后改用代码查询。
python -c "
import json
from search import search_by_name
print(json.dumps(search_by_name('平安'), ensure_ascii=False, indent=2))
"
取候选列表中的 code,再调用 get_detail(code)。
以易读格式回答,例如:
平安银行(000001) 当前价 10.71 元,今日 ▼ 1.56%(-0.17 元)。 今日区间 10.67 ~ 10.84,成交额 11.68 亿元,总市值 2078 亿元。
自选股持久化在 data/watchlist.json,操作不自动启停监控,返回值中包含 monitor_status 供判断。
python -c "
import json
from watchlist import list_all
print(json.dumps(list_all(), ensure_ascii=False, indent=2))
"
输出:[{"code": "000001", "name": "平安银行"}, ...],空列表时为 []。
python -c "
import json
from watchlist import add
print(json.dumps(add('平安银行'), ensure_ascii=False))
"
返回示例:{"code": "000001", "name": "平安银行", "monitor_status": "监控未启动"}
monitor_status 为 "监控未启动" 时,提示用户手动启动监控名称不唯一时的处理流程:
add() 内部调用 get_detail_by_name(),若抛出 ValueError 说明名称模糊search_by_name() 列出候选,询问用户选择add('000001')python -c "
import json
from watchlist import remove
print(json.dumps(remove('平安银行'), ensure_ascii=False))
"
返回示例:{"code": "000001", "name": "平安银行", "monitor_status": "监控已启动"}
未找到时返回 null。同样接受6位代码。
python -c "
import json
from watchlist import clear
print(json.dumps(clear(), ensure_ascii=False))
"
返回示例:{"cleared": 2, "monitor_status": "监控已启动"}
监控进程读取 data/watchlist.json,每隔 10 秒查询一次,仅在 A 股交易时段运行,价格距上次告警偏离 ≥ 2% 时发送 openclaw 消息。自选股操作不再自动启停进程,需手动管理。
python -c "
from monitor import is_running
print('运行中' if is_running() else '未运行')
"
python -c "from monitor import start_monitor; start_monitor()"
覆盖 target 或修改参数时:
python -c "
from monitor import start_monitor
start_monitor(
'user:ou_xxxx', # 可选,不传则从配置文件读取
interval=30, # 查询间隔(秒),默认 10
threshold=1.5, # 触发告警的偏离幅度(%),默认 2.0
)
"
输出示例:
[monitor] 监控子进程已启动 PID=12345 日志→ f:\stock\logs\monitor_20260304_153000.log
python -c "from monitor import stop_monitor; stop_monitor()"
python -c "from monitor import restart_monitor; restart_monitor()"
向用户确认:已监控哪些股票(调用 list_all() 获取)、查询间隔(默认10秒)、触发条件(距上次告警价偏离 ≥ 2%,触发后以当前价为新基准)、告警方式(openclaw 消息推送,含今开价和距开盘涨幅)。
| 字段 | 说明 |
|---|---|
最新价 | 当前价格(元) |
涨跌幅 | 百分比,正数上涨、负数下跌 |
涨跌额 | 涨跌金额(元) |
今开 / 昨收 | 开盘价 / 昨日收盘价 |
最高 / 最低 | 今日区间 |
成交量 | 单位:手(100股/手) |
成交额 | 单位:元 |
总市值 | 单位:元,除以 1e8 得亿元 |
市盈率TTM | 动态市盈率 |
52周最高 / 52周最低 | 年内区间 |
logs/monitor_<timestamp>.log,单文件上限 2 MB,最多保留 5 个备份