Python 如何接入量化行情接口

本文将通过两个典型的接入示例(HTTP + WebSocket),教你如何使用 Python 接入量化行情接口,以获取股票、Crypto等实时行情数据。

步骤一:准备工作

在开始之前,确保你已具备以下环境:

  • Python 3.7+

  • 已注册行情 API 服务并拿到 API Key

  • 安装依赖库:

pip install requests websockets

步骤二:通过 HTTP 请求获取 K 线数据(适合批量拉取)

HTTP 接口适用于低频请求或一次性批量获取,例如日线/分钟线数据等。

import requests

# 获取API Key: www.infoway.io

api_url = 'https://data.infoway.io/stock/batch_kline/1/10/002594.SZ%2C00285.HK%2CTSLA.US'
headers = {
    'User-Agent': 'Mozilla/5.0',
    'Accept': 'application/json',
    'apiKey': 'yourApikey'
}

response = requests.get(api_url, headers=headers)

print(f"HTTP code: {response.status_code}")
print(f"message: {response.text}")

说明:

  • URL 中的 1/10 表示请求周期为1分钟,取10条数据

  • 支持多市场混合(如 A 股、港股、美股)

  • 返回数据为 JSON,可直接解析成 Pandas DataFrame


步骤三:通过 WebSocket 订阅实时行情(适合高频接收)

WebSocket 更适用于持续接收推送的场景,如行情系统、自动交易等。

import asyncio
import json
import websockets

WS_URL = "wss://data.infoway.io/ws?business=crypto&apikey=yourApikey"

# 获取API Key: www.infoway.io

async def connect_and_receive():
    async with websockets.connect(WS_URL) as websocket:
        await websocket.send(json.dumps({
            "code": 10000,
            "trace": "trace-id",
            "data": {"codes": "BTCUSDT"}
        }))

        async def send_ping():
            while True:
                await asyncio.sleep(30)
                await websocket.send(json.dumps({
                    "code": 10010,
                    "trace": "trace-id"
                }))

        asyncio.create_task(send_ping())

        while True:
            msg = await websocket.recv()
            print(f"Message: {msg}")

asyncio.run(connect_and_receive())

说明:

  • 初始消息中 code: 10000 用于订阅标的(如 BTCUSDT)

  • 每 30 秒发送一次 ping 消息,防止连接断开

  • 收到的消息格式为 JSON,可实时处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值