【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%」,自己跑一遍才抓出来——所以所有代码都先实跑再成文。

七、常见坑

  1. 把 zf 当涨跌幅:上面说了,红绿方向会反。
  2. 把实时接口当历史用:stock_real_time 只有「此刻」一个快照;要历史 K 线请用 stock_history(下篇讲)。
  3. 额度算错:每次实时查询计 1 次 API 额度,免费版有每日上限,别在循环里无脑刷。

八、小结 + 下篇预告

今天你跑通了量化的「Hello World」:装 SDK、配证书、打出第一笔实时行情。接下来两篇我们会:

  • 02:用 stock_history 取历史 K 线,手算最大回撤、年化波动、夏普比率——把「基金宣传页上的指标」自己算一遍,你就再也不会被忽悠。

  • 03:把行情落进 SQLite,搭一个本地行情库。


⚠️ 本文仅为技术实现演示,不构成任何投资建议。文中涉及的接口与字段以麦蕊官方文档为准,市场有风险,投资须谨慎。代码示例仅用于学习,不对实盘盈亏负责。

posted @ 2026-08-11 08:08  量化分析码农  阅读(6)  评论(0)    收藏  举报