get_kline_serial 用法:K 线序列长度、末尾行与新 bar 判定
前言分钟线、小时线策略里指标几乎都挂在get_kline_serial返回的序列上。我常见三类报错长度不够就访问iloc[-20]、把未收盘的close当成定稿信号、以及同一根 K 线里重复下单。下面按天勤量化里的订阅方式、长度防护和与is_changing的配合写一套可直接套用的习惯。一、订阅与周期选择fromtqsdkimportTqApi,TqAuth,TqSim apiTqApi(TqSim(),authTqAuth(账户,密码))symbolSHFE.rb2510# duration_secondsK 线周期秒如 601 分钟36001 小时klineapi.get_kline_serial(symbol,60,data_length200)要点每个合约、每个周期只需调用一次get_kline_serial不要在循环里反复创建。data_length控制保留的 K 线根数应大于策略所需最大窗口如均线 60 则至少留 80100 根余量。周期用秒表示日线常用 86400 秒需落在文档允许范围内。二、返回序列是什么返回值是pandas DataFrame常用列包括datetime、open、high、low、close、volume等。策略里绝大多数信号应基于已对齐长度的列计算而不是在循环外缓存某一行的close后长期不更新。当前正在形成的 K 线对应最后一行kline.iloc[-1]其close、volume会随行情推送不断更新只有datetime进入下一根时才表示新 bar 开始需配合is_changing判断。三、长度与 NaN 防护need60# 指标所需最大窗口whileTrue:api.wait_update()ifnotapi.is_changing(kline.iloc[-1],datetime):continueiflen(kline)need:continuemakline.close.iloc[-20:].mean()ifma!ma:# NaNcontinue# 信号逻辑冷启动阶段len(kline)不足或指标列为 NaN 时应continue而不是强行发单。实盘从小窗口启动时这段防护比回测更容易被忽略。四、新 bar 判定与重复触发若策略规定「只在 K 线收盘发信号」应使用ifapi.is_changing(kline.iloc[-1],datetime):bar_dtkline.iloc[-1][datetime]# 本帧 datetime 相对上一帧变化通常表示进入新 bar同一根 bar 内close多次变化会触发is_changing(kline.iloc[-1])但不触发对datetime的字段过滤用字段过滤可避免一根 K 线内重复下单。也可维护last_bar_dt与当前datetime相同则跳过作为双保险。五、与 get_quote 的分工用途建议数据源均线、突破、波动率等 bar 指标get_kline_serial下单价格、滑点、涨跌停检查get_quote盘中止损tick 级get_quote或 tick 序列信号在 K 线收盘产生、执行用最新盘口时回测与实盘都要为信号价与成交价差异留出滑点假设不能默认相等。六、多合约与对齐传入合约列表时可得到按规则对齐的 K 线如价差策略。此时应确认每一列对应哪条腿避免读错close列。多品种策略对每个symbol各维护一条kline引用在wait_update后分别判断is_changing。七、常见现象对照现象可能原因指标一直 NaN长度不足或刚订阅首包未齐信号比图表慢一根用了上一根 bar 的索引一根 K 线多次开仓未过滤datetime仅判断了close变化回测与实盘信号不一致订阅周期或data_length不一致总结get_kline_serial解决的是 bar 级历史与实时更新。订阅一次、留够data_length、在wait_update后用is_changing(..., datetime)控制触发面再配合长度与 NaN 检查K 线策略的主干就稳了。FAQ1data_length 是不是越大越好过大占内存且拖慢更新按「最大指标窗口 余量」取即可。2能否在循环里改 duration_seconds应销毁旧逻辑并重新get_kline_serial更简单是固定周期换周期用新脚本。3最后一行算不算「已收盘」未收盘前最后一行仍在变若策略要收盘定稿需明确用 datetime 切换点或下一根 bar 开盘再交易。4K 线和主连合约怎么选研究可用主连执行腿建议用可交易月份并与get_quote一致。5和 tafunc 指标库怎么配合先保证len(kline)满足指标窗口再调用库函数库返回序列末尾同样可能有 NaN。风险提示本文用于期货量化技术实践讨论不构成投资建议。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2626799.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!