【魔码量化工程实战进阶 #11】多资产接入:指数基金港股美股一把梭
【魔码量化工程实战进阶 #11】多资产接入:指数 / 基金 / 港股 / 美股一把梭
入门系列几乎只用 A 股个股(
600519这种)。但真实策略要跨资产:用沪深 300 指数当基准、买 ETF 做仓位、跟踪港股腾讯、对比美股英伟达。本篇把"多资产一把梭"的工程要点讲清——代码后缀规范、跨市场时间、报价币种,以及如何用同一套纯 HTTP 代码接入不同资产。
本文你将得到什么
- 魔码覆盖的资产类别与 code 命名规范(后缀
.SH/.SZ/.HK/.US不能错) - 一个统一的多资产拉取函数(同一套
requests,只换 code) - 跨市场时间与报价币种两个必须处理的事实
- 真实返回边界:A 股 ETF 实时可用,指数/港股需对应资产权限(演示证返回 error)
一、痛点:只会拉 600519
新手代码写死 A 股个股,遇到"给我沪深 300 指数""买点创业板 ETF""看看腾讯港股"就卡住。本质就三件事没搞清:① code 怎么拼;② 不同市场交易时间不同;③ 港股用港币、美股用美元,不能直接和 A 股比价。
二、工程方案:code 命名规范
魔码行情接口用 code 后缀区分资产,纯 HTTP 同构,只换 code 即可:
| 资产 | 后缀 | 示例 | 说明 |
|---|---|---|---|
| 沪市 A 股 | .SH |
600519.SH、688981.SH(科创) |
600/601/603/688 开头 |
| 深市 A 股 | .SZ |
000001.SZ、300750.SZ(创业) |
000/001/002/300 开头 |
| 指数 | .SH/.SZ |
000001.SH(上证)、000300.SH(沪深300) |
指数也带交易所后缀 |
| ETF | .SH/.SZ |
510300.SH(沪深300ETF)、159915.SZ |
51xxxx / 15xxxx |
| LOF | .SZ |
163406.SZ |
16xxxx |
| 港股 | .HK |
00700.HK(腾讯)、09988.HK |
5 位 + .HK |
| 美股 | .US |
AAPL.US、TSLA.US |
代码 + .US |
统一拉取函数:
import requests
TOKEN = "你的证书" # 需含对应资产权限;演示证仅覆盖 A 股个股/ETF
BASE = "https://api.momaapi.com"
def quote(code):
r = requests.get(f"{BASE}/hsstock/real/time/{code}/{TOKEN}", timeout=20)
if "error" in r.json():
raise ValueError(f"{code} 无权限或不存在: {r.json()}")
return r.json()
for code in ["510300.SH", "000300.SH", "00700.HK", "AAPL.US"]:
try:
print(code, quote(code).get("p"))
except ValueError as e:
print(code, "跳过:", e)
三、本机实测(真实接口返回边界)
演示证书(免费档)实测:A 股 ETF 510300 实时快照正常返回(字段与个股同构:pe,ud,pc,zf,tr,pb_ratio,p,o,h,l,yc,cje,v,pv,tv,t);而指数 000001.SH、港股 00700.HK 实时接口返回 error——因为演示证不含对应资产权限。
510300.SH (沪深300ETF): 正常, 最新价 11.65
000001.SH (上证指数): error (需指数权限证书)
00700.HK (港股腾讯): error (需港股权限证书)
结论:多资产接入代码同构,但证书需含对应资产权限。免费证通常覆盖 A 股个股/ETF;指数、港股、美股需升级档/Pro 档证书。不要伪造返回,按证书权限接。
四、原理深挖:两个跨市场事实
4.1 跨市场交易时间不同
| 市场 | 交易时段(北京时) | 注意 |
|---|---|---|
| A 股 | 9:30–11:30, 13:00–15:00 | 午休 11:30–13:00 |
| 港股 | 9:30–12:00, 13:00–16:00 | 午休更长 |
| 美股(夏令) | 21:30–4:00(次日) | 冬令延后 1 小时 |
影响:跨市场策略的"同一时刻"要按各自日历对齐(接 #08);A 股收盘后港股还在交易,别用 A 股收盘价当港股信号。
4.2 报价币种不同,比价前先换币
A 股报价人民币、港股港币、美股美元。直接比 p 是荒诞的。跨市场比较(如"A 股折溢价")必须先把价格换成同一币种(用汇率接口或固定汇率),再比。
USD_CNY = 7.2; HKD_CNY = 0.92
def to_cny(p, ccy):
return {"CNY":p, "HKD":p*HKD_CNY, "USD":p*USD_CNY}[ccy]
五、小结
多资产接入的代码极简(同一套 requests 只换 code),真正的工程工作量在:① code 后缀规范(错了路由不到);② 跨市场时间对齐(各自日历);③ 报价币种统一(换币后再比)。这些事实处理对了,你的策略才能从"单市场个股"扩展到"指数 + ETF + 港股 + 美股"的全谱系。
指数、港股、美股等广度覆盖,正是魔码"省心·广度"定位的强项;对应资产权限随证书档位开放。前往 魔码证书申请页 了解各档权益。
免责声明:本文所有示例数据仅用于接口演示,不构成任何投资建议;市场有风险,投资需谨慎。
系列持续更新中。 想要亲手跑通上面的代码?前往 魔码证书申请页 免费领取你的专属证书,复制即用、按次计费、稳定可用。
