Hikyuu Quant Framework 基于 C++/Python 的极速量化交易框架,同时可基于策略部件进行资产重用,快速累积策略资产。
更多信息,参见:
2.6.8 版本主要更新
🚀 新增特性
- 新增 get_inds_view 方法,用于指定日期或范围内的系列指标结果并返回 pandas.DataFrame 结果。该方法主要用于获取系列指标结果后,使用其他 python 库,进行进一步数据处理,或日常监控打印。
In [3]: df = get_inds_view(blocka, [CLOSE(), OPEN(), MA(CLOSE()), AMA(CLOSE()), MA(CLOSE(),n=30)], Datetime(20250822))
In [4]: df
Out[4]:
证券代码 证券名称 交易时间 CLOSE OPEN MA AMA MA
0 SH600229 城市传媒 2025-08-22 5.89 7.23 7.087273 7.060143 7.034000
1 SH601121 宝地矿业 2025-08-22 7.21 6.01 2.482273 2.486140 6.544000
2 SH600227 赤天化 2025-08-22 7.97 6.41 6.292273 6.406271 2.462333
3 SH600390 五矿资本 2025-08-22 6.62 2.59 6.585455 6.015825 6.208000
4 SZ000612 焦作万方 2025-08-22 2.56 6.69 6.260000 6.334334 8.710933
... ... ... ... ... ... ... ... ...
3467 SH603255 鼎际得 2025-08-22 32.36 32.39 31.984409 32.237558 31.445567
3468 SH600621 华鑫股份 2025-08-22 17.91 16.80 16.134909 16.596052 15.940933
3469 SH600999 招商证券 2025-08-22 19.32 18.68 18.342727 18.646812 18.188667
3470 SZ002301 齐心集团 2025-08-22 7.32 7.36 7.130000 7.192394 7.109333
3471 SH603369 今世缘 2025-08-22 42.49 42.21 40.229545 41.319146 40.089333
[3472 rows x 8 columns]
- 新增 AGG 系列聚合指标(捐赠用户),如日线使用分钟线聚合结果
#如计算:每日成交金额 / 日内分钟线最大成交金额
ind = AGG_MAX(AMO(), ktype=Query.MIN)/AMO()
s = sm['sz000001']
k = s.get_kdata(Query(-100, ktype=Query.DAY))
result = ind(k)
print(result.to_df()))
- IC 指标增加 strict 参数,strict 模式下为当前时刻的 N 日后收益,非 strict 模式下为当前时刻之前的 N 天收益
- 新增 REFX 指标,增强 REF 指标,可进行左移(未来函数, 勿在回测中使用,通常用于其他数据处理)
- K线添加分时和分笔数据支持, 在 KQuery 中添加 TIMELINE 和 TRANS 两种新 K 线类型,可直接使用指标计算分时和分笔数据
In [28]: s = sm['sz000001']
In [29]: k = s.get_kdata(Query(-100, ktype=Query.TRANS))
In [30]: MA(CLOSE())(k).to_df()
Out[30]:
datetime value0
0 2025-09-04 14:52:08 11.750000
1 2025-09-04 14:52:11 11.750000
2 2025-09-04 14:52:14 11.750000
3 2025-09-04 14:52:17 11.750000
4 2025-09-04 14:52:20 11.750000
.. ... ...
95 2025-09-04 14:56:53 11.730455
96 2025-09-04 14:56:56 11.730909
97 2025-09-04 14:56:59 11.731364
98 2025-09-04 14:57:02 11.732273
99 2025-09-04 15:00:00 11.732727
[100 rows x 2 columns]
- KData新增 get_kdata 方法获取对应时间范围内其他不同 K 线周期数据
- 添加 Indicator 结果集转换为 numpy.array 的新方法 to_array
- StockManager 添加 is_trading_hours 方法判断是否为交易时间段
⚡️ 优化改进
- 改进 python 中 std::share_ptr 引出对象的 clone 操作,提升 windows 下相关并行处理速度
- Indicaotr 优化双指标等特殊指标的表达式去重,提升公式计算性能
- 预加载模式 KData 与 Stock 共享数据、非预加载模式下捐赠用户 KData 使用LRUCache
- CVAL、SLICE、ALIGN 支持处理多结果集指标
- KRecord/KDataImp 使用全局 Null对象
🐞 缺陷修复
- 修复 MySQL/ClickHouse 无法按索引方式获取非预加载数据的错误
- 修复 Indicator 类中 to_numpy 函数的内存泄漏问题
- 修复 ALIGN 当日期超过给定范围时的对齐问题,优化了对齐算法
- 修复非中文环境 Windows 设置终端为中文编码导致的终端崩溃