当前位置: 首页 > news >正文

期货量化历史 K 线区间与实时串:get_kline_data_series 和 serial 分工

前言

用天勤 TqSdk 写国内期货量化策略时,K 线数据有两个典型用法:一是启动或研究阶段,要拉去年一整年螺纹钢 5 分钟线,估算均线周期、做参数扫描;二是实盘主循环里,每来一根新 bar 用已收盘 K 线(常取iloc[-2])算双均线金叉死叉,再TargetPosTask调仓。有人用get_kline_serialdata_length设得巨大扛历史,有人又在while True: wait_update()里每分钟调区间接口,结果内存爆、流量超限、或历史末 bar 和实时首 bar 接不上。

天勤把两件事拆成两个 API:get_kline_serial管随wait_update更新的滚动序列;get_kline_data_series管指定起止日期的静态 DataFrame(专业版)。下面说明边界、衔接方式与常见误用。

一、两个接口各自是什么

接口返回类型是否随 wait_update 更新典型用途
get_kline_serial(symbol, duration_seconds, data_length=...)类 DataFrame 的 K 线表盘中信号、指标计算
get_kline_data_series(symbol, duration_seconds, start_dt, end_dt)pandas DataFrame否,一次性历史研究、冷启动填充

get_kline_data_series文档写明:返回对象不会更新,不建议在循环内调用;且仅限专业版用户(以官网购买说明为准)。get_kline_serial则绑定在TqApi生命周期内,每次wait_update()后表尾可能追加或更新。

二、get_kline_serial 的使用要点

klines=api.get_kline_serial("SHFE.rb2510",60*5,data_length=800)
  • duration_seconds:周期秒数,5 分钟为 300。
  • data_length:向服务器要的根数缓冲,不是均线周期;估法见 data_length 专题。
  • 新 bar 判定:对klines.iloc[-1]["datetime"][-2]配合is_changing(klines.iloc[-1], "datetime")
  • 指标应对已收盘 bar 用iloc[-2],避免信号闪烁。

三、get_kline_data_series 的使用要点

fromdatetimeimportdate df=api.get_kline_data_series("SHFE.rb2510",60*5,date(2024,1,1),date(2024,12,31),)
  • start_dt/end_dt可为date(交易日)或带时区的datetime
  • 返回列含datetimeopenhighlowclosevolumeopen_oiclose_oi等。
  • 适合离线算参数、画长期曲线、检验样本外;算完应落盘,不必常驻内存。

四、历史与实时如何衔接

推荐模式:

  1. 研究阶段:用get_kline_data_seriesDataDownloader拉全历史,本地 parquet/csv 存盘。
  2. 实盘启动:
    • 若已有本地历史,直接读文件预热指标状态;或
    • get_kline_serial订足够长的data_length预热。
  3. 盘中只维护get_kline_serial一张表,不再调get_kline_data_series

切忌在while True: api.wait_update()里每圈调get_kline_data_series,既浪费流量,又拿不到更新。

衔接检查:对比历史末行datetimeserial倒数第二根datetime是否连续;若有缺口,补下载或增大data_length重新订阅。

五、与回测环境的关系

TqBacktestget_kline_serial按回测时钟推进;get_kline_data_series在回测中的行为以你本地版本文档为准,研究链路更常直接用回测内置数据。保持「回测用一套加载、实盘用 serial」的环境分离,可减少上线时字段不一致。

六、内存与流量粗算

data_length=800的 5 分钟线,单合约内存占用通常可接受;若 50 个品种各 8000 根,DataFrame 会明显吃内存。研究阶段用get_kline_data_series拉完落盘释放;实盘只保留交易品种 serial。专业版区间拉取按流量计费时,避免在循环里重复拉同一段历史。

七、冷启动三种模式对比

模式做法优点缺点
A 大 data_lengthserial 一次要够长简单占带宽
B 本地文件预热DataDownloader 落盘可控要维护文件
C data_series 一次性专业版区间精确权限/费用

上线推荐 B+A:夜间 downloader 更新,盘前 serial 订 500~1000 根衔接。

八、常见衔接 bug

历史末 bar 的close与 serial 第一根open跳空:可能是换月或数据源拼接;不要用历史文件最后一个 close 直接当 serial 指标初值,应在 serial 预热满data_length后再交易。多合约对齐时,各 serial 的datetime可能差几秒,信号应各算各的,不要强行 merge 成一张宽表除非策略需要。

总结

天勤把「拉一段固定历史」和「维护一根实时 K 线序列」分成get_kline_data_seriesget_kline_serial:前者静态、适合研究落盘;后者动态、适合wait_update主循环。专业版才能用区间接口,免费场景可依赖data_length预热或DataDownloader。程序上做到启动预热一次、盘中只更新 serial,历史与实盘信号才能在同一套指标代码下对齐,也避免在循环里误用不更新的 DataFrame 导致信号僵死。

FAQ

1)没有专业版怎么办?

加大get_kline_serialdata_length,或用DataDownloader夜间批量拉历史到本地。

2)多合约每个都要 serial 吗?

交易合约必须订;纯研究合约可离线文件,不占实时订阅。

3)datetime 是纳秒吗?

K 线表datetime为纳秒时间戳,与quote.datetime一致,比较时注意单位。

4)主连 KQ.m@ 能用 data_series 吗?

可以传主连代码,但实盘下单仍要映射到具体月份,别混用。


本文基于天勤 TqSdk 公开 API 整理,不构成投资建议。

http://www.jsqmd.com/news/991908/

相关文章:

  • 终极视频字幕提取指南:87种语言本地化OCR解决方案
  • relation-graph实战:如何将后端API返回的扁平数据动态渲染成公司组织架构图?
  • 告别刮痧!手把手教你给《饥荒》Mod添加炫酷伤害数字(附完整Lua源码)
  • Delphi 10.2 Android摄像头实时预览+拍照源码工程(含FMX界面与权限配置)
  • 红米Note 3高通版LineageOS 16刷机整合包:含TWRP恢复、OpenGApps及完整烧录文件
  • STM32F407HAL库模拟SPI驱动1.8寸TFT(ST7735)屏幕:从零移植到性能优化实战
  • 二级域名自动分发+易支付PHP对接源码,含伪静态规则与部署指南
  • GitHub Trending 今日 Top 5 解读:AI Agent、RAG、计算机视觉与 Markdown 知识库正在同时升温
  • 5分钟免费解锁学术论文:Unpaywall浏览器扩展终极指南
  • DLSS Swapper终极指南:3步轻松管理游戏DLSS版本,免费提升显卡性能
  • 依赖和循环流水线化
  • 【大模型面经】大模型面试全攻略:月薪30K+AI岗必备
  • C语言Modbus通信开发包:RTU串口+TCP网口双模服务端与客户端可运行示例
  • 数据库启动报错:42501: 无法打开共享内存段 “/PostgreSQL.******“: 权限不够
  • MRIcroGL医学影像可视化:5大核心功能解析与高效应用指南
  • 终极指南:如何解决ModOrganizer2游戏兼容性问题
  • 告别通宵调格式,Paperxie 智能排版 2 小时极速修订适配多平台规范
  • ECharts饼图数据项太多?试试用渐变色区分系列,提升可读性(附避坑指南)
  • MATLAB实操包:LMS和RLS自适应滤波算法收敛过程动态对比(含多步长/变步长/噪声场景)
  • 手把手教你用PyTorch复现LSTM+CRF论文代码(附CoNLL2003数据集实战)
  • 从Python到C语言:手把手教你将YOLOv8检测结果喂给STM32(附串口协议设计)
  • 用MAX30102和OLED做个桌面心率血氧仪:STM32项目从硬件连接到数据显示
  • 【无人机三维路径规划】基于RRT算法实现固定翼无人机三维路径规划附matlab代码
  • Springboot 3.5 源码分析-构建与部署全指南:从 Gradle/Maven 插件到 Docker 容器化与云原生部署
  • 阿坝法穆兰+宝玑手表专业回收,26年精选回收店铺排行榜推荐 - 谊识预商贸
  • 用ESP8266和51单片机DIY智能家居:从Proteus仿真到实物搭建全记录(附源码)
  • 用STM32F103和HC-12模块,把旧手机蓝牙遥控器改造成无线快门(附完整代码和PCB)
  • SpringBoot集成AJ-Captcha实战:从RedisTemplate空指针到/captcha/get 400无响应排查全解
  • 下载 | 官方正版 Windows 11 ISO映像 2025 更新 l 版本 25H2(持续更新)
  • 3个简单步骤免费解锁Wand完整专业版:终极游戏修改体验