Skip to main content

Official Python SDK for QOS Market Data API.

Project description

QOS行情API Python SDK

PyPI version Python versions

官方Python SDK for QOS行情API,支持港股、美股、A股和加密货币的实时行情数据,K线数据,历史K线数据,直接提供了港股API,美股API,A股API,加密货币API。

功能特性

  • 完整实现所有7个HTTP接口和11个WebSocket命令
  • 强类型检查(基于Pydantic)
  • 同步HTTP客户端和异步WebSocket客户端
  • 自动重连和心跳维护
  • 完善的错误处理机制

安装

pip install qos-api

注册API KEY

注册api key

快速开始

初始化客户端

注册api key

from qos_api import QOSClient

client = QOSClient(api_key="您的API_KEY")

HTTP接口使用示例

获取品种基础信息

# 获取股票基础信息
info = client.get_instrument_info(["US:AAPL", "HK:00700", "SH:600519"])
print(info)

获取实时行情快照

# 获取实时行情
snapshot = client.get_snapshot(["US:TSLA", "HK:09988"])
print(snapshot)

获取K线数据

from qos_api.constants import KLineType

# 获取日K线
kline = client.get_kline(
    codes=["SH:600519"],
    ktype=KLineType.DAY.value,
    count=10
)
print(kline)

WebSocket接口使用示例

实时行情订阅

注册api key

import asyncio
from qos_api import QOSClient

async def handle_snapshot(snapshot):
    print(f"行情更新: {snapshot}")

async def pull_snapshot_periodically(client):
    """每10秒主动请求一次快照"""
    try:
        while True:
            data = await client.request_snapshot(["US:AAPL"])
            print(f"手动拉取快照数据: {data}")
            await asyncio.sleep(10)
    except asyncio.CancelledError:
        print("快照任务已取消")
        raise

async def main():
    client = QOSClient(api_key="您的API_KEY")
    client.register_callback("S", handle_snapshot)
    await client.connect_ws()
    await client.subscribe_snapshot(["US:AAPL", "HK:700"])

    # 启动后台任务
    snapshot_task = asyncio.create_task(pull_snapshot_periodically(client))

    try:
        while True:
            await asyncio.sleep(1)
    except KeyboardInterrupt:
        print("收到退出信号,正在清理...")
        snapshot_task.cancel()
        await asyncio.gather(snapshot_task, return_exceptions=True)
        await client.close()
        print("已优雅退出")

if __name__ == "__main__":
    try:
        asyncio.run(main())
    except KeyboardInterrupt:
        # 再次捕获,防止 asyncio.run 抛出错误
        print("主程序强制退出")

请求实时数据

注册api key

import asyncio
from qos_api import QOSClient
from qos_api.constants import KLineType

async def request_realtime_data():
    client = QOSClient(api_key="您的API_KEY")
    await client.connect_ws()
    
    # 请求实时行情
    snapshot = await client.request_snapshot(["US:AAPL"])
    print(snapshot)
    
    # 请求K线
    kline = await client.request_kline(
        codes=["HK:700"],
        ktype=KLineType.DAY.value,
        count=10
    )
    print(kline)

asyncio.run(request_realtime_data())

完整API参考

HTTP接口

方法 描述 对应API
get_instrument_info(codes) 获取品种基础信息 GET /instrument-info
get_snapshot(codes) 获取实时行情快照 GET /snapshot
get_depth(codes) 获取盘口深度 GET /depth
get_trades(codes, count) 获取逐笔成交 GET /trade
get_kline(codes, ktype, count, adjust) 获取K线数据 GET /kline
get_history_kline(codes, ktype, end_time, count, adjust) 获取历史K线 GET /history

WebSocket接口

订阅管理

方法 描述 对应命令
subscribe_snapshot(codes) 订阅实时快照 S
unsubscribe_snapshot(codes) 取消订阅快照 SC
subscribe_trades(codes) 订阅逐笔成交 T
unsubscribe_trades(codes) 取消订阅逐笔 TC
subscribe_depth(codes) 订阅盘口数据 D
unsubscribe_depth(codes) 取消订阅盘口 DC
subscribe_kline(codes, ktype) 订阅K线数据 K
unsubscribe_kline(codes, ktype) 取消订阅K线 KC

数据请求

方法 描述 对应命令
request_snapshot(codes) 请求实时快照 RS
request_trades(codes, count) 请求逐笔成交 RT
request_depth(codes) 请求盘口数据 RD
request_kline(codes, ktype, count) 请求K线数据 RK
request_history_kline(codes, ktype, end_time, count) 请求历史K线 RH
request_instrument_info(codes) 请求品种信息 RI

连接管理

方法 描述
connect_ws() 建立WebSocket连接
disconnect_ws() 断开WebSocket连接
heartbeat() 发送心跳包
register_callback(data_type, callback) 注册数据回调

数据模型

所有返回数据都使用Pydantic模型,主要模型包括:

  • InstrumentInfo: 品种基础信息
  • QuoteSnapshot: 行情快照
  • MarketDepth: 盘口深度
  • TradeTick: 逐笔成交
  • KLine: K线数据

错误处理

所有异常都继承自 QOSAPIError

from qos_api import QOSAPIError

try:
    data = client.get_snapshot(["US:AAPL"])
except QOSAPIError as e:
    print(f"API错误: {e.code} - {e.message}")

限制说明

  1. 默认每个连接最多订阅10个品种
  2. HTTP请求频率限制为每分钟10次
  3. WebSocket消息间隔需大于1秒

技术支持

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qos_api-0.2.0.tar.gz (12.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

qos_api-0.2.0-py3-none-any.whl (12.2 kB view details)

Uploaded Python 3

File details

Details for the file qos_api-0.2.0.tar.gz.

File metadata

  • Download URL: qos_api-0.2.0.tar.gz
  • Upload date:
  • Size: 12.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.2

File hashes

Hashes for qos_api-0.2.0.tar.gz
Algorithm Hash digest
SHA256 d5657c27aa3e2ef873c3ceef2687437bf22cc6a191d49714f89a40e9e8547106
MD5 8b2daf2ba4c865cfa895a50a7db22753
BLAKE2b-256 96007a59d233f679e0b838059fc0a535e331d53bd7a90705e490f45b8115d6e2

See more details on using hashes here.

File details

Details for the file qos_api-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: qos_api-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 12.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.2

File hashes

Hashes for qos_api-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5914ec96da70e1157d3f27ced6e4b49ec1c6e9f89a93d8c4efff17305348c7b5
MD5 c2c3f25a3e3af01772db17052770fe9c
BLAKE2b-256 5126d2e4d7908d98b02e79c498b961407946064d116b93f401eefb1f538bf123

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page