深入解析使用 Python 语言获取量化策略所需的股票行情数据的方法

在量化交易中,数据是构建策略的核心。对于美股、港股和 A 股市场,获取高质量的 美股实时行情API美股行情api美股历史数据api美股数据api 等实时数据以及历史数据对于实现量化策略至关重要。特别是对 美股行情数据美股分钟数据 的实时获取,对于基于短周期数据的交易策略尤为关键。本文将以 Python 为例,介绍如何通过 API 获取港股、美股、A 股的实时行情和 K 线数据,帮助你更好地进行量化分析和策略回测。


一、量化策略中的数据需求

量化策略通常依赖于以下几类数据:

在开发量化策略时,稳定且高质量的数据源对策略的成功至关重要。特别是实时数据和历史数据的获取,不仅能够支持策略的开发,还能在回测和实盘过程中提供精确的市场反映。


二、数据源简介:QOS行情API

QOS 提供了一个 RESTful API,能够获取 美股、港股、A股 的实时行情和历史 K 线数据。该 API 支持简单的 HTTP 请求,返回 JSON 格式的数据,非常适合与 Python 等编程语言进行快速集成。

API 提供的主要功能包括:


三、安装依赖

使用 Python 获取数据时,通常需要用到 requests 库进行 HTTP 请求。首先,你需要安装这个库:

pip install requests

四、获取实时行情数据

以下是一个简单的 Python 示例,用于获取美股 Apple(AAPL)的实时行情数据:

import requests
import json

# 官网:https://qos.hk
# 免费api key注册申请:https://qos.hk
url = "https://api.qos.hk/snapshot?key=your-api-key"

payload = json.dumps({
  "codes": [
    "US:AAPL"
  ]
})
headers = {
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

返回的数据将包含美股 Apple(AAPL)的实时行情数据信息:

{
    "msg": "OK",
    "data": [
        {
            "c": "US:AAPL",
            "lp": "188.38",
            "yp": "203.19",
            "o": "193.89",
            "h": "199.88",
            "l": "187.34",
            "ts": 1743796800,
            "v": "125910913",
            "t": "24244725108",
            "s": 0,
            "pq": {
                "o": "206.25",
                "lp": "193.91",
                "ts": 1743773400,
                "v": "2043000",
                "t": "396809716.8140000105",
                "h": "206.25",
                "l": "190.33",
                "yp": "203.19"
            },
            "aq": {
                "o": "188.38",
                "lp": "186.6",
                "ts": 1743811197,
                "v": "2591309",
                "t": "487865398.9240000248",
                "h": "188.98",
                "l": "186.44",
                "yp": "188.38"
            },
            "nq": {
                "o": "203.36",
                "lp": "202.22",
                "ts": 1743753600,
                "v": "96308",
                "t": "19504344",
                "h": "203.75",
                "l": "201.34",
                "yp": "203.19"
            },
            "tt": 2
        }
    ]
}

五、获取历史 K 线数据

K 线数据通常用于策略回测和技术分析,下面的代码示例展示了如何获取美股 Apple(AAPL)最近 100 条 5 分钟的 K 线数据:

import requests
import json

# 官网:https://qos.hk
# 免费api key注册申请:https://qos.hk
url = "https://api.qos.hk/kline?key=your-api-key"

payload = json.dumps({
  "kline_reqs": [
    {
      "c": "US:AAPL",
      "co": 100, # 获取最近 100 条数据
      "kt": 5    # K线周期:"1"为1分钟线,"5"为5分钟线,"1001"为日线等
    }
  ]
})
headers = {
  'Content-Type': 'application/json'
}

response = requests.request("POST", url, headers=headers, data=payload)

print(response.text)

每条 K 线记录通常包括时间、开盘价、收盘价、最高价、最低价和成交量等信息。


六、如何处理多市场数据

它支持多个市场的数据查询,通过传入的codes参数的前三位指定:

市场代码 说明 交易时间
US 美股 美股正常交易时间(美东部时间,ET):
开盘时间:上午 9:30
收盘时间:下午 4:00
盘前交易:
开始时间:上午 4:00
结束时间:上午 9:30
盘后交易:
开始时间:下午 4:00
结束时间:下午 8:00
夜盘交易:
开始时间:下午 8:00
结束时间:第二日上午 3:50
以上时间为美国当地时间,如果换算为其它时间时需要注意令时转换
夏令时(通常从3月的第二个星期日到11月的第一个星期日)
冬令时(通常从11月的第一个星期日到3月的第二个星期日)
转换为UTC+8冬令开市是22点30分,夏令开市是21点30分。
HK 港股 UTC+8 上午交易时段:9:30 - 12:00 下午交易时段:13:00 - 16:00
SZ A股深圳 UTC+8 上午交易时段:9:30 - 11:30 下午交易时段:13:00 - 15:00
SH A股上海 UTC+8 上午交易时段:9:30 - 11:30 下午交易时段:13:00 - 15:00

例如,获取港股腾讯控股的实时行情:

params = {
  "codes": [
    "HK:00700"
  ]
}

如果你想获取沪市 A 股的实时行情(例如茅台),可以这样写:

params = {
  "codes": [
    "SH:600519"
  ]
}

七、如何使用这些数据进行量化分析

获取到的实时数据和 K 线数据,通常需要使用 pandas 进行分析与处理。以下是一个简单的例子,计算美股 AAPL的 5日均线:

import pandas as pd

# 假设 kline_data 已经获取并包含所需字段
df = pd.DataFrame(kline_data)
df.columns = ["timestamp", "open", "high", "low", "close", "volume"]

# 计算 5 日均线
df["ma_5"] = df["close"].rolling(5).mean()

print(df[["timestamp", "close", "ma_5"]].tail())

通过上面的代码,你可以得到 AAPL 最近几天的收盘价和 5 日均线,作为一个简单的技术指标。


八、量化分析中的常见应用场景

通过 QOS行情API 提供的数据,我们可以做以下分析和策略开发:

例如,下面是一个简单的例子,利用移动平均线交叉策略来生成买入卖出信号:

# 假设 df 已经包含收盘价
df['ma_10'] = df['close'].rolling(window=10).mean()
df['ma_50'] = df['close'].rolling(window=50).mean()

# 策略:短期均线上穿长期均线时买入,下穿时卖出
df['signal'] = 0
df['signal'][df['ma_10'] > df['ma_50']] = 1  # 买入信号
df['signal'][df['ma_10'] < df['ma_50']] = -1  # 卖出信号

print(df[['timestamp', 'close', 'ma_10', 'ma_50', 'signal']].tail())

九、小结

通过 Python 获取 美股实时行情API美股历史数据api,我们能够为量化策略提供稳定的数据支持。QOS API 提供了简单易用的数据获取方式,不仅涵盖了实时行情数据,还能帮助量化分析师获取历史 K 线数据。无论是做 美股分钟数据 的短周期策略,还是基于 美股K线 的长期策略,都可以通过这些 API 来满足数据需求。


联系客服

联系客服

Telegram: @stock_quote_api

联系客服