heartstock¶
HeartStock - 华为手环心率炒股模拟器
| 项目信息 | |
|---|---|
| 仓库 | https://github.com/Maicarons/heartstock |
| 主要语言 | JavaScript |
| Stars | 0 |
| 类型 | 原创项目 |
| 许可证 | MIT |
| 最近更新 | 2026-06-25 |
HeartStock - 华为手环心率炒股模拟器¶
基于 ESP32 和华为手环的实时心率监测系统,结合 K 线图、MACD 技术指标和心率炒股模拟器。

💡 股价 = 心率:心率每变化 1 bpm,股价变化 1 元
✨ 功能特性¶
- 💓 实时心率监测 - BLE 蓝牙连接华为手环,每秒更新
- 📈 K 线图分析 - 支持 1/5/10/30/60 分钟周期
- 📊 MACD 指标 - 专业技术分析,柱状图 + 双线
- 🎮 炒股模拟器 - 手动交易 + 条件单功能
- 📱 响应式设计 - 支持 PC 和移动端访问
- 🔄 1 秒刷新 - 所有数据每秒自动更新
🚀 快速开始¶
前置条件¶
- Python 3.8+
- ESP32-S3 开发板
- 华为手环(支持心率广播)
安装¶
## 克隆项目
git clone https://github.com/maicarons/heartstock.git
cd heartstock
## 安装依赖
pip install -r requirements.txt
启动¶
Windows:
scripts\start.bat
Linux/macOS:
chmod +x scripts/start.sh
./scripts/start.sh
手动启动:
python app.py
访问 http://localhost:5000
上传 ESP32 固件¶
## Windows
scripts\upload_firmware.bat
## Linux/macOS
chmod +s scripts/upload_firmware.sh
./scripts/upload_firmware.sh
📁 项目结构¶
heartstock/
├── app.py # Flask 主应用
├── requirements.txt # Python 依赖
├── skills.md # AI 使用指南
├── README.md # 本文件
├── CHANGELOG.md # 更新日志
├── LICENSE # MIT 许可证
│
├── backend/ # 后端模块
│ ├── __init__.py
│ ├── config.py # 配置文件
│ ├── serial_reader.py # 串口读取
│ ├── trading.py # 交易模拟
│ └── macd.py # MACD 计算
│
├── firmware/ # ESP32 固件
│ ├── main.cpp # 主程序
│ └── platformio.ini # PlatformIO 配置
│
├── static/ # 前端静态文件
│ ├── css/
│ │ └── styles.css # 样式表
│ ├── js/
│ │ └── main.js # 主脚本
│ └── lib/ # 第三方库
│ ├── chart.umd.min.js
│ └── lightweight-charts.standalone.production.js
│
├── templates/ # HTML 模板
│ └── index.html
│
├── scripts/ # 启动脚本
│ ├── start.sh # Linux/macOS
│ ├── start.bat # Windows
│ ├── upload_firmware.sh # 固件上传
│ └── upload_firmware.bat
│
├── data/ # 数据存储
│ └── heart_rate_data.csv
│
└── docs/ # 文档
└── prompt.md
🎮 交易规则¶
基本规则¶
| 项目 | 说明 |
|---|---|
| 股价 | = 心率(1:1 对应) |
| 初始资金 | 10,000 元 |
| 最小交易 | 1 股 |
| 交易方式 | 手动交易 + 条件单 |
手动交易¶
- 全仓买入:点击"买入"按钮
- 全仓卖出:点击"卖出"按钮
- 指定金额:输入金额后点击买入/卖出
条件单¶
支持自定义条件表达式,例如:
- heart_rate < 75 - 心率低于 75 时触发
- heart_rate > 95 - 心率高于 95 时触发
- heart_rate < 80 and heart_rate > 70 - 复合条件
股价计算¶
股价 = 心率
简单直接:心率 80 bpm = 股价 ¥80
📊 技术指标¶
K 线图¶
- Open(开盘):该时间段的第一条心率数据
- High(最高):该时间段内的最高心率
- Low(最低):该时间段内的最低心率
- Close(收盘):该时间段的最后一条心率数据
MACD¶
- MACD 线:EMA12 - EMA26
- 信号线:MACD 的 9 日 EMA
- 柱状图:MACD - 信号线
🔧 配置说明¶
串口配置¶
编辑 backend/config.py:
SERIAL_PORT = "COM5" # Windows
## SERIAL_PORT = "/dev/ttyUSB0" # Linux
BAUD_RATE = 115200
交易配置¶
TRADING_CONFIG = {
'initial_capital': 10000, # 初始资金
}
📊 API 接口¶
心率数据¶
| 接口 | 方法 | 说明 |
|---|---|---|
/api/heart-rate |
GET | 获取当前心率 |
/api/heart-rate/history |
GET | 获取历史数据 |
/api/heart-rate/kline/<interval> |
GET | K 线数据 (1/5/10/30/60) |
交易模拟¶
| 接口 | 方法 | 说明 |
|---|---|---|
/api/trading |
GET | 交易状态 |
/api/trading/history |
GET | 交易历史 |
/api/trading/buy |
POST | 买入 |
/api/trading/sell |
POST | 卖出 |
/api/trading/conditional-orders |
GET/POST | 条件单管理 |
/api/trading/reset |
POST | 重置交易 |
🛠️ 开发指南¶
添加新技术指标¶
- 在
backend/创建计算模块 - 在
app.py添加 API 接口 - 在
static/js/main.js添加显示逻辑
自定义交易策略¶
编辑 backend/trading.py 中的 TradingSimulator 类。
📝 更新日志¶
v1.0.0 (2026-06-25)¶
- 初始版本
- 实时心率监测
- K 线图 + MACD
- 心率炒股模拟器
- 条件单功能
📄 许可证¶
MIT License - 详见 LICENSE
🙏 致谢¶
- Lightweight Charts - K 线图库
- Flask - Web 框架
- ESP32 BLE Arduino - ESP32 BLE 库
⚠️ 免责声明¶
本项目仅供学习和娱乐用途,心率炒股模拟器不构成任何投资建议。
GitHub: github.com/maicarons/heartstock