Hermes 股票监控教程

kant
kant
管理员
307
文章
0
粉丝
项目评论9阅读模式

Hermes 股票监控教程:从数据采集到预警推送,一步步教你

上班没时间盯盘?看到涨停才反应过来?文章源自:毕卡奥,阅读原文请搜索毕卡奥!毕卡奥-https://www.bikaao.com/archives/2393.html

我用了 1 周时间,拿 Hermes 搭了个股票预警系统。不吹牛,这东西真能解决实际问题——到点自动抓数据,条件满足就推消息,再也不用时不时摸手机看行情。
今天把完整教程掏出来,从数据采集到企业微信推送,一步步教你。代码我都测试过,照着做就能跑。
**⚠️ 先说清楚:** 这教程只教技术实现,不构成投资建议。炒股有风险,盈亏自负。文章源自:毕卡奥,阅读原文请搜索毕卡奥!毕卡奥-https://www.bikaao.com/archives/2393.html

文章源自:毕卡奥,阅读原文请搜索毕卡奥!毕卡奥-https://www.bikaao.com/archives/2393.html

## 一、系统架构(先搞懂再动手)
整个预警系统就 4 个模块,画个图你就明白了:
```文章源自:毕卡奥,阅读原文请搜索毕卡奥!毕卡奥-https://www.bikaao.com/archives/2393.html

┌─────────────┐ ┌─────────────┐
│ 数据采集 │ ──→ │ 指标计算 │
│ (AKShare) │ │ (均线/量比) │
└─────────────┘ └─────────────┘
↓ ↓
┌─────────────┐ ┌─────────────┐
│ 条件判断 │ ──→ │ 消息推送 │
│ (阈值比较) │ │ (企业微信) │
└─────────────┘ └─────────────┘
```文章源自:毕卡奥,阅读原文请搜索毕卡奥!毕卡奥-https://www.bikaao.com/archives/2393.html

**工作流程:**

1. 定时脚本获取股票行情

2. 计算技术指标(均线/涨跌幅/量比)
3. 判断是否触发预警条件

4. 满足条件就推送到企业微信

**说白了:** 就是个定时运行的 Python 脚本,没啥神秘的。
---

## 二、环境准备(10 分钟搞定)
### 2.1 安装 Hermes

没装 Hermes 的先去装,前面有专门教程,这里不啰嗦。
```bash

# 一键安装
curl -fsSL https://raw.githubusercontent.com/openclaw/hermes/main/scripts/install.sh | bash

# 验证

hermes status

```

### 2.2 安装 Python 依赖

预警脚本需要几个库,提前装好:

```bash

# 激活 Hermes 虚拟环境

source ~/.hermes/venv/bin/activate

# 安装依赖

pip install akshare pandas python-dateutil -i https://pypi.tuna.tsinghua.edu.cn/simple

```

**⚠️ 注意:** 必须在 Hermes 虚拟环境里装,不然脚本找不到库。
### 2.3 获取股票列表

先搞明白你要监控哪些股票:
```python

# 获取 A 股列表
import akshare as ak

stock_list = ak.stock_info_a_code_name()

print(stock_list.head())

```

**建议:** 新手先监控 5-10 只股票,别贪多。
---

## 三、数据采集(核心代码)
### 3.1 用 AKShare 获取行情

AKShare 是免费的,不用注册 key,直接用:
```python

import akshare as ak

import pandas as pd

def get_stock_price(code):

"""获取股票实时行情"""

try:

# 代码格式转换(600000 → sh600000)
if code.startswith('6'):

code = f"sh{code}"

else:

code = f"sz{code}"

# 获取实时行情

df = ak.stock_zh_a_spot_em()

stock_data = df[df['代码'] == code.replace('sh', '').replace('sz', '')]

if len(stock_data) > 0:

return {

'code': code,

'name': stock_data['名称'].values[0],

'price': stock_data['最新价'].values[0],

'change': stock_data['涨跌幅'].values[0],

'volume': stock_data['成交量'].values[0],

'amount': stock_data['成交额'].values[0]

}

except Exception as e:

print(f"获取数据失败:{e}")

return None

```

**⚠️ 踩坑提示:** 新浪 API 有频率限制,别太频繁调用。建议每只股票间隔 3-5 秒。
### 3.2 用新浪财经 API(备选方案)

AKShare 如果抽风,可以用新浪财经 API 兜底:
```python

import requests

def get_sina_price(code):

"""新浪财经实时行情"""

if code.startswith('6'):

url = f"http://hq.sinajs.cn/list=sh{code}"

else:

url = f"http://hq.sinajs.cn/list=sz{code}"

resp = requests.get(url)

data = resp.text.split('"')[1].split(',')

return {

'code': code,

'price': float(data[3]),

'change': float(data[2]) / float(data[1]) * 100

}

```

**这个更简单,** 无需依赖,一个 HTTP 请求就搞定。
---

## 四、指标计算(策略核心)
### 4.1 计算均线

```python

def calculate_ma(code, days=5):

"""计算 N 日均线"""

# 获取历史数据

df = ak.stock_zh_a_hist(symbol=code, period="daily", start_date="20260101")

if len(df) < days:

return None

# 计算均线

ma = df['收盘'].rolling(window=days).mean().iloc[-1]

current_price = df['收盘'].iloc[-1]

return {

'ma': ma,

'price': current_price,

'deviation': (current_price - ma) / ma * 100 # 偏离率
}

```

### 4.2 计算量比

```python

def calculate_volume_ratio(code):

"""计算量比"""

df = ak.stock_zh_a_spot_em()

stock = df[df['代码'] == code]

if len(stock) > 0:

volume = stock['成交量'].values[0]

avg_volume = stock['换手率'].values[0] # 简化处理
return {

'volume': volume,

'volume_ratio': volume / avg_volume if avg_volume > 0 else 0

}

return None

```

---

## 五、预警条件设置
### 5.1 常见预警条件

| 条件类型 | 触发条件 | 说明 |

|---------|---------|------|

| **涨跌幅预警** | 涨跌幅 > 5% | 大涨大跌提醒 |

| **均线突破** | 股价上穿 5 日线 | 短线买入信号 |

| **量比异常** | 量比 > 3 | 放量关注 |

| **价格突破** | 股价 > 设定值 | 自定义阈值 |

### 5.2 条件判断代码

```python

def check_conditions(stock_data, ma_data, volume_data):

"""检查是否触发预警"""

alerts = []

# 涨跌幅预警
if abs(stock_data['change']) > 5:

alerts.append(f"涨跌幅超 5%:{stock_data['change']}%")

# 均线偏离预警

if ma_data and abs(ma_data['deviation']) > 3:

alerts.append(f"偏离均线超 3%:{ma_data['deviation']:.2f}%")

# 量比预警

if volume_data and volume_data['volume_ratio'] > 3:

alerts.append(f"量比异常:{volume_data['volume_ratio']:.2f}")

return alerts

```

---

## 六、企业微信推送(关键步骤)
### 6.1 创建企业微信机器人
1. 登录企业微信管理后台

2. 进入"应用管理" → "自建应用"

3. 创建一个新应用,记下 Webhook 地址

**Webhook 格式:**

```

https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=YOUR_KEY

```

### 6.2 推送代码
```python

import requests

import json

def send_wechat_alert(stock_name, stock_code, alerts):

"""发送企业微信预警"""

webhook = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=YOUR_KEY"

content = f" 股票预警\n"

content += f"股票:{stock_name}({stock_code})\n"

content += f"时间:{pd.Timestamp.now().strftime('%H:%M:%S')}\n"

content += f"----------------\n"

for alert in alerts:

content += f"⚠️ {alert}\n"

data = {

"msgtype": "text",

"text": {

"content": content

}

}

resp = requests.post(webhook, data=json.dumps(data))

return resp.status_code == 200

```

**⚠️ 替换 YOUR_KEY:** 把你自己的 Webhook key 填进去。
---

## 七、定时任务配置
### 7.1 完整脚本

把上面代码整合成一个脚本:

```python

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

# 保存为:
~/.hermes/scripts/stock_alert.py

import akshare as ak

import pandas as pd

import requests

import json

import time

# 监控的股票列表
STOCKS = ['600000', '000001', '300750'] # 自己改
# 企业微信 Webhook

WEBHOOK = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=YOUR_KEY"

def get_stock_price(code):

# 前面定义的获取行情函数
...

def check_conditions(stock_data):

# 前面定义的条件判断函数
...

def send_alert(stock_name, code, alerts):

# 前面定义的推送函数
...

def main():

for code in STOCKS:

data = get_stock_price(code)

if data:

alerts = check_conditions(data)

if alerts:

send_alert(data['name'], code, alerts)

time.sleep(3) # 避免频率限制

if __name__ == "__main__":

main()

```

### 7.2 设置定时执行

用 cron 设置定时任务:
```bash

# 编辑 crontab

crontab -e

# 添加任务(交易时段每 5 分钟执行一次)

*/5 9-11,13-15 * * 1-5 ~/.hermes/venv/bin/python ~/.hermes/scripts/stock_alert.py

```

**说明:**

- `*/5`:每 5 分钟

- `9-11,13-15`:交易时段
- `1-5`:周一到周五
---

## 八、风险提示(必读)
### 8.1 技术风险
| 风险 | 说明 | 应对 |

|------|------|------|

| **API 限流** | 调用太频繁被封 | 加延时,控制频率 |

| **数据延迟** | 免费数据有延迟 | 别用于高频交易 |

| **脚本异常** | 程序可能崩溃 | 加日志,定期检查 |

### 8.2 合规风险

```

⚠️ 重要提醒:
1. 本系统仅用于个人学习,不得用于非法目的
2. 不得向他人提供投资建议或荐股服务

3. 不得代客理财或收取任何费用
4. 量化交易有风险,入市需谨慎

```

### 8.3 使用建议

1. **先模拟测试:** 用历史数据验证策略
2. **小资金试水:** 别一上来就重仓
3. **设置止损:** 亏损超 5% 自动预警

4. **定期复盘:** 每周检查策略有效性
---

## 说句掏心窝子的话

这套系统我用了 1 周,最大的感受是:**技术不难,难在坚持。**

代码就这么多,复制粘贴就能跑。但真正有用的,是你根据自己交易习惯调整的预警条件。有人喜欢追涨,有人喜欢抄底,没有万能策略。
**核心就 3 点:**

1. 数据采集要稳(AKShare+ 新浪双保险)

2. 预警条件要准(根据自己的策略调)

3. 推送要及时(企业微信秒到)

文章末尾固定信息

 
kant
  • 本文由 kant 发表于2026年4月12日 11:21:36
  • 转载请务必保留本文链接:https://www.bikaao.com/archives/2393.html
匿名

发表评论

匿名网友
确定

拖动滑块以完成验证