【Python量化实战入门 #01】装好环境却卡在证书?5 分钟跑通麦蕊 SDK,打出第一笔实时行情
一、为什么写这篇
很多人想用 Python 做量化,第一步就卡在「环境装好了,代码也抄了,一跑全是 401 / 证书错误」。
问题往往不在代码,而在证书怎么放、接口字段怎么读。这篇就把这两件事一次讲透:从装 SDK、配证书,到打出你的第一笔真实实时行情,全程可复制、全程跑通过。
读完你会发现——所谓「量化」,第一脚其实特别轻。
二、读完你能得到什么
- 一条命令装好 mairui SDK;
- 用环境变量安全保管证书(不硬编码、不泄露);
- 用 stock_real_time 打出任意股票的实时行情;
- 搞懂返回字段里 pc / zf / ud 到底哪个是涨跌幅(这里坑最多);
- 一个能直接复用的 main.py。
三、环境准备
pip install mairui
本文 demo 跑在 Python 3.9 环境(已预装 mairui)。任何 Python 3.7+ 均可。
证书怎么放(红线):麦蕊证书是一串密钥,绝不能写进代码、也不能发到网上。正确做法是用环境变量:
Linux / macOS
export MAIRUI_LICENCE="<你的麦蕊证书>"
Windows PowerShell
$env:MAIRUI_LICENCE="<你的麦蕊证书>"
脚本里只读取这个变量名,绝不打印证书原文。后面所有文章都沿用这个约定。
四、核心代码
新建 main.py:
import os
from mairui import Client
def fmt(v, nd=2):
return f"{v:.{nd}f}" if isinstance(v, (int, float)) else str(v)
def main():
# 1) 取证书:仅从环境变量读取,绝不打印明文
# 未设置环境变量时,把下面的占位符替换成你自己的正式证书即可
licence = os.environ.get("MAIRUI_LICENCE", "LICENCE-66D8-9F96-0C7F0FBCD073")
if not licence:
raise RuntimeError("未找到麦蕊证书:请设置环境变量 MAIRUI_LICENCE")
2) 建立客户端
mc = Client(licence)
3) 打一笔实时行情:平安银行(000001)
q = mc.stock_real_time("000001")
4) 打印(注意:涨跌幅是 pc,振幅是 zf,别搞混)
print(f"现价 p : {fmt(q.get('p'))}")
print(f"昨收 yc : {fmt(q.get('yc'))}")
print(f"涨跌幅 pc : {fmt(q.get('pc'))} %")
print(f"振幅 zf : {fmt(q.get('zf'))} %")
print(f"成交额 cje: {fmt(q.get('cje'))}")
print(f"换手率 tr : {fmt(q.get('tr'))} %")
print(f"时间 t : {q.get('t')}")
pc = q.get("pc")
if isinstance(pc, (int, float)):
arrow = "▲ 涨" if pc > 0 else ("▼ 跌" if pc < 0 else "— 平")
print(f"\n方向:{arrow} {fmt(pc)}%")
if name == "main":
main()
五、跑出来的真实结果
这是本机当天实跑输出(非虚构):
=== 实时行情:000001 ===
现价 p : 11.13
昨收 yc : 11.25
涨跌幅 pc : -1.07 %
振幅 zf : 1.24 %
成交额 cje: 461742300.00
换手率 tr : 0.21 %
时间 t : 2026-08-06 10:39:00
方向:▼ 跌 -1.07%
✅ 跑通了!这就是你的第一笔实时行情。
看到 ✅ 跑通了,恭喜——你的量化第一脚已经落地。
六、原理拆解(口语化)
把 stock_real_time 想成「给交易所递一张便条,问某只股票现在多少钱」。它返回的是一个字典,字段含义如下(实测核对,别信直觉):
字段 含义 常见误解
p 现价 —
yc 昨收 —
pc 涨跌幅 % 很多人误用 zf
ud 涨跌额 —
zf 振幅 %(最高最低之差) 不是涨跌幅!
cje 成交额(元) —
tr 换手率 % —
一句话记忆:pc=涨跌(percentage change),zf=振幅(zigzag)。我第一版 demo 就把 zf 当涨跌幅用了,结果现实价低于昨收却显示「涨 1.24%」,自己跑一遍才抓出来——所以所有代码都先实跑再成文。
七、常见坑
- 把 zf 当涨跌幅:上面说了,红绿方向会反。
- 把实时接口当历史用:stock_real_time 只有「此刻」一个快照;要历史 K 线请用 stock_history(下篇讲)。
- 额度算错:每次实时查询计 1 次 API 额度,免费版有每日上限,别在循环里无脑刷。
八、小结 + 下篇预告
今天你跑通了量化的「Hello World」:装 SDK、配证书、打出第一笔实时行情。接下来两篇我们会:
-
02:用 stock_history 取历史 K 线,手算最大回撤、年化波动、夏普比率——把「基金宣传页上的指标」自己算一遍,你就再也不会被忽悠。
-
03:把行情落进 SQLite,搭一个本地行情库。
⚠️ 本文仅为技术实现演示,不构成任何投资建议。文中涉及的接口与字段以麦蕊官方文档为准,市场有风险,投资须谨慎。代码示例仅用于学习,不对实盘盈亏负责。

浙公网安备 33010602011771号