【期货量化入门】Python获取期货K线数据(TqSdk完整教程)

一、前言

在量化交易中,K线数据是最常用的数据类型。无论是计算技术指标(如均线、MACD、布林带),还是进行策略回测,都离不开K线数据。

本文将详细介绍如何使用**天勤量化(TqSdk)**获取期货K线数据,包括:

  • 获取不同周期的K线(1分钟、5分钟、日线等)
  • 实时更新K线数据
  • 判断新K线生成
  • 使用pandas处理K线数据

二、K线数据基础

2.1 什么是K线?

K线(也叫蜡烛图)是一种常用的价格图表,每根K线包含四个价格:

字段英文说明
开盘价openK线起始价格
最高价highK线期间最高价
最低价lowK线期间最低价
收盘价closeK线结束价格

2.2 K线周期

常见的K线周期:

周期秒数说明
1分钟60短线交易常用
5分钟300日内交易常用
15分钟900波段交易常用
1小时3600中线交易常用
日线86400趋势分析常用

三、获取K线数据(完整代码)

3.1 获取1分钟K线

#!/usr/bin/env python# -*- coding: utf-8 -*-""" 功能:获取期货K线数据 说明:本代码仅供学习参考 """from tqsdk import TqApi, TqAuth # 创建API实例 api = TqApi(auth=TqAuth("你的快期账户","你的密码"))# 获取螺纹钢2501合约的1分钟K线,最近200根 klines = api.get_kline_serial("SHFE.rb2501", duration_seconds=60, data_length=200)# 打印K线数据类型print(f"数据类型: {type(klines)}")print(f"K线数量: {len(klines)}")print("-"*60)# 打印最后5根K线print("最近5根K线:")print(klines.tail())# 关闭API api.close()

运行结果示例:

数据类型: <class 'pandas.core.frame.DataFrame'> K线数量: 200 ------------------------------------------------------------ 最近5根K线: datetime open high low close volume 195 2025-01-15 14:55:00+08:00 3350.0 3352.0 3348.0 3351.0 1520 196 2025-01-15 14:56:00+08:00 3351.0 3353.0 3350.0 3352.0 1380 197 2025-01-15 14:57:00+08:00 3352.0 3354.0 3351.0 3353.0 1450 198 2025-01-15 14:58:00+08:00 3353.0 3355.0 3352.0 3354.0 1620 199 2025-01-15 14:59:00+08:00 3354.0 3356.0 3353.0 3355.0 1580 

3.2 代码解析

klines = api.get_kline_serial("SHFE.rb2501", duration_seconds=60, data_length=200)
参数说明
"SHFE.rb2501"合约代码
duration_seconds=60K线周期(秒),60秒=1分钟线
data_length=200获取K线数量

常用周期设置:

周期duration_seconds
10秒线10
1分钟线60
5分钟线300
15分钟线900
30分钟线1800
1小时线3600
日线86400 (即246060)

3.3 获取日线数据

from tqsdk import TqApi, TqAuth api = TqApi(auth=TqAuth("你的快期账户","你的密码"))# 获取螺纹钢日线,最近60个交易日 klines = api.get_kline_serial("SHFE.rb2501", duration_seconds=24*60*60, data_length=60)print("最近5个交易日的日K线:")print(klines[["datetime","open","high","low","close","volume"]].tail()) api.close()

四、K线数据字段说明

TqSdk返回的K线数据是一个pandas DataFrame,包含以下字段:

字段说明
datetimeK线起始时间(纳秒时间戳)
open开盘价
high最高价
low最低价
close收盘价
volume成交量
open_oi起始持仓量
close_oi结束持仓量

五、实时更新K线(进阶)

在实际应用中,我们通常需要实时获取K线更新。TqSdk的K线数据会自动更新,我们只需要用 wait_update() 等待数据刷新即可。

5.1 实时打印最新K线

#!/usr/bin/env python# -*- coding: utf-8 -*-""" 功能:实时监控K线数据 说明:程序会持续运行,按Ctrl+C停止 """from tqsdk import TqApi, TqAuth import datetime api = TqApi(auth=TqAuth("你的快期账户","你的密码"))# 获取10秒K线 klines = api.get_kline_serial("SHFE.rb2501", duration_seconds=10)print("开始监控K线,按Ctrl+C停止...")print("-"*70)whileTrue: api.wait_update()# 判断K线收盘价是否变化if api.is_changing(klines.iloc[-1],"close"):# 获取最后一根K线 last_kline = klines.iloc[-1]# 转换时间戳为可读格式 kline_time = datetime.datetime.fromtimestamp(last_kline["datetime"]/1e9)print(f"时间: {kline_time} | 开: {last_kline['open']:.1f} | "f"高: {last_kline['high']:.1f} | 低: {last_kline['low']:.1f} | "f"收: {last_kline['close']:.1f} | 量: {last_kline['volume']}")

5.2 判断新K线生成

当一根新K线开始时,可能需要执行某些操作(如计算指标、发出信号)。可以通过判断K线时间是否变化来检测新K线:

from tqsdk import TqApi, TqAuth import datetime api = TqApi(auth=TqAuth("你的快期账户","你的密码"))# 获取1分钟K线 klines = api.get_kline_serial("SHFE.rb2501", duration_seconds=60)print("监控新K线生成...")whileTrue: api.wait_update()# 判断是否产生新K线(通过datetime字段变化判断)if api.is_changing(klines.iloc[-1],"datetime"): kline_time = datetime.datetime.fromtimestamp(klines.iloc[-1]["datetime"]/1e9)print(f">>> 新K线生成!时间: {kline_time}")# 在这里可以添加你的策略逻辑# 例如:计算均线、判断信号等

六、使用pandas处理K线

TqSdk返回的K线数据是pandas DataFrame,可以直接使用pandas的各种功能:

6.1 计算简单移动平均线

from tqsdk import TqApi, TqAuth api = TqApi(auth=TqAuth("你的快期账户","你的密码")) klines = api.get_kline_serial("SHFE.rb2501", duration_seconds=60, data_length=100)# 等待数据准备好 api.wait_update()# 计算5周期和20周期移动平均线 klines["ma5"]= klines["close"].rolling(5).mean() klines["ma20"]= klines["close"].rolling(20).mean()# 打印最后5行print(klines[["datetime","close","ma5","ma20"]].tail()) api.close()

6.2 计算涨跌幅

# 计算涨跌幅(相对于前一根K线) klines["change"]= klines["close"].pct_change()*100# 打印print(klines[["datetime","close","change"]].tail())

七、获取Tick数据(补充)

除了K线,TqSdk还支持获取Tick级别的数据(逐笔成交):

from tqsdk import TqApi, TqAuth api = TqApi(auth=TqAuth("你的快期账户","你的密码"))# 获取Tick数据 ticks = api.get_tick_serial("SHFE.rb2501")# 等待数据准备好 api.wait_update()print("Tick数据示例:")print(ticks.tail()) api.close()

八、总结

本文介绍了如何使用TqSdk获取期货K线数据,要点回顾:

功能代码
获取K线api.get_kline_serial(合约, 周期, 数量)
等待更新api.wait_update()
判断变化api.is_changing(klines.iloc[-1], "字段名")
获取Tickapi.get_tick_serial(合约)

K线周期参数(duration_seconds):

  • 1分钟 = 60
  • 5分钟 = 300
  • 日线 = 86400

TqSdk的数据全部存储在内存中,访问速度快,而且会自动更新,非常适合开发量化交易策略。


免责声明:本文仅供学习交流使用,不构成任何投资建议。期货交易有风险,入市需谨慎。

更多资源

  • 天勤量化官网:https://www.shinnytech.com
  • GitHub开源地址:https://github.com/shinnytech/tqsdk-python
  • 官方文档:https://doc.shinnytech.com/tqsdk/latest

Read more

安装 启动 使用 Neo4j的超详细教程

安装 启动 使用 Neo4j的超详细教程

最近在做一个基于知识图谱的智能生成项目。需要用到Neo4j图数据库。写这篇文章记录一下Neo4j的安装及其使用。 一.Neo4j的安装 1.首先安装JDK,配环境变量。(参照网上教程,很多) Neo4j是基于Java的图形数据库,运行Neo4j需要启动JVM进程,因此必须安装JAVA SE的JDK。从Oracle官方网站下载 Java SE JDK。我使用的版本是JDK1.8 2.官网上安装neo4j。 官方网址:https://neo4j.com/deployment-center/  在官网上下载对应版本。Neo4j应用程序有如下主要的目录结构: bin目录:用于存储Neo4j的可执行程序; conf目录:用于控制Neo4j启动的配置文件; data目录:用于存储核心数据库文件; plugins目录:用于存储Neo4j的插件; 3.配置环境变量 创建主目录环境变量NEO4J_HOME,并把主目录设置为变量值。复制具体的neo4j文件地址作为变量值。 配置文档存储在conf目录下,Neo4j通过配置文件neo4j.conf控制服务器的工作。默认情况下,不需

企业微信群机器人Webhook配置全攻略:从创建到发送消息的完整流程

企业微信群机器人Webhook配置全攻略:从创建到发送消息的完整流程 在数字化办公日益普及的今天,企业微信作为国内领先的企业级通讯工具,其群机器人功能为团队协作带来了极大的便利。本文将手把手教你如何从零开始配置企业微信群机器人Webhook,实现自动化消息推送,提升团队沟通效率。 1. 准备工作与环境配置 在开始创建机器人之前,需要确保满足以下基本条件: * 企业微信账号:拥有有效的企业微信管理员或成员账号 * 群聊条件:至少包含3名成员的群聊(这是创建机器人的最低人数要求) * 网络环境:能够正常访问企业微信服务器 提示:如果是企业管理员,建议先在"企业微信管理后台"确认机器人功能是否已对企业开放。某些企业可能出于安全考虑会限制此功能。 2. 创建群机器人 2.1 添加机器人到群聊 1. 打开企业微信客户端,进入目标群聊 2. 点击右上角的群菜单按钮(通常显示为"..."或"⋮") 3. 选择"添加群机器人"选项 4.

Flowise物联网融合:与智能家居设备联动的应用设想

Flowise物联网融合:与智能家居设备联动的应用设想 1. Flowise:让AI工作流变得像搭积木一样简单 Flowise 是一个真正把“AI平民化”落地的工具。它不像传统开发那样需要写几十行 LangChain 代码、配置向量库、调试提示词模板,而是把所有这些能力打包成一个个可拖拽的节点——就像小时候玩乐高,你不需要懂塑料怎么合成,只要知道哪块该拼在哪,就能搭出一座城堡。 它诞生于2023年,短短一年就收获了45.6k GitHub Stars,MIT协议开源,意味着你可以放心把它用在公司内部系统里,甚至嵌入到客户交付的产品中,完全不用担心授权问题。最打动人的不是它的技术多炫酷,而是它真的“不挑人”:产品经理能搭出知识库问答机器人,运营同学能配出自动抓取竞品文案的Agent,连刚学Python两周的实习生,也能在5分钟内跑通一个本地大模型的RAG流程。 它的核心逻辑很朴素:把LangChain里那些抽象概念——比如LLM调用、文档切分、向量检索、工具调用——变成画布上看得见、摸得着的方块。你拖一个“Ollama LLM”节点,再拖一个“Chroma Vector

OpenClaw配置Bot接入飞书机器人+Kimi2.5

OpenClaw配置Bot接入飞书机器人+Kimi2.5

上一篇文章写了Ubuntu_24.04下安装OpenClaw的过程,这篇文档记录一下接入飞书机器+Kimi2.5。 准备工作 飞书 创建飞书机器人 访问飞书开放平台:https://open.feishu.cn/app,点击创建应用: 填写应用名称和描述后就直接创建: 复制App ID 和 App Secret 创建成功后,在“凭证与基础信息”中找到 App ID 和 App Secret,把这2个信息复制记录下来,后面需要配置到openclaw中 配置权限 点击【权限管理】→【开通权限】 或使用【批量导入/导出权限】,选择导入,输入以下内容,如下图 点击【下一步,确认新增权限】即可开通所需要的权限。 配置事件与回调 说明:这一步的配置需要先讲AppId和AppSecret配置到openclaw成功之后再设置订阅方式,