← 返回博客列表

【魔码量化工程实战进阶 #11】多资产接入:指数基金港股美股一把梭

2026年08月31日 18:03 · 魔码数服 · 魔码量化工程实战进阶

【魔码量化工程实战进阶 #11】多资产接入:指数 / 基金 / 港股 / 美股一把梭

入门系列几乎只用 A 股个股(600519 这种)。但真实策略要跨资产:用沪深 300 指数当基准、买 ETF 做仓位、跟踪港股腾讯、对比美股英伟达。本篇把"多资产一把梭"的工程要点讲清——代码后缀规范、跨市场时间、报价币种,以及如何用同一套纯 HTTP 代码接入不同资产。

本文你将得到什么

  1. 魔码覆盖的资产类别与 code 命名规范(后缀 .SH/.SZ/.HK/.US 不能错)
  2. 一个统一的多资产拉取函数(同一套 requests,只换 code)
  3. 跨市场时间报价币种两个必须处理的事实
  4. 真实返回边界:A 股 ETF 实时可用,指数/港股需对应资产权限(演示证返回 error)

一、痛点:只会拉 600519

新手代码写死 A 股个股,遇到"给我沪深 300 指数""买点创业板 ETF""看看腾讯港股"就卡住。本质就三件事没搞清:① code 怎么拼;② 不同市场交易时间不同;③ 港股用港币、美股用美元,不能直接和 A 股比价。


二、工程方案:code 命名规范

魔码行情接口用 code 后缀区分资产,纯 HTTP 同构,只换 code 即可:

资产 后缀 示例 说明
沪市 A 股 .SH 600519.SH688981.SH(科创) 600/601/603/688 开头
深市 A 股 .SZ 000001.SZ300750.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.USTSLA.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 + 港股 + 美股"的全谱系。

指数、港股、美股等广度覆盖,正是魔码"省心·广度"定位的强项;对应资产权限随证书档位开放。前往 魔码证书申请页 了解各档权益。


免责声明:本文所有示例数据仅用于接口演示,不构成任何投资建议;市场有风险,投资需谨慎。

系列持续更新中。 想要亲手跑通上面的代码?前往 魔码证书申请页 免费领取你的专属证书,复制即用、按次计费、稳定可用。

想亲自试一下?免费获取证书
客服微信
客服微信二维码