ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

【量化投资从入门到精通 #09】把盯盘数据落库:为什么 SQLite 够用、怎么写

【量化投资从入门到精通 #09】把盯盘数据落库:为什么 SQLite 够用、怎么写

📚 本系列进度:#01–#08 ✅ #09 ✅ #10–#48 ⏳

工具篇第三篇。数据留痕,才能盘后复盘「今天到底发生了什么」。

一、这个方法解决什么投资问题

盘中看到异动,收盘就忘了;下周想复盘「那天谁最活跃」却没记录。量化讲究可追溯——每一笔信号、每一次异动,都得落库。

二、核心思想:SQLite 是个人量化的最佳落库

你不需要 MySQL/PostgreSQL。单机策略、个人复盘,SQLite(Python 标准库) 三个理由足够:零依赖、单文件、SQL 直接查。等你要多人协作再升级。

三、实操演示

import sqlite3
conn = sqlite3.connect("stock_snapshot.db") # 实战用文件库;演示用 :memory:
conn.execute("""CREATE TABLE snapshot (
ts TEXT, code TEXT, name TEXT, price REAL, pct REAL, amount REAL)""")
# 盘中每轮扫描,把批量快照 INSERT 进去
items = mc.stock_ssjy_more(",".join(BASKET))
for it in items:
conn.execute("INSERT INTO snapshot VALUES (?,?,?,?,?,?)",
(now, it["dm"], it.get("mc"), it["p"], it["pc"], it["cje"]))
# 盘后复盘:按成交额降序看今日异动
for row in conn.execute("SELECT code,name,price,pct,amount FROM snapshot ORDER BY amount DESC"):
print(row)

真实输出(2026-08-06,8 只篮子): 写入 8 条;查询按成交额降序,300750(123.5 亿)居首,000001(6.3 亿)垫底——一眼看出今天谁最热闹。

四、结果解读

多轮扫描不断 INSERT,你就有了「全天的异动时间线」。配合《实时盯盘》系列的告警,能回答:「本周我收到 12 次告警,哪只触发最频繁?」——这正是复盘的起点。

五、常见陷阱

  • 用 CSV 追加:不便查询、易锁文件。SQLite 一条 SQL 搞定。
  • 存全量 tick:个人复盘用「每 N 分钟一笔快照」足矣,别堆原始逐笔(那是机构级)。
  • 不建索引:数据多了按 code/ts 查慢,给常用列加索引。

六、小结 + 下篇预告

SQLite 三步(建表/写/查)搞定个人落库。下篇 #10 讲数据质量陷阱——复权、停牌、涨跌停,脏数据会悄悄吃收益。

七、合规收尾

本文为量化方法教学,不构成投资建议,不承诺收益。投资有风险,入市需谨慎。

返回列表