hikyuu

Hikyuu Quant Framework 基于C++/Python的开源量化交易研究框架

APACHE-2.0 License

Downloads
3.6K
Stars
2K
Committers
12

Bot releases are visible (Hide)

hikyuu - 2.0.4 Latest Release

Published by fasiondog 6 months ago

  1. 缺陷修复

    • fixed ETF 权息缺少扩缩股
    • fixed Portfolio 在非延迟买入、延迟卖出的场景下对账错误
    • fixed matplotlib performance 绘制时,当前收益率显示显示错误
    • fixed requirements.txt 增加tdqm, 缺失可能导致 windows HikyuuTdx 无法直接命令启动
  2. 其他改进

    • Stock 添加获取所属板块列表方法 get_belong_to_block_list
    • 改进 sys_performance,在query日期不在stock的有效日期范围内时,抛出异常
    • matplotlib sysplot 增加 only_draw_close,避免数据量较大时, matploblib 绘制 K 线过慢
    • 改进matplot绘制图形时,x轴坐标显示
    • pf 系统名称加上股票名称
    • 处理nng升级后的编译告警
hikyuu - 2.0.3

Published by fasiondog 6 months ago

  1. 增强 FINANCE,增加 only_year_report 和 dynamic 参数,以便进行市盈率等计算
  2. Indicaotr.plot 绘制时,将 x 轴设置为日期
  3. 增加北交所 92 号段
  4. 增加 BlockIndex 表,支持 Block 获取对应指数
  5. fixed 板块信息导入时,如果网络不好,未获取到当前板块信息时,会把之前的板块信息删除
  6. fixed interactive 中 blockbj 为空
hikyuu - 2.0.2

Published by fasiondog 6 months ago

  1. 新增特性

    • 历史财务信息入库,并增加指标 FINANCE 获取相应历史财务数据
    • 新增 RESULT 指标,以便对存在多个结果集的指标可以通过指标公式的方式获取结果
    • Stock 开放部分属性可在运行时修改,增加 set_krecord_list 方法,可以希望使用其他数据源时生成临时的 Stock 并获取 K 线数据
  2. 缺陷修复

    • fixed 获取节假日信息时出现错误
    • fixed hdf5 在只有日线数据时,运行在 jupyter 中,初始化会出现卡死
    • fixed 新增的北交所股票类型未修改全,导入数据后又变成了 A 股类型
hikyuu - 2.0.1

Published by fasiondog 7 months ago

  1. 新增 TURNOVER (换手率指标)
  2. 新增股票类型 STOCKTYPE_A_BJ (北交所), 修复科创板和北交所股票最小交易量为1
  3. fixed tm 建立日期小于参考日期时 sys_performance 报错
  4. hub 中的 prtflo 更名为 pf, 和内部叫法统一
  5. 调整 MF_MultiFactor getScores 方法命名(原为 getScore ),并调整为在指定日期不存在数据时返回空列表(原为抛出异常)
  6. fixed python 中 TradeRecordList/PositionRecordList 中 to_df 方法失效
  7. hku_catch 中忽略对 KeyboardInterrupt 的捕获,避免 python 中 Ctrl-C 无法终止
  8. crtSL 更名为 crtSP (移滑价差算法),和内部其他叫法统一
  9. fixed 缺失 hku_save / hku_load 函数,导致示例运行失败
  10. fixed crtMM 补充缺失的接口
  11. 更新其他运行失败示例,如 OrderBroker (pybind需要先创建对象再传入方法)
  12. python 中缺失 CAPITAL (流通盘), 原可使用 LIUTONGPAN, 但缺失对 CAPITAL 的同名指定
hikyuu - 2.0.0

Published by fasiondog 7 months ago

  1. 新增特性

    • 新增 MF 多因子组件,用于时间截面对各标的排序评分,重新整理 PF(投资组合)、SE(选股算法)。从投资组合(PF)--截面评分(MF)--选股过滤(SE)--系统策略(SYS)--择时(SG)--资金管理(MM)--止损(ST)/止盈(TP)--盈利目标(PG) 全链条的交易组件化。
    • 新增指标 ZBOND10(10年期国债收益率用于计算夏普比例)、SPEARMAN(秩相关系数)、IC(信息系数)、ICIR(信息比率)
    • 新增复权类指标(EQUAL_FORWARD 等), 方便需要复权数据的指标计算
    • python 中 PF、SYS 增加 performance 方法,直接查看系统绩效
    • 新增 concat_to_df 将多个指标数据合并为 pandas DataFrame,方便其他使用 pandas 的工具包进一步处理
    • 所有系统部件及指标支持参数变更时的动态检查
  2. 其他优化与调整

    • python 中增强系统部件快速创建方法直接支持带有私有属性的 python 继承实例进行 clone,从而在 c++ 中调用
    • ALIGN 指标 增加 “fill_null” 参数,控制对齐填充(填充 nan 值 或使用最近数据进行填充)
    • System reset/clone 改为依据部件共享属性进行实际操作
    • 优化 C++ log 输出到 python 环境的交互
    • StockManager、Block、MF 可以直接通过过滤函数进行过滤获取相关证券
    • python 中改进 CLOSE/OPEN/HIGH/LOW/AMO/VOL,使其在公式中不再必须要括号
    • Indicator 增加 equal/isSame 方法,简化一些测试代码
    • Performance 统计结果按顺序输出
    • 获取仓库组件的 get_part 方法,不用必须指定参数名
    • 优化 TradeManager 获取资金曲线相关方法及其他 python 引入调整
    • 清理 C++ serialization 头文件包含及 cppcheck 静态检查信息
    • MYSQL_OPT_RECONNECT 兼容
    • SpendTimer 改输出到 std::cout ,以便 jupyter 可以捕获输出

SpendTimer 改输出到 std::cout ,以便 jupyter 可以捕获输出

  1. 缺陷修复
    • fixed 建stock.db时候没包括历史退市的股票
    • fixed tdx本地数据导入问题
    • fixed low_precision 下python部分测试用例
    • fixed python 日志目录创建
    • fixed get_trans_list 数据错误
hikyuu - 1.3.5

Published by fasiondog 8 months ago

  1. 整体性能优化

    • 整体性能优化,Indicator 计算速度再次提升 10% ~ 20%
    • 编译支持 low_precision 参数,Indicator 可以使用 float 进行计算,在前述基础上可以再次提升计算速度,尤其是指支持 float neon 的 arm 芯片。(需自行编译)
  2. 功能增强

    • 增加 STOCKTYPE_CRYPTO 数字货币类型,及其相关修改支持
    • 系统有效条件组件 Condition 支持逻辑操作(+,-,*,/,&,|),及支持 _addValid 时附带额外数值(后续版本会在其他系统部件中增加此功能)
    • 增加 EV_bool 系统环境组件,python 中增加 ev.plot 绘制 ev
    • ev 增加线程保护,ev 通常作为公用组件,只计算一次,需要增加线程保护
    • hikyuutdx 导入工具过滤长度非 6 位的证券代码,防止导入速度严重变慢
  3. 缺陷修复

    • fixed 相关系数指标 CORR
    • fixed Indicator 动态优化错误,部分使用 getResult 后再使用的场景执行失败
    • fixed 系统策略组件 clone 操作中未对引用的 Indicator clone,导致崩溃
    • fxied strategy的绑定string list到vector出错的问题,和python TestStrategy中的type
    • fixed python 中 SYS_Simple 中 cn 等函数参数不生效
hikyuu - 1.3.4

Published by fasiondog 9 months ago

  1. fixed windows 下第三方依赖 hikyuu 的 C++ 代码中无法使用 KData
  2. 调整 matplotlib font manager 日志级别
hikyuu - 1.3.3

Published by fasiondog 9 months ago

  1. 配合 hub (策略组件仓库) 使用 C++ 部件更新,参见 <https://gitee.com/fasiondog/hikyuu_hub>_
  2. 尝试获取用户目录下的 hosts.py,方便修改相关 pytdx 服务器设置
  3. 调整log级别宏定义避免windows下冲突
  4. 清理优化 cppcheck 告警提示信息
hikyuu - 1.3.2

Published by fasiondog 10 months ago

  1. 整体调整与优化

    • 整体从 boost.python 切换至 pybind11,以便在 C++ 部分中可以方便的进行 GIL 解锁,并行调用 python 代码
    • 优化权息数据加载速度,尤其是使用 MYSQL 引擎时,缩短初始化加载周期从 6s 至 1s
    • Block信息改为使用 MySQL/SQLite 方式,原有钱龙ini格式支持保留,但需要自行修改配置文件,
      且使用 HikyuuTdx 进行配置时,使用 hdf5 存储时,配置文件会被自动更新为使用 SQLite 方式。
      如果想继续使用钱龙格式,需使用 importdata 进行导入,且需自行调用 tools/update_block_info.py 更新板块信息。
  2. 功能增强

    • 优化行情采集服务支持网络内发送和接收数据
    • 新增技术指标 MDD/MRR 相对历史最高值回撤百分比/相对历史最低值盈利比例
    • 支持版本升级提示
    • 创建默认配置文件,用于没有gui的环境
    • Performance 增加单笔最大盈利/亏损比例统计
    • add CN_Bool 布尔信号指标系统有效条件
    • 增强Condiciton, 增加get_datetime_list, get_valuse方法
    • hikyuutdx未选择数据时添加提示
    • add Performance.to_df in python
    • Datetime 增加 ticks 方法,获取距最小日期过去的微秒数
  3. 缺陷修复

    • fixed 调整止盈初始值,使其在未发生盈利前不生效
    • fixed BandSignal 缺失序列化
    • fixed Condiciton在未设置SG时无法生效
  4. 其他修改

    • 兼容 akshare 新旧版本
    • 屏蔽 talib 导入告警
hikyuu - 1.3.1

Published by fasiondog 11 months ago

  1. 增加通达信时间指标(DATE/TIME/YEAR/MONTH/WEEK/DAY/HOUR/MINUTE)
  2. 增加 SLOPE 计算线性回归斜率指标
  3. 优化 MYSQL 引擎数据存储,支持分时/分笔数据导入,财务数据导入
  4. Datetime增加支持到秒级整数构建及ymdhms系列返回整数方法
  5. fixed 北交所数据导入未更新最后更新日期
  6. fixed CVAL 指标等效时可能造成的崩溃
  7. fixed windows下配置文件utf-8错误
hikyuu - 1.3.0

Published by fasiondog 12 months ago

  1. 性能优化

    #125 <https://github.com/fasiondog/hikyuu/pull/125>_ 指标融合优化,计算速度提升了8~10倍左右。

  2. 功能增强

    • TradeManager 引出买空/买空操作至 python
    • Stock 引出 get_index_range 方法至 python
    • 编译选项增加 stacktrace 选项,方便异常时打印 C++ 堆栈
    • 优化 TimerManager、线程池、数据驱动等基础设施
    • MySQL/SQLite 数据引擎支持绑定 datetime
    • 优化指标默认名称
    • 升级 flatbuffers 版本至 23.5.6
    • 优化 Stock 的相等比较
    • KQuery/KRecord/KData 相等/不等比较完善并引出至 python
    • 完善 Performance
  3. 其他错误修复

    • 更新 SG 信号指示器系列方法,去除移除 OP 后的一些遗留问题
    • 修复 TradeList 转 np 时使用了已废弃的方法
    • 修复 SUM 存在访问越界的问题
    • 修复 IniParser 不支持 windows 中文路径的问题
    • 修复 RSI 存在 NaN 值时计算错误
    • 修复 Ubuntu 23.10 下编译失败的问题
hikyuu - 1.2.9

Published by fasiondog about 1 year ago

  1. 稳定性与兼容性

    • 修复了 setup.py 更新编译模式时的问题,确保并行编译参数能够正常生效
    • 对 HikyuuTdx 数据下载进行了优化,增加了超时处理,以防止网络连接问题导致进度停滞
    • 增加了对 pytdx 连接失败的检测,以便记录相关日志
  2. 算法优化

    • 优化了 VAR 和 STDP 算法,现在使用移位算法,提升了计算效率
    • 修复了 weave formula 中缺少 break 的问题,避免了在打印时出现崩溃
    • 增加了相关系数指标 CORR
    • 修复了 SUM 中缺少 discard 设置的问题
    • 修复了 setDiscard 在 discard 小于 size 时未对 m_discard 进行赋值的问题
  3. 功能增强

    • 新增 pyechart 绘图支持
    • 在 ipython/notebook 模式下,自动设定 matplotlib 绘图为交互模式,并改善了 bokeh 绘图效果
    • StrategyBase 现在可以直接获取 StockManager 实例
    • 自动设置 matplotlib 的中文字体
    • 增加了 TimerManager 对系统时间发生变化的保护
    • SQLite kdata driver 新增了支持转换时间间隔的功能
  4. 其他修复和改进

    • 修复 getFinanceInfo 和 getHistoryFinanceInfo 的问题,只对 STOCKTYPE_A 生效
    • 修复 IndicatorImp::setContext 方法中判断逻辑的问题,确保在遍历过程中 Context 能够正确修改
    • 增加一下常用了跨平台函数
    • 添加了反馈信息发送功能
    • 优化了编译选项,对于部分用户直接使用 xmake 进行编译控制
    • 修复了 split 函数的缺陷,并新增了 byteToHexStr 系列 byte 转字符串函数
hikyuu - 1.2.8

Published by fasiondog about 1 year ago

  1. fixed 多broker时m_broker_last_datetime更新
  2. support Query.HOUR2
  3. 优化 Stock 缓存修改增加二次保护
  4. fix time delta when start_time < phase1_start
  5. add timeout for proxy requests.get
  6. 重复用一个代理ip,当超时6次换ip
  7. 解决delta.total_seconds()出现负值的情况
  8. update executor.map timeout
  9. fixed for bokeh3
  10. fixed flatbuffers version
  11. 升级 fmt
  12. fix "zsbk_sz = blockbj" to "zsbk_bj = blockbj"
  13. 优化编译工程
hikyuu - 1.2.7

Published by fasiondog almost 2 years ago

fixed MySQL引擎只能导入数据,但实际无法使用

hikyuu - 1.2.6

Published by fasiondog almost 2 years ago

  1. 新增发布 linux 下 pypi 包,linux 下也可以通过 pip install hikyuu 进行安装
  2. 获取股票代码表失败时增加保护
  3. 增加GUI异常保护
  4. fixed linux 下 mysql 数据库引擎报错(数据表名称都改为小写)
  5. fixed #I5YE01 bokeh_draw.py 鼠标滑动是的时间显示问题
hikyuu - 1.2.5

Published by fasiondog about 2 years ago

  1. 增加北京交易所数据
  2. 改进数据下载,修复 pytdx 数据下载缺失部分数据
  3. 恢复财务数据下载
  4. 增加 start_insight_sdk.py, 从华泰 insight 获取实时数据
  5. 完善 hikyuuTdx 中 nng 消息的启停与释放
  6. hku_catch 增加指示重新抛出异常的参数
  7. 修正 demo
hikyuu - 1.2.4

Published by fasiondog over 2 years ago

  1. 修复 trade_manage持久化,费率设置为TC_FixedA2017会造成持久化中断
  2. 修改 TradeManager::getFunds 中的截止时间 23:59 分被误写为 11:59 分
  3. 修复订单代理失效
hikyuu - 1.2.3

Published by fasiondog over 2 years ago

  1. 指标支持动态参数

在通道信等证券行情软件中,其技术指标中的窗口参数通常支持整数,也支持使用指标,如:

T1:=HHVBARS(H,120); {120内的最高点距今天的天数}
L120:=LLV(L,T1+1); {120内的最高点至今,这个区间的最低点}

现在,在 Hikyuu 中,也可以使用指标作为参数:

T1 = HHVBARS(H, 120)
L120 = LLV(L, T1+1)
L120.set_context(k)
L120.plot()

注意事项

由于无法区分 Indicator(ind) 形式时,ind 究竟是指标参数还是待计算的输出数据,此时如果希望 ind 作为参数,需要通过 IndParam 进行显示指定,如:EMA(IndParam(ind))。

最佳的的方式,则是通过指定参数名,来明确说明使用的是参数:

x = EMA(c)  # 以收盘价作为计算的输入
y = EMA(IndParam(c)) # 以收盘价作为 n 参数
z = EMA(n=c) # 以收盘价作为参数 n

  1. 完善 PF、AF、SE

现在可以正常使用资产组合。:

# 创建一个系统策略
my_mm = MM_FixedCount(100)
my_sg = my_sg = SG_Flex(EMA(n=5), slow_n=10)
my_sys = SYS_Simple(sg=my_sg, mm=my_mm)

# 创建一个选择算法,用于在每日选定交易系统
# 此处是固定选择器,即每日选出的都是指定的交易系统
my_se = SE_Fixed([s for s in blocka if s.valid], my_sys)

# 创建一个资产分配器,用于确定如何在选定的交易系统中进行资产分配
# 此处创建的是一个等比例分配资产的分配器,即按相同比例在选出的系统中进行资金分配
my_af = AF_EqualWeight()

# 创建资产组合
# 创建一个从2001年1月1日开始的账户,初始资金200万元。这里由于使用的等比例分配器,意味着将账户剩余资金在所有选中的系统中平均分配,
# 如果初始资金过小,将导致每个系统都没有充足的资金完成交易。
my_tm = crtTM(Datetime(200101010000), 2000000)
my_pf = PF_Simple(tm=my_tm, af=my_af, se=my_se)

# 运行投资组合
q = Query(-500)
%time my_pf.run(Query(-500))

x = my_tm.get_funds_curve(sm.get_trading_calendar(q))
PRICELIST(x).plot()
  1. 修复fedora 34编译找不到路径报错,waning 提示
  2. fixed mysql 升级脚本错误
  3. fixed 复权后计算的净收益不对,并在使用前复权数据进行回测时给出警告(前复权回测属于未来函数)
hikyuu - 1.2.1

Published by fasiondog over 2 years ago

  1. 修复 importdata
  2. KData 增加 getPosInStock 方法
  3. KQuery 的 recoverType 属性支持设定修改
  4. System 支持使用复权数据
  5. 增加 2022 年假日
  6. 修改 examples,以便在新版本下执行
  7. 修改其他文档帮助错误
hikyuu - 1.2.0

Published by fasiondog almost 3 years ago

  1. HikyuuTdx 执行导入时自动保存配置,避免第一次使用 hikyuu 必须退出先退出 Hikyuutdx 的问题
  2. 增加创业板 301 开头股票代码
  3. 修复 window 显示缩放时 Hikyuutdx 显示不全的问题
  4. 修复 HHVLLV/LLVBARS/HHVBARS 计算错误
  5. 优化指标重设上下文时的计算,上下文未变化的情况下由指标本身计算标识判断是否重计算
  6. 修复分笔、分时数据转换 to_df 函数无效的问题
  7. HikyuuTdx 导入至 hdf5 时增加数据保护,遇到出错的表直接删除,下次可自动恢复导入
  8. 修复使用通达信的权息数据后复权失效的问题
  9. remove hikyuu_extern_libs submodule, windows下HDF5, mysql改用下载依赖包的方式
  10. 优化 HikyuuTDX GUI控制台日志,捕获子进程日志输出