TqSdk-Python 数据获取与使用指南:合约、行情与历史数据详解

TqSdk-Python 数据获取与使用指南:合约、行情与历史数据详解

tqsdk-python 天勤量化开发包, 期货量化, 实时行情/历史数据/实盘交易 tqsdk-python 项目地址: https://gitcode.com/gh_mirrors/tq/tqsdk-python

一、合约代码规范与平台支持

TqSdk-Python 作为专业的量化交易工具,采用标准化的合约代码格式:平台代码.平台内品种代码。这种格式设计既保证了唯一性,又便于开发者理解和使用。

1.1 平台代码对照表

| 平台代码 | 对应平台名称 | 备注 | |------------|----------------------|--------------------------| | SHFE | 上海期货平台 | 包含铜、铝等金属期货 | | DCE | 大连商品平台 | 包含豆粕、玉米等农产品 | | CZCE | 郑州商品平台 | 包含棉花、白糖等品种 | | CFFEX | 中国金融平台 | 包含股指期货、国债期货 | | INE | 上海国际能源交易中心 | 原油等国际化品种 | | GFEX | 广州期货平台 | 工业硅等新品种 | | SSE | 上海证券平台 | 股票、ETF等 | | SZSE | 深圳证券平台 | 股票、ETF等 |

1.2 合约代码示例解析

期货合约示例

  • SHFE.cu1901:上期所铜1901合约
  • DCE.m1901:大商所豆粕1901合约
  • CZCE.SR901:郑商所白糖901合约(注意郑商所采用3位数字)

期权合约示例

  • DCE.m1807-C-2450:大商所豆粕看涨期权
  • CFFEX.IO2002-C-3550:中金所沪深300股指看涨期权

特殊合约

  • KQ.m@CFFEX.IF:中金所IF品种主连合约
  • KQ.i@SHFE.bu:上期所bu品种指数
  • SSWE.CUH:上期所铜仓单数据

二、实时行情数据获取

2.1 获取实时行情

使用get_quote()方法可获取合约的实时行情数据:

quote = api.get_quote("SHFE.cu2201")

2.2 行情数据结构详解

返回的行情数据包含丰富的信息,主要分为以下几类:

  1. 价格信息

    • last_price:最新价
    • ask_price1~ask_price5:卖一至卖五价
    • bid_price1~bid_price5:买一至买五价
  2. 成交量信息

    • volume:当日成交量
    • amount:当日成交额
  3. 持仓信息

    • open_interest:当前持仓量
    • pre_open_interest:昨持仓量
  4. 合约基本信息

    • price_tick:最小变动价位
    • volume_multiple:合约乘数
    • trading_time:交易时间段

2.3 实时监控行情变化

quote = api.get_quote("SHFE.cu1812")

while api.wait_update():
    if api.is_changing(quote):
        print(f"最新价变化: {quote.last_price}")

三、K线数据获取与分析

3.1 获取K线数据

# 获取10秒K线
klines = api.get_kline_serial("SHFE.cu1812", 10)

# 获取多合约对齐K线
klines = api.get_kline_serial(["SHFE.au1912", "SHFE.au2006"], 5)

3.2 K线数据结构

返回的DataFrame包含以下关键列:

  • datetime:K线起始时间(纳秒级时间戳)
  • open/high/low/close:开高低收价格
  • volume:成交量
  • open_oi/close_oi:持仓量

3.3 K线周期说明

TqSdk支持灵活的K线周期设置:

api.get_kline_serial("SHFE.cu1901", 60)    # 1分钟线
api.get_kline_serial("SHFE.cu1901", 300)   # 5分钟线
api.get_kline_serial("SHFE.cu1901", 86400) # 日线

3.4 K线更新监控

klines = api.get_kline_serial("SHFE.cu1812", 60)

while api.wait_update():
    if api.is_changing(klines.iloc[-1], "datetime"):
        print("新K线生成:", klines.iloc[-1])

四、Tick数据获取

4.1 获取Tick数据

ticks = api.get_tick_serial("SHFE.cu1812")

4.2 Tick数据结构

Tick数据包含每一笔成交的详细信息,包括:

  • 买卖盘价格和量
  • 最新成交价和量
  • 持仓量变化等

五、实战技巧与常见问题

5.1 多合约监控技巧

# 同时监控多个合约
quotes = [api.get_quote(symbol) for symbol in ["SHFE.cu1901", "SHFE.cu1902"]]
klines = [api.get_kline_serial(symbol, 60) for symbol in ["SHFE.cu1901", "SHFE.cu1902"]]

while api.wait_update():
    for i, q in enumerate(quotes):
        if api.is_changing(q):
            print(f"合约{i+1}行情变化:", q.last_price)

5.2 数据更新机制理解

TqSdk采用推送机制,当调用wait_update()时会阻塞等待,直到有新的数据到达。开发者应理解:

  1. 每次wait_update()可能包含多个合约的数据更新
  2. 使用is_changing()可以精确判断哪个数据发生了变化
  3. 对于高频策略,建议合并处理多个更新以提高效率

5.3 主连合约处理

主连合约(如KQ.m@CFFEX.IF)会自动切换主力合约,开发者需要注意:

  1. 主力切换通常发生在持仓量和成交量最大的合约变化时
  2. 切换后不会再切回之前的合约
  3. 回测时需要特别处理合约切换点

六、性能优化建议

  1. 合理选择数据粒度:根据策略需求选择适当的数据频率
  2. 限制数据请求量:避免同时请求过多不必要的数据
  3. 利用缓存机制:重复使用的数据应本地缓存
  4. 批量处理更新:合并处理多个数据更新事件

通过本文的详细讲解,开发者可以全面掌握TqSdk-Python中合约、行情和历史数据的使用方法,为量化交易策略开发打下坚实基础。

tqsdk-python 天勤量化开发包, 期货量化, 实时行情/历史数据/实盘交易 tqsdk-python 项目地址: https://gitcode.com/gh_mirrors/tq/tqsdk-python

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梅亭策Serena

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值