Skip to content

Newoahil/QuantFlow

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

QuantFlow — 自动化量化研究 Demo

基于 Python + Futu OpenAPI 的轻量级量化研究演示项目。定位为面试 Demo,聚焦自动化量化 workflow 展示,非生产级交易系统。

技术栈

模块 技术
主语言 Python 3.11+
Web 界面 Streamlit
数据处理 Pandas
行情数据源 Futu OpenAPI(富途 OpenD)
策略回测 Backtrader
数据存储 SQLite
定时任务 APScheduler
图表 Plotly
通知推送 Telegram Bot
日志 Loguru
AI 辅助 OpenAI 兼容 API(DeepSeek 等)

功能一览

  • 行情获取 — K 线、实时报价、成交量
  • 股票筛选 — MA 金叉、RSI 超卖 / 超买、成交量放大
  • 策略回测 — MA 双均线、RSI 策略;输出收益率、Sharpe 比率、最大回撤
  • 自动提醒 — 策略触发时发送 Telegram 通知
  • AI 日报 — 自动生成市场总结与策略表现报告
  • 暗黑模式 — 自适应 Streamlit 主题(Light / Dark)

快速启动

1. 安装依赖

pip install -r requirements.txt

2. 配置 .env

项目根目录下已包含 .env 模板,按需填入外部服务配置:

# Futu OpenD(设为 true 启用真实行情,需 OpenD 已运行且已登录认证)
FUTU_ENABLED=false
FUTU_HOST=127.0.0.1
FUTU_PORT=11111

# Telegram 通知(可选,未填则降级为日志输出)
TELEGRAM_BOT_TOKEN=
TELEGRAM_CHAT_ID=

# AI 日报(可选,未填则使用模板化降级报告)
OPENAI_API_KEY=
OPENAI_BASE_URL=https://api.deepseek.com/v1
OPENAI_MODEL=deepseek-chat

# 定时任务间隔(分钟)
SCHEDULE_INTERVAL_MINUTES=30

3. 启动

streamlit run streamlit_app/dashboard.py

或:

python run.py

浏览器访问 http://localhost:8501 即可看到 Dashboard。

4. 脱离外部服务运行

所有外部服务(Futu OpenD / Telegram / AI API)未配置时均可正常启动,项目内置降级策略:

服务 降级方案
Futu OpenD 内置 5 只样本股票(腾讯、阿里、港交所、苹果、特斯拉)的 90 天模拟 K 线数据
Telegram Dry-run 模式,信号输出到 Loguru 日志
AI 日报 基于技术指标自动生成的模板化报告

Streamlit 五个页面均可在 mock 数据下完整展示。

Futu OpenD 配置指南

  1. 访问 Futu OpenAPI 下载页 下载 FutuOpenD Windows 客户端
  2. 使用富途牛牛账号登录 FutuOpenD
  3. 启动后默认监听 127.0.0.1:11111
  4. .envFUTU_ENABLED 设为 true,确认 FUTU_HOSTFUTU_PORT 一致

若连接后提示"需要图形验证码",请在 FutuOpenD 客户端界面完成图形验证码认证。

Telegram Bot 配置指南

  1. 在 Telegram 搜索 @BotFather,发送 /newbot 创建机器人,获取 Bot Token
  2. 向你的 Bot 发送任意消息,通过 https://api.telegram.org/bot<TOKEN>/getUpdates 获取 Chat ID
  3. 填入 .env 中的 TELEGRAM_BOT_TOKENTELEGRAM_CHAT_ID

AI API 配置指南

支持任意 OpenAI 兼容协议的 API 服务:

  • DeepSeek:注册 platform.deepseek.com,获取 API Key
  • OpenAI:填入标准 OpenAI API Key 及 Base URL
  • 本地模型:通过 vLLM / Ollama 等部署后,将 OPENAI_BASE_URL 指向本地地址

项目结构

quantflow/
├── app/
│   ├── main.py                    # 统一应用入口(编程方式调用)
│   ├── config/
│   │   └── settings.py            # 配置中心,加载 .env
│   ├── services/
│   │   ├── futu_service.py        # Futu API 封装 + Mock 降级
│   │   ├── screener_service.py    # 股票筛选(MA / RSI / 成交量)
│   │   ├── backtest_service.py    # Backtrader 回测引擎
│   │   ├── ai_report_service.py   # AI 日报生成 + 模板降级
│   │   ├── telegram_service.py    # Telegram 通知 + Dry-run
│   │   └── scheduler_service.py   # 定时任务调度
│   ├── strategies/
│   │   ├── ma_strategy.py         # MA 双均线策略
│   │   └── rsi_strategy.py        # RSI 超买超卖策略
│   ├── data/
│   │   ├── market_data.db         # SQLite 数据库
│   │   └── quantflow.log          # 日志文件
│   ├── utils/
│   │   ├── indicators.py          # 技术指标(MA / RSI / 量均线)
│   │   ├── logger.py              # Loguru 日志配置
│   │   └── helpers.py             # 格式化工具函数
│   └── prompts/
│       └── daily_report_prompt.txt # AI 日报 Prompt 模板
├── streamlit_app/
│   ├── dashboard.py               # 导航主页(5 个页面)
│   └── pages/
│       ├── market_overview.py     # K 线图 + 实时行情
│       ├── stock_screener.py      # 股票筛选器
│       ├── strategy_backtest.py   # 策略回测与对比
│       ├── signal_monitor.py      # 交易信号监控
│       └── ai_daily_report.py     # AI 日报生成页
├── requirements.txt
├── .env
├── .gitignore
├── run.py
└── README.md

设计原则

  • 单体架构,不做微服务拆分
  • 优先可运行,每个模块开发完成后即可独立验证
  • 数据优先于 UI,强调策略结果与数据展示,不做复杂前端设计
  • 严格 Demo 体量,禁止深度学习预测、高频交易、用户系统等生产级特性

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages