Skip to content

Releases: fasiondog/hikyuu

2.8.2

Choose a tag to compare

@fasiondog fasiondog released this 20 Aug 11:41

🚀 新增特性

  • 新增指标:RSRS_BETA、RSRS_BULL、ADX、ADX2
  • feat(indicator): 添加origin-id用于缓存身份标识,提升指标计算缓存准确性
  • feat(draw): 更新热力图和柱状图标题以包含交易对象名称

⚡️ 优化改进

  • perf(factor): MF因子服用以进一步提升多因子系统计算性能

🐞 缺陷修复

  • fix(signal): 修复SignalBase::clone错误复制m_cycle_end导致周期边界损坏
  • fix(allocatefunds): 修复adjust_running_sys=false时running占用权重误用总账户资产
  • fix(indicator): 修复SPEARMAN(n=0)默认参数不产出有效结果
  • fix(multifactor): 使分数排序确定性,避免结果不一致
  • fix(multifactor): 导出calculate_style_residuals符号,修复链接问题
  • fix(multifactor): 使延迟计算线程安全,支持并发场景
  • fix(indicator): 在FACTOR身份标识中包含ktype,确保缓存准确性

2.8.1

Choose a tag to compare

@fasiondog fasiondog released this 09 Jul 18:25
dd07133

🚀 新增特性

  • feat(strategy): 添加获取当日指定时间点价格的功能及其Python绑定
  • feat(extind): 添加时间采样聚合指标 AGG_SAMPLE、AGG_SAMPLE_MAX、AGG_SAMPLE_MIN、AGG_SAMPLE_MEAN 及其文档和测试
  • feat(tm_performance): 添加当前距历史最高点回撤百分比计算
  • feat(indicator): 添加 MDD_CURRENT 指标及其文档和测试
  • feat(indicator): 更新SLOPE指标以计算斜率、拟合优度R²和相对最大残差
  • feat(indicator): 添加FITR2指标以计算线性回归拟合优度R²
  • feat(matplotlib_draw): 添加对数坐标选项到系统绩效绘图函数, 年度收益率柱状图绘制功能及年月收益热力图添加年收益显示,增加热力图函数参数以显示月度最高和最低收益
  • feat(FACTOR): 添加因子名称参数支持,提供便捷版本的因子指标转换
  • feat(FactorSet): 更新构造函数以支持更多参数,添加使用因子列表创建因子集合的构造函数
  • feat(Factor): 添加has_factor函数和is_null方法以检查因子是否存在或为空
  • feat(WildcardMatch): 重构通配符匹配函数,支持UTF-8编码并优化匹配逻辑
  • feat(ITsRank): 添加增量计算支持及相关测试用例
  • feat(gui): 根据平台调整默认字体大小以改善用户体验
  • feat(ETF交易成本): 添加ETF交易成本算法及相关接口
  • feat(BaseInfoDriver): 补充Python绑定缺失的 DataDriverFactory.regKDataDriver 方法

⚡️ 优化改进

  • refactor(IMdd/IMrr): 将方案4(O(N*n)暴力)替换为SWAG(O(N)双栈摊还)算法
  • refactor(ALIGN): 修正函数声明格式,移除多余括号
  • refactor(TS_RANK): 简化函数声明,移除不必要的增量计算支持测试
  • refactor: 移除FIXED_START_INDEX和FIXED_START_DATE函数中的factor_name参数以简化接口
  • Factor内部存储管理与计算优化

🐞 缺陷修复

  • fix(trade): 导出TradeManager中 getParam 方法改名为 get_param,和文档保持一致
  • fix(parameter): 添加int64_t类型的get方法以支持64位整数的获取(之前会导致dataserver异常)
  • fix(draw): 修复 tm_heatmap 和 tm_year_profit 函数的结束日期逻辑
  • fix(strategy): 修复获取指定时间点价格时的时间限制逻辑
  • fix(extind): 调整 AGG_SAMPLE 系列函数参数顺序以保持一致性
  • fix(ISumBars): 修复 _dyn_calculate 返回值符号与静态版相反
  • fix(Indicator): 修复 operator() alike 短路返回未计算空壳导致 size=0
  • fix(IMa): n<=0 分支分母用 valid_count 而非物理跨度
  • fix(IStdev): _dyn 加窗口未满 guard,消除与静态 discard 不一致
  • fix(indicator): MA/STDEV NaN 语义统一为 Welford valid mean/std
  • fix(indicator): 在 clone 方法中添加 m_old_context 成员的复制
  • fix(indicator): ISpearman tie-handling 用 Pearson-on-ranks 替换简化公式
  • fix(multifactor): 行业中性化用组内去均值替代整数编码单变量回归,修复 ALIGN 改名导致路由静默失效
  • fix(multifactor): 修复风格因子中性化的数据竞争与数学错误
  • fix(multifactor): 恢复 Eigen 线程数以优化性能
  • fix(IMdd/IMrr): 修复增量计算 look-ahead bias (未来数据污染)
  • fix(ADVANCE/DECLINE): 修复 NaN truthy + 增量脏读双累加
  • fix(IDecline): 修复增量计算运算符反向,对齐 ADVANCE 防护
  • fix(Block): 优化相等比较逻辑,通过排序比较股票市场代码
  • fix(StockManager): 更新数据加载提示信息,明确为预加载数据
  • fix(Strategy): 添加对特殊卖出条件的处理,确保在num为-MAX_DOUBLE时执行卖出操作
  • fix(backtest): 优化回测模式 0 下的结束日期处理, mode 0 时最后一天的买入卖出处理优化
  • 修正 getBlockListByIndexStock 函数中的条件判断逻辑
  • 修正 get_belong_to_block_list 得不到板块的问题

2.8.0

Choose a tag to compare

@fasiondog fasiondog released this 10 Jun 14:28
bc261d0

🚀 新增特性

  • feat(HikyuuTdx): 补充 689 科创板号段
  • feat(indicator): 新增指标 BETA、KURT(超额峰度)、SKEW(总体偏度)、COV(样本协方差)
  • feat(indicator): 新增指标 TS_RANK(计算时间序列排名比例)、SIGNED_POWER(带符号乘幂运算)
  • feat(indicator): 更新 DIFF 函数以支持自定义差分周期n
  • feat(indicator): 新增固定起始日期指标 FIXED_START_DATE、固定起始索引指标 FIXED_START_INDEX
  • feat(regression): 添加多元线性回归及其完整版本的实现
  • feat(Factor): 添加保存因子时的更新选项,允许在保存前检查并更新已有因子
  • feat(Block): 添加从证券列表和证券代码列表创建临时板块的构造函数
  • feat(block): 增加内置 ETF 板块 blocketf Block("ETF", "ALL")
  • feat(stock_manager): 添加wait_data_ready方法,等待预加载数据完成

⚡️ 优化改进

  • performance: windows 下切换至 clang-cl 编译,windows下综合性能提升10%~20%
  • feat(Indicator): RANK增加模式4,5(直接返回0~1表示百分位比)
  • feat(parameter): Parameter添加对 Datetime 类型的支持,int内部使用int64_t统一保存
  • feat(stock): python中预定义的内部板块移至C++内部,以便C++中亦可直接获取
  • feat(factor)优化: 因子值加载和保存时,自动尝试绑定的板块信息
  • feat(factor): 增强因子名称验证,确保因子名称符合规范并支持 UTF-8 处理
  • feat(multifactor): 改进 MF 获取因子 IC 警告信息提示
  • feat(build): 添加编译选项本地最大向量化支持

🐞 缺陷修复

  • fix(IBarsLasts): 优化参数验证逻辑,确保 n <= 0 时返回全 NaN 序列
  • fix(Indicator): INDEXC 等公式在 kdata 有停牌缺少日期的时候出错的问题
  • fix(HikyuuTdx): 修复 TDX 本地日线导入 ETF/B股/LOF/REIT 等品种价格精度10倍偏差
  • fix(factor): python接口添加恢复类型参数到因子构造函数
  • fix(data import): 调整导入策略,移除非日线时对成交量和成交额为0的过滤
  • fix(indicator): 修复双输入指标计算 prepare 方法中的上下文获取逻辑
  • fix(multifactor): 修正获取 IC 时对 "save_all_factors" 参数的检查逻辑
  • fix(build): 修正查找系统 python 如果没有 python 只有 python3 的问题
  • fix(build): 修复 openssl3 依赖配置,避免在 macosx 平台上使用共享库

2.7.9

Choose a tag to compare

@fasiondog fasiondog released this 23 May 09:20
0aa8e2f

🚀 新增特性

  • feat(indicator): 新增 FACTOR 指标,支持将 Factor 对象转换为 Indicator,使其可以在指标系统中使用
  • feat(indicator): 新增 ADJ_FACTOR 复权因子指标,基于股票权息数据计算后复权因子序列
  • feat(indicator): 新增 ADJ_OPEN/ADJ_HIGH/ADJ_LOW/ADJ_CLOSE/ADJ_VOL 复权价格和成交量指标
  • feat(KQuery): 添加ktype到秒数转换功能

⚡️ 优化改进

  • feat(factor): 改善因子值存储,直接使用 Float64。注意:无法自动升级。

🐞 缺陷修复

  • fix(indicator): 修复 FINANCE 指标中季报和年报在同一天发布可能冲突的问题
  • fix(KData): 复权移除不必要的四舍五入,分钟级别除权日前一日最后一分钟后向复权计算错误
  • fix(trade_sys): 修复MultiFactorBase中变量名拼写错误
  • fix(trade_sys): 修复多因子系统中特殊标准化功能的因子名称匹配问题
  • fix(factor): update_all_factors_values 增加数据一致性检查

2.7.8

Choose a tag to compare

@fasiondog fasiondog released this 18 Apr 07:26
6f35d0c

🚀 新增特性

  • feat(indicator): 新增STKTYPE股票类型指标,支持获取股票类型信息
  • feat(indicator): 新增CODELIKE和NAMELIKE通配符匹配函数,支持股票代码和名称的模式匹配
  • feat(indicator): 添加BARSLASTS指标, 支持动态参数
  • feat(indicator): 添加指标的一元正负运算符支持(如 -MA(CLOSE(), 20))
  • feat(factor): 添加基于指标映射表的FactorSet构造函数,支持更灵活的因子创建方式
  • feat(factor): 添加因子重名处理逻辑,避免因子命名冲突
  • feat(trade_manage): 新增getPositionExtInfoDict方法,获取扩展持仓详情字典
  • feat(trade_manage): 添加持仓记录的买卖次数统计功能
  • feat(trade_manage): 增加买卖次数统计到CSV导出功能
  • feat(trade_manager): 添加按股票获取扩展持仓详情功能
  • feat(strategy): 为Strategy类添加动态属性支持,允许在Python中动态添加属性到Strategy实例
  • feat(strategy): 调整订单数量处理逻辑以符合最小交易单位要求
  • feat(strategy): 完善策略类文档并添加获取当前价格功能
  • feat(StockManager): 异步加载插件以提升初始化性能
  • feat(StockManager): 添加带策略上下文参数的重新加载功能
  • feat(data): 强化数据去重功能并优化代码格式
  • feat(data): 过滤无实际交易数据提升数据质量
  • feat(data): 优化pytdx数据导入时的成交额和成交量验证逻辑
  • feat(Log): 添加C++20标准支持优化断言宏性能

⚡️ 优化改进

  • refactor(thread): 修改并行算法模板函数参数为右值引用,提升性能
  • refactor(thread): 调整全局任务组实现细节
  • refactor(thread): 优化线程池submit函数参数传递

🐞 缺陷修复

  • fix(trade_sys): 修复多因子系统中参考股票为空时的异常处理
  • fix(indicator): 修复涨跌停判断中的精度问题
  • fix(indicator): 解决IIsLimitDown和IIsLimitUp指标中缺少StockTypeInfo头文件的问题
  • fix(strategy): 修正Strategy.order_value方法的参数名,将"price"更正为"value"
  • fix(sysinfo): 修复许可证过期提醒逻辑
  • fixed: macOS Xcode升级后编译错误及告警处理

2.7.7

Choose a tag to compare

@fasiondog fasiondog released this 04 Mar 18:18
066c83c

🚀 新增特性

  • feat(factor): 新增完整的因子管理系统,支持因子的创建、存储、查询和批量计算
    • 添加 Factor 类支持因子值存储、复权类型配置和序列化
    • 添加 FactorSet 类支持批量管理多个因子,支持索引操作符和迭代器
    • 支持获取单个证券或批量证券的因子计算结果
    • 支持删除因子值数据功能
    • 支持因子公式检查和 align_dates 日期对齐参数
    • 支持特殊因子值保存
    • 支持 Block 属性进行因子匹配验证
    • 支持 FactorSet 作为多因子合成函数的输入参数
  • feat(indicator): 新增涨跌停判断指标ISLIMITUP/ISLIMITDOWN支持
  • feat(indicator): 重构 MDD/MRR指标实现,添加时间窗口参数支持和增量计算测试
  • feat(trade_manage): 新增 getPositionDict 方法用于获取当前全部持仓记录字典
  • feat(core): 添加许可证过期提醒功能
  • feat(plugin): 添加 AGG_VWAP 指标的 KData 重载版本
  • feat(hikyuu): 添加基于策略上下文的初始化函数
  • 发布版本支持 python 3.14

⚡️ 优化改进

  • refactor(hikyuu/utilities/thread): 优化并行计算
  • feat(misc): 添加批量获取账户资金和性能数据的功能
  • feat(stock): StockManager 添加互斥锁防止初始化冲突,支持加载扩展指标插件
  • feat(agent): 添加多线程控制的互斥锁防止代理启停冲突

🐞 缺陷修复

  • fix(trade_sys): crtST和现有接口不符无法使用
  • fix(factor): 修复 MultiFactorBase 克隆和序列化中缺失 m_norm 的问题
  • feat(HikyuuTdx): 优化板块信息下载,添加超时处理,防止卡死

2.7.5

Choose a tag to compare

@fasiondog fasiondog released this 02 Feb 08:03
c4ac485

🚀 新增特性

  • feat(indicator): 支持增量计算。如新增 extend 方法,在当前已计算基础上,自动扩展只最新数据并只计算最新数据。主要用于实盘、监控等场景加速。
  • 复权增加成交量、成交金额复权
  • macosx 下序列化支持
  • feat(trade_sys): SE_MFxx 添加多因子选择器的复权方式配置参数(mf_recover_type), 指定MF使用特定的复权方式进行计算
  • feat(KData): KData增加 getKData 方法,部分情况下可加速获取

⚡️ 优化改进

  • 优化 MF 内存占用过多的问题
  • 优化 windows 下数据量超过一定范围后并行计算性能可能出现的剧烈下降
  • 优化matplotlib交互模式参数设置问题, 当不在交互式会话中时,显式设置interactive参数为False,防止绘图过慢
  • 优化IC实现,使其可以作为普通指标公式使用
  • 优化全局并行计算任务

🐞 缺陷修复

  • fixed 使用更安全的方式处理python临时对象类型降级问题,防止某些情况崩溃
  • fix(hikyuutdx): 初次使用下载时,板块信息下载报错
  • fixed(data): 调整科创板/北交所最小交易量配置为 100
  • fix(trade_sys): 卖出时通过MM判断卖出数量, 以便分钟级别回测时可以通过MM进行T+1控制
  • fix(allocatefunds): 修正资金分配权重计算逻辑, 确保实际分配的权重不超过可分配权重上限,避免超出预设的资金分配限制,提高资金分配的准确性和安全性
  • fixed MF_ICWeight, MF_ICIRWeight 使用标准化后的原始因子进行IC/ICIR权重计算
  • fix(trade_sys): 修复MultiFactorSelector指标设置后未重置计算状态的问题
  • fixed(importdata): 更新后出现KeyError: 'lazy_preload' error
  • fix(gui): start_qmt 用Query.get_base_ktype_list()替换Query.get_all_ktype()
  • fix(KQuery): 修正TRANS类型的时间转换参数,将g_ktype2sec映射中TRANS类型的值从60243(表示3天)改为3,以确保时间转换逻辑的正确性。
  • fix(draw): 优化matplotlib中指标绘制,以便不同周期范围指标能够正确绘制

2.7.3

Choose a tag to compare

@fasiondog fasiondog released this 06 Jan 07:10
b0f8c8f

新增特性

  • feat(config): 添加 timeline 和 trans 预加载支持
  • feat(StockManager): 添加根据指数获取板块列表功能
  • feat(plugin_extind): 添加AGG_VWAP指标支持

🐞 缺陷修复

  • fixed(datetime): 优化UTC偏移量计算性能,该问题导致 linux 平台下 clickhouse 数据加载比其他平台慢了10倍
  • fixed(python): Python实现的SG等子类在赋值给C++类时可能存在临时变量类型降级的问题,导致 sys.sg = B() 缺失python _clone 实现
  • fix(data): 修复本地数据导入时的可能存在结构体解包格式错误
  • fix(trade_sys): 修复安全止损指标ST_Saftyloss在调用SAFTYLOSS函数时缺少CLOSE()参数
  • feat(_Stock): 为set_kdata_from_df方法添加默认列参数(原和文档说明不符),设置默认的列名参数为["datetime", "open", "high", "low", "close", "amount", "volume"]

2.7.2

Choose a tag to compare

@fasiondog fasiondog released this 24 Dec 16:51

🚀 新增特性

  • 新增 AF_FixedAmount 等金额资产分配,对选中的资产进行等金额分配
  • 添加 lazy_preload 配置选项,预加载日线以下数据时,支持懒加载模式
  • 支持无限制预加载K线数据, 当 preload_max_num 设置为小于等于 0 时,表示不对预加载的 K 线数量做限制。

⚡️ 优化改进

  • 调整ETF最小交易量默认配置为100
  • feat(trade): 支持缩扩股业务处理
  • feat(HikyuuTdx): 导入股票交易和时间数据时过滤价格为零的记录
  • feat(HikyuuTdx): 改进股票数据导入逻辑并增强错误处理
  • feat(hikyuu_cpp): 调整对 reload_time 配置的解析和验证,只有当配置正确时才启用自动重载功能
  • 优化预加载加载取消逻辑,避免无效操作
  • 优化调整全局变量初始化与清理顺序
  • 线程池及 PluginManager 优化

🐞 缺陷修复

  • fix(indicator): 优化指标克隆与序列化缓冲区处理, 防止内存泄漏
  • fix(trade_sys): crtSG 函数中遗漏将创建的信号指示器对象引入全局的功能
  • fix(data): 修复导入股票数据时交易量比较的错误日志输出,py311不支持f-str双引号嵌套
  • fix(trade_manage): 增加对缩股的处理逻辑
  • fix(mysql): 调整K线数据金额字段精度, KRecord 中的amount保持为万元(原为千元, 和其他存储引擎不一致)
  • fix(hikyuu_cpp): 调整ETF、基金和B股的分时数据价格精度
  • fix(draw): 解决matplotlib绘制指标时内部缺值或异常时无法绘图的问题
  • fix(StrategyContext): 修复 K 线类型去重逻辑中的大小写问题,以便不区分大小写

2.7.1

Choose a tag to compare

@fasiondog fasiondog released this 01 Dec 04:39

🚀 新增特性

  • 增加数据重载时间配置项, 新增 reload_time 配置项,用于指定每日数据重新加载的时间(格式为 HH:MM),默认值为 "00:00。需手工更改或 hikyuu.ini 或在 load 参数中指定
  • 添加crtSCFilter函数用于快速创建评分过滤器实例
  • 新增 crtNorm 函数用于快速创建标准化/归一化等算法函数
  • 取消行业板块数据下载

🐞 缺陷修复

  • fixed: 修正 clickhouse 存储 K 线数据中 amount 字段的单位转换问题
  • fixed: 限制日期范围以适配 ClickHouse DateTime 类型
  • fixed: 修改Stock_Number结构体中的number类型为double,windows下容易出现精度错误
  • fixed: 更新盈利目标策略接口参数说明与实现逻辑,移除了部分子类中冗余的 _calculate 空实现
  • fixed: HikyuuTdx 在导入股票数据时,增加对低价股低点差异的绝对值判断,避免因价格过低导致的相对误差误判。