一个用 Python + Flask 写的基金信息查询网站:搜索基金、查看基本信息、区间涨跌幅、净值走势图和历史净值,还可以把基金加入"自选"、查看最近搜索记录、多只基金同图对比。
jijin/
├── app.py # 网站入口:定义路由(网址 -> 页面)
├── fund_api.py # 数据层:封装第三方接口,获取基金数据、财经快讯
├── ai_api.py # AI 层:调用大模型分析新闻的行业影响(可选,需 .env 配 key)
├── templates/ # HTML 模板(Jinja2)
│ ├── base.html # 公共骨架:琥珀色命令栏(含实时时钟)+ 页脚
│ ├── index.html # 首页:搜索框 + 热门基金卡片
│ ├── search.html # 搜索结果页
│ ├── fund.html # 基金详情页:信息 + 走势图 + 历史净值表
│ ├── compare.html # 基金对比页:多只基金涨跌幅同图对比
│ ├── hot.html # 热门推荐页:按区间涨幅排序的基金榜单
│ ├── news.html # 财经要闻页:7x24 快讯列表,股市相关高亮
│ ├── sip.html # 定投模拟页:参数表单 + 收益汇总 + 投入/市值走势图
│ └── 404.html
├── static/
│ ├── style.css # 全站样式(终端风:纯黑底、琥珀强调色、直角硬边、红涨绿跌)
│ ├── echarts-theme.js# ECharts 暗色主题(配合 style.css,图表用 'terminal' 主题初始化)
│ ├── fonts/ # IBM Plex Mono 等宽字体(woff2,本地加载无需联网)
│ └── echarts.min.js # 图表库(已下载到本地,无需联网加载)
└── venv/ # Python 虚拟环境(依赖都装在这里)
界面是「市场终端」风格:纯黑底 + 琥珀色命令栏(右侧有实时时钟)、全站等宽字体、 直角硬边框、红涨绿跌;小节标题带 01/02/03 编号,图表统一用 ECharts 暗色主题。
cd ~/Desktop/jijin
venv/Scripts/python app.py然后浏览器打开 http://127.0.0.1:5000
停止服务:在运行窗口按 Ctrl + C。
| 网址 | 页面 | 对应函数 |
|---|---|---|
/ |
首页(我的自选 + 热门基金 + 最近搜索) | index() |
/search?q=关键词 |
搜索结果 | search() |
/fund/161725 |
基金详情(可加自选、去对比) | fund_detail() |
/compare?codes=161725,005827 |
基金对比(最多 5 只) | compare() |
/hot?sort=1yzf&type=gp |
热门推荐榜(按区间涨幅排序) | hot() |
/news |
财经要闻(7x24 快讯,股市相关高亮) | news() |
/api/news_analysis |
新闻 AI 分析(JSON 接口,需配 key) | api_news_analysis() |
/sip/161725?amount=1000&freq=month&start=2024-01-01 |
定投收益模拟 | sip() |
/api/funds?codes=161725,... |
批量查最新净值(JSON 接口) | api_funds() |
/api/estimate/161725 |
实时估值(JSON 接口) | api_estimate() |
/api/search?q=关键词 |
按名称搜索基金(JSON 接口) | api_search() |
在基金详情页点"☆ 加入自选",首页顶部就会出现"我的自选"卡片。
自选列表保存在浏览器的 localStorage 里(键名 myFunds),不需要数据库、不需要登录,
关掉浏览器也不会丢;但换浏览器或清浏览器数据后会消失。
首页搜索框下方会显示"最近搜索"标签(最多 8 条,最新在前),点击标签直接再搜,可一键清空。
历史记录在打开搜索结果页时自动写入 localStorage(键名 searchHistory),规则和自选一样:
只存在本浏览器,不需要服务器参与。
基金详情页在基本信息下方显示「近1月 / 近3月 / 近6月 / 近1年」的区间涨跌幅(红涨绿跌)。
由 fund_api.calc_interval_returns 根据已获取的历史净值计算:以最新净值为终点,
找 N 个月前当天或之前最近交易日的净值做起点;历史数据不足的区间显示 --。
在基金详情页点"定投模拟 →",设置每期金额(默认 1000 元)、频率(每周/每两周/每月)和开始日期(默认两年前),
即可看到累计投入、当前市值、收益和收益率,以及"累计投入 vs 当前市值"走势图。
开始日期可选范围:最早为基金成立日与近 5 年(接口最多取近 5 年数据)的较晚者,最晚为今天;
超出范围的日期会被自动钳制到边界。由 fund_api.calc_sip 用历史净值计算:每次按扣款日之后第一个交易日的净值买入,
扣款日遇休市/节假日自动顺延(图上用 ◆ 标出并在图下列明),未考虑申购赎回费用和分红,
结果仅供学习参考。参数在网址里(start=YYYY-MM-DD,旧链接的 years=N 也兼容),可以收藏和分享。
基金详情页顶部有"实时估值"卡片,交易时段(工作日 9:30~15:00)每 30 秒自动刷新。
注:2026 年起监管要求各平台下架官方"盘中估值"功能,公开估值接口已全部失效,
所以这里的估值是自己算的(fund_api.get_fund_estimate):取基金最新披露的前十大重仓股
(天天基金 F10 持仓页),乘以东财实时行情接口的个股涨跌幅,加权求和得到估算涨幅:
估算涨幅 = Σ(个股涨跌幅 × 占净值比例),估算净值 = 最新净值 × (1 + 估算涨幅/100)。
东财行情接口对部分环境的 HTTPS 请求会直接断连,代码会自动回退 HTTP 重试。
只算了前十大重仓股、其余持仓按不涨不跌处理,且持仓是季度披露数据,与实盘有偏差,
结果仅供参考。纯债基、货币基金等没有近期股票持仓的基金显示"不支持估算"。
把 2~5 只基金的近一年累计涨跌幅画在同一张图上(以各自第一天为起点归一化成百分比,价位不同的基金才能公平比较)。
添加方式:在基金详情页点"和其他基金对比 →",或在对比页输入框直接搜索基金名称、点建议即可加入,
不用记代码。代码在网址里(/compare?codes=...),对比结果可以收藏和分享。
导航栏"热门推荐"进入榜单页(/hot):从天天基金排行接口取前 20 名,推荐依据可切换——
日涨幅 / 近1周 / 近1月 / 近3月 / 近6月 / 近1年 / 今年来,并可按基金类型(股票型/混合型/指数型/债券型/QDII/FOF)筛选。
当前排序列高亮显示,点列头或标签都能切换;点基金名称进入详情页。
参数在网址里(sort、type),榜单可以收藏和分享。
注:免费公开接口没有"资金流动量"数据,所以推荐维度以各区间涨幅为主。
导航栏"财经要闻"进入 /news:展示新浪财经 7×24 快讯最新 30 条(最新在前),
正文或标签命中股市关键词(A股、涨停、沪指、创业板、港股、美股等,见 fund_api.STOCK_NEWS_KEYWORDS)
的条目会加红色"股市"徽章并淡红底高亮,方便快速找到可能影响股票涨跌的新闻。
点击条目可跳转新浪原文。关键词识别只是粗筛,仅供参考,不构成投资建议。
配置大模型 API Key 后,每条新闻下方会显示 AI 的分析:影响哪些行业、利好(看涨)/ 利空(看跌)/中性、一句话理由。新闻本身全部来自新浪官方接口(带原文链接可核验), AI 只阅读已有新闻做点评,不生成新闻内容。
启用方法:把 .env.example 复制为 .env,填入 API Key(.env 已被 git 忽略,不会上传):
AI_API_KEY=sk-xxx
AI_BASE_URL=https://api.deepseek.com # 默认 DeepSeek;Kimi 开放平台填 https://api.moonshot.cn/v1
AI_MODEL=deepseek-chat # Kimi 填 moonshot-v1-8k,OpenAI 填 gpt-4o-mini
# Kimi Code 编程套餐(sk-kimi- 前缀):
# AI_BASE_URL=https://api.kimi.com/coding/v1, AI_MODEL=kimi-k2
可选 AI_TEMPERATURE=0.2;不传时用模型默认值(kimi-k2 只允许默认温度,传了会报错)。
实现要点(ai_api.py):整页新闻一次性批量调用(30 条约 23k tokens,几分钱),
按快讯 id 做内存缓存,刷新页面不重复扣费;分析由前端异步加载(2 分钟(接口超时已放宽到 300 秒),
前端异步等待期间页面其他内容不受影响。/api/news_analysis),
不阻塞页面打开;没配 key 或调用失败时页面照常工作。AI 判断只是文本解读的推测,不构成投资建议。
注意:kimi-k2 等思考型模型分析 30 条新闻约需 1
均为公开免费接口,仅用于学习:
- 天天基金移动端 API:最新净值、历史净值
- 天天基金排行接口:按区间涨幅排序的基金榜单
- 天天基金搜索建议:按名称/代码搜索
- 天天基金 F10 持仓页:前十大重仓股(实时估值用)
- 东方财富实时行情接口:个股涨跌幅(实时估值用)
- 新浪财经:基金概况(类型、规模、公司、经理)
- 新浪财经 7×24 快讯:财经要闻