# hikyuu **Repository Path**: fasiondog/hikyuu ## Basic Information - **Project Name**: hikyuu - **Description**: 基于C++/Python的超高速开源量化交易研究框架,同时可基于策略部件进行资产重用,快速累积策略资产。 - **Primary Language**: C++ - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: http://hikyuu.org/ - **GVP Project**: Yes ## Statistics - **Stars**: 2340 - **Forks**: 979 - **Created**: 2014-03-22 - **Last Updated**: 2026-10-28 ## Categories & Tags **Categories**: stocks **Tags**: 金融, 量化交易, A股市场, 回测 ## README

title

基于 C++/Python 的开源量化研究框架 —— 金融与交易正确性优先,策略与组合同构、可任意深度嵌套,部件自由替换的高性能量化引擎

Windows build Ubuntu build License Downloads

English | 简体中文

**Hikyuu 的内核是「交易理论与金融语义的完整与正确」**:一笔交易在金融上该怎样成立——何时成交、成本由哪几项构成、除权时持仓与现金如何变化、绩效用什么口径、空值与非有限值怎么传播——在框架里都是**完整且显式**的:环节不缺、规则被真正执行、可被逐项校验,而不是留给使用者自己保证。 **立意只有一句:不让一个「能跑通」却不成立的策略,被当成结论。** 两个手段服务于这个内核:**按理论问题切分结构**——一个策略必须回答市场状态、条件、信号、仓位、退出与成交价,一个组合必须回答选谁、分多少钱、按什么评分,每一类都是理论上的一个必答问题,而不是工程意义上的模块;**组合即策略**——把组合做成一等公民(`SE` / `AF` / `MF`),内核才能从单策略延伸到多资产多策略。于是每一环可独立替换与评估,每一笔都记在可查询的账本里;框架的价值不在穷举,而在**每个位置都留对、替换后契约仍然成立**(见下文「🏛️ 交易理论与金融语义」与「🧬 组合即策略」)。 > ⚠️ **免责声明**:本项目为开源金融技术研究工具,仅供个人学习、学术研究与数据分析使用,不构成任何投资建议与交易指导,不提供、不内置证券交易服务。用户自主新增、对接各类交易接口、开发拓展功能以及对应的实操行为,均由用户自行承担全部风险与法律责任,严禁对接非法交易通道、用于违规交易场景。 --- ## 📊 关键数据

⚡ 6s / 166ms
1913 万日 K 线加载 + 20 日均线求和:首次 / 预热后(AMD 7950x,实测详情)
🏛️ 3 层
内建金融语义(交易理论 / 交易规则 / 计算)
🧬 3 种
组合运行模式(A 信号聚合 / B 资金分配 / C 共享账户)
💾 4 种
存储方式(HDF5 / MySQL / ClickHouse / SQLite)

--- ## 🔗 快速导航 | 项目 | 链接 | | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | | 🏠**项目首页** | [https://hikyuu.org/](https://hikyuu.org/) | | 📚**帮助文档** | [https://hikyuu.readthedocs.io/zh-cn/latest/index.html](https://hikyuu.readthedocs.io/zh-cn/latest/index.html) | | 🚀**入门示例** | [Jupyter Notebook 系列教程](https://nbviewer.org/github/fasiondog/hikyuu/blob/master/hikyuu/examples/notebook/zh/000-Index.ipynb?flush_cache=True) | | 🧰**策略部件库** | [https://gitee.com/fasiondog/hikyuu_hub](https://gitee.com/fasiondog/hikyuu_hub) | --- ## 🧭 入门之前:它是什么,不是什么 > **它不是自动交易工具,也不是订单执行系统**:不内置券商对接、不承诺自动下单,也不做 tick 级撮合或低延迟执行;`OrderBroker` 只是一个可插拔的接口,是否对接、对接什么通道由你自己决定并承担合规责任。它按 K 线推进,把一笔交易的金融语义按真实规则完整执行;决策仍然是你的事。撮合的微观结构(部分成交、撤单、订单队列)与现代组合优化(均值方差、风险平价)也不例外:框架不替你选定这类算法,但把它们的位置留好了——撮合经 `OrderBroker` 与成交模型接入,组合优化写一个 `AF` 子类即可,`SE` / `MF` / `MM` / `ST` 同理。**框架的意义不是把算法写全,而是把位置留对:每个位置可替换,且替换后结算与校验仍然成立。** **门槛是有意保留的**:框架不会用一条漂亮的曲线,替你补上那些你没想到的前提。这些环节必须自己懂——否则得到的只是一个能跑的错觉。 换个角度看,它更像一张地图:把做策略该考虑的环节逐项列出(环境 → 条件 → 信号 → 仓位 → 退出 → 滑点 → 成本;组合层:选样 → 资金分配 → 风控),照着这张图逐项填,路径本身就是入门路径。**它适合想把系统化交易认真学一遍的人**——包括自学者与学生——而不是想两天跑出一条收益曲线的人。 > 「不敢下注就赢不了;把筹码输光,就没法再下注。」—— 拉里·海特 给初入者与自学者的几条忠告: - **先跑通流程,再谈收益**:回测收益率不是能力证明,能解释每一笔为什么成交才是。 - **一次只改一个部件**:其他环节固定不动做对照,否则无法知道收益变化来自哪里。 - **先有成本与权息,再调参数**:没有成本约束下的最优参数,往往只是拟合噪声。 - **关心「什么环境下失效」**:比关心「历史赚了多少」更有用;用样本外与走步验证(`SYS_WalkForward`)检验,而不是在同一个区间反复调参。 - **默认关掉的要慎用**:杠杆、做空默认关闭是刻意的,先弄清保证金、强平与借券成本,再显式打开。 --- ## ⚡ 快速开始(跑通第一个回测) ### 环境要求 - **Python 3.10+**(官方包仅面向 3.10 ~ 3.13 构建) - 支持 Windows / Linux / macOS(Linux 需 Ubuntu 24.04+) ### 第 1 步:安装 ```bash pip install hikyuu ``` 国内用户若下载缓慢,可换用镜像源: ```bash pip install hikyuu -i https://pypi.tuna.tsinghua.edu.cn/simple ``` ### 第 2 步:导入行情数据 任选一种方式导入 A 股历史行情数据: ```bash # 图形界面(推荐首次使用,会自动生成配置文件) HikyuuTDX # 命令行(需先运行过一次 HikyuuTDX 生成配置) importdata ``` ### 第 3 步:跑通第一个回测 ```python from hikyuu.interactive import * # 创建模拟交易账户进行回测,初始资金 30 万 my_tm = crtTM(init_cash=300000) # 创建信号指示器(以 5 日 EMA 为快线,其 10 日 EMA 为慢线) # 快线向上穿越慢线时买入,反之卖出 my_sg = SG_Flex(EMA(CLOSE(), n=5), slow_n=10) # 固定每次买入 1000 股 my_mm = MM_FixedCount(1000) # 创建交易系统并运行 sys = SYS_Simple(tm=my_tm, sg=my_sg, mm=my_mm) sys.run(sm['sz000001'], Query(-150)) ```

回测结果示意

> 📖 完整示例参见 [Jupyter Notebook 系列教程](https://nbviewer.org/github/fasiondog/hikyuu/blob/master/hikyuu/examples/notebook/zh/000-Index.ipynb?flush_cache=True) > > 跑通单系统之后,下一步就是把多个策略组成一个组合:见下文「🧬 组合即策略」。 --- ## 🏛️ 交易理论与金融语义的完整与正确 > 三层,各管一件事,缺一层就不成立:**交易理论**——环节不能缺,缺了组合层,多策略就只是并行回测;**交易规则**——规则不能错,缺了权息与分项成本,除权日与跨年收益就会失真,缺了成交时机约束,信号当根成交就是前视;**计算**——空值语义必须一致,若由各指标自行处置,一个 `inf` 就会污染下游所有窗口聚合。这三层在框架里都是显式对象与全局约定——不靠文档提醒,而靠框架执行与入口守卫。 | 层面 | 回答什么 | | :--- | :--- | | 交易理论 | 一个策略该由哪些部分组成,一个组合该由哪些层组织 | | 交易规则 | 一笔交易在市场上该如何成交、扣费、除权与计价 | | 计算 | 空值与数值在整条计算链上如何保持一致 | **交易理论**:按理论结构而非代码职责划分——策略必须回答市场状态(`EV`)、条件(`CN`)、信号(`SG`)、仓位(`MM`)、退出(`ST` / `TP` / `PG`)与成交价(`SP`);组合必须回答选谁(`SE`)、分多少钱(`AF` 的 L1 权重 / L2 换算 / L3 风控)、按什么评分(`MF`)。每一类都是理论上的一个必答问题,缺一环策略就是残缺的。 **交易规则**:成交默认延迟到下一根开盘(`buy_delay` / `sell_delay`),一价板或停牌时顺延、超过 `max_delay_count` 放弃,滑点价钳制在当日 `[low, high]`;成本按 `CostRecord` 分项(佣金 / 印花税 / 过户费),买卖分别计算;`updateWithWeight` 按权息调整持仓与现金;融资融券默认关闭;绩效按净资产与自然日年化(`duration / 365`)。 **计算**:未定义状态(除零 / 零方差 / 全缺失 / 零基准)产 `Null`(NaN),而非 `0.0` 或 `inf`——`0.0` 会与合法零撞车,`inf` 会污染下游聚合;聚合只累加有限值、分母只数有效项(均值 1 个、离差 2 个),全缺才产 `Null`;序列化按 IEEE 位模式保存,NaN / ±Inf / 符号零无损往返。交易输入同样受约束:数量非有限或 ≤ 0、成交价非正即放弃,调仓周期为负直接抛异常。空值与有限值是**全局契约而非各部件自选**,新写部件自动继承同一口径。 这三层都不是文档承诺:核心代码 1300+ 处显式校验拦住规则与输入边界;doctest 用例 1600+ 个、断言 1.6 万条,按「一模块一套件、一边界一用例」组织,空输入、`Null()`、非有限值与越界异常都在覆盖内;`small-test` 不依赖真实行情即可在三平台 CI 跑通。 > 要绕过这些规则,只能显式改参数——**框架选择站在「交易上成立」这一边,而不是「跑起来最省事」这一边**。这也是同一策略在不同框架上跑出不同收益的常见原因:没被建模的环节,结果就取决于使用者是否记得补。 > 这套取舍有代价:同一策略跑出的收益,通常低于理想化回测——费用扣了、成交等了、权息调整了。宁可让回测数字难看,也不让一个能跑却错误的结果变成可用的策略。 --- ## 🧬 组合即策略:一个引擎覆盖系统化交易 / 资产配置 / 多因子 **组合与策略是同一件事**:一个组合节点不是「一组权重」,而是同样持有一套完整的交易语义——子系统各自的 `EV` / `CN` / `SG` / `MM` / `ST` / `TP` / `PG` / `SP` 决定「怎么打」,账本(`TM`)逐笔记录成交与持仓,按分项计算成本(佣金 / 印花税 / 过户费)、按权息调整,执行层负责延迟到下一根成交、失败重试与停牌处理——这三层语义在组合节点上依然成立,只在最外层合并为同一账户。 组合层因此只回答投资组合该回答的两个问题:**谁参与**(`SE` 选样、`MF` 多因子打分)与**分多少钱**(`AF` 的 L1 权重 / L2 换算 / L3 组合风控)。 这不是命名上的讲究,而是三个可以直接用的结果: - **节点 = 完整交易系统,不是资金分配口** —— 因此单系统、走步优化系统、自定义 Python 系统,乃至组合本身,都能直接挂成父组合的节点,不必为它们写适配层;层级也不设上限(重复添加与循环引用会被拒绝)。 - **金融语义下沉到每个节点** —— 因此子系统里的止损、分项成本、权息与延迟成交照旧成立,不需要因为进了组合就重写一遍,只在最外层合并为同一账户。 - **`AF` 的三层可分别替换(模式 A)** —— 换权重来源(`AF_EqualWeight` / `AF_FixedWeightList` / `AF_MultiFactor`)不必动 L3 风控,改 L3 也不必动 L1 权重;模式 B 按额度自治,不做 L3 裁剪。完整清单见下文「🏗️ 交易系统化架构核心部件」。 ```python from hikyuu.interactive import * # 1. 每个子系统都是一套完整的系统化交易:各自的 SG / MM / ST 与账本 def make_leaf(code, sg): sys = SYS_Simple(tm=crtTM(init_cash=100000), sg=sg, mm=MM_FixedPercent(0.5), st=ST_FixedPercent(0.05)) sys.to = sm[code].get_kdata(Query(-500)) # 绑定自身 K 线 return sys trend = make_leaf("sh600000", SG_Cross(EMA(CLOSE(), n=5), MA(CLOSE(), n=60))) grid = make_leaf("sh600004", SG_Cross(EMA(CLOSE(), n=3), MA(CLOSE(), n=10))) # 2. 组合工厂只做投资组合该做的事:谁参与(SE)+ 分多少钱(AF) group = PF_SignalAggregate(tm=crtTM(Datetime(202001010000), 300000), adjust_cycle=5) group.add(trend) group.add(grid) # 3. 这个组合还能作为节点参与更大的组合(多资产多策略的逐层聚合) top = PF_Simple(tm=crtTM(Datetime(202001010000), 1000000), af=AF_FixedWeightList([0.6, 0.4]), adjust_cycle=5) top.add(group) top.add(make_leaf("sh600005", SG_Cross(EMA(CLOSE(), n=10), MA(CLOSE(), n=30)))) # 4. 一次运行,整个组合在同一账户内统一结算 top.run(Query(-500)) print(top.tm.get_funds().total_assets) ``` 同一套引擎同时支持三种组合运行模式,各有对应工厂(也可用 `set_mode` 在已建组合上显式切换): | 工厂 | 账户形态与资金流转 | 对应的方法论 | 典型场景 | | :--- | :--- | :--- | :--- | | `PF_SignalAggregate`(模式 A) | 子系统用固定影子账户只作信号源;父按 `AF` 的 L2 换算把子系统的意图折算为执行指令,经 L3 组合风控后统一下单 | 信号 / 观点融合与组合构建;多因子打分可作选样或权重来源 | 多策略观点叠加到同一标的池、因子加权选股 | | `PF_Simple`(模式 B) | 调仓日由 `AF` 给每个子系统划拨额度,子系统在额度内自主决策,父透传其指令 | 资产配置与再平衡:权重 / 风险预算 / 调仓周期 | FOF / MOM、核心-卫星、定期再平衡 | | `PF_WithoutAF`(模式 C) | 不建影子账户,子系统直接在父的真实账户上按自身 MM 交易 | 系统化交易的并行执行:每个系统保留完整决策链 | 复现旧 `Portfolio` 回测口径、多策略共享资金池 | 个人资金有限、策略又多时,模式 A 更实用:子系统只作信号源、不占资金,父账户把观点合成净头寸后统一下单,避免「每条策略分一小份、连一手都买不满」的碎片化;模式 B 则适合资金可分割、需要独立核算的场景。 三种模式并不互斥:同一组合里可以替换 `SE` / `AF` / `MF`,也可以把一种模式的组合作为另一种模式的节点(例如外层 B 给内层 A 划拨额度),逐层组合。多因子不是单独的一层开关,而是通过 `SE_MultiFactor`(打分选样)与 `AF_MultiFactor`(按 `SE` 的评分分配权重)接入 A / B 两条路径。 调仓日由 `set_adjust_cycle(n)` 或 `set_adjust_dates([...])` 指定;子系统的现金在调仓日被回收并由 `AF` 重新划拨,所以某个子系统止损 / 止盈释放的资金会在下一次调仓日回流到组合层(`set_adjust_cycle(1)` 即每交易日结算)。 > ⚠️ 两个前提:每个子系统持有各自独立的 SG / MM(共享会被互相覆盖);`run(kdata)` 需各子系统已绑定自身 K 线,否则直接用 `run(Query(...))` 由交易日历驱动。架构上支持多市场,内置导入目前覆盖 A 股,其他资产经自定义数据驱动或插件接入。 **团队 / 个人的策略池,可以整体回测,也可以拆开算账**:把每条策略各自建成独立节点——不论标的、不论作者,它们保留各自的信号、仓位与止损;组合层统一决定谁参与、分多少钱,父账户给出整体绩效。模式 A / B 下每个子系统都有自己的账本,因此既能看整体,也能拆开看单条策略的贡献;层级可以按「团队 → 小组 → 成员」组织,和策略嵌套用的是同一套机制。 ### 与常见做法的差异 > 两类常见做法各自更适合不同的工作流,差别在于这些环节由谁承担:一类是事件驱动框架里把多个策略并列跑在同一个账户上,组合层并没有被建模——选谁、分多少钱、什么时候再平衡,都要用户自己写一层包装;另一类是把信号 / 因子做成矩阵交给优化器或模型,得到一组权重,而权重背后的下单数量、止损止盈、成交时机与成本由另设的执行层承担,不与策略抽象合一。 | 维度 | 事件驱动多策略并列 | 向量化因子 / 信号研究 | Hikyuu | | :--- | :--- | :--- | :--- | | 层级模型 | 多策略并列共享一个账户,无组合层 | 信号矩阵 → 组合权重 → 独立执行器 | 组合与策略同构,可任意深度嵌套 | | 组合层职责 | 用户手写包装层做资金分配与再平衡 | 权重在优化器 / 模型层给出 | `SE` 选样 + `AF`(L1 权重 / L2 换算 / L3 风控)+ `MF` 打分内建 | | 交易语义 | 由每个策略自行实现 | 由独立执行层承担,不与策略抽象合一 | `EV` / `CN` / `SG` / `MM` / `ST` / `TP` / `PG` / `SP` + 分项成本、权息、延迟成交与重试 | | 状态同步 | 共享现金池,子系统间只能间接影响 | 无逐日状态机 | 同一根 K 线的开盘 / 收盘阶段,父账户统一记账 | | 计算内核 | 多为解释型实现 | 向量化加速 | C++ 内核 + 原生多线程,可选本地向量化编译(`local` 选项) | | AI 接管粒度 | 生成整个策略或参数集 | 生成因子 / 组合权重 | 可下沉到单个部件,其余由框架托管 | 如果你只想在向量化环境里做因子研究,另两条路线的分工未必是问题;Hikyuu 的选择是把组合层与交易语义都纳入同一套抽象,代价是要多理解一层结构。 **差别不在「能不能组合」,而在犯错面积**:商业工具把组合层交给你的脚本——资金分配、现金约束、再平衡与对账写在同一段代码里,一处写错就是整本账错;Hikyuu 把组合层拆成选样 `SE`、资金分配 `AF`(L1 权重 / L2 换算 / L3 风控)与打分 `MF` 三个对象,并给出默认实现。自定义时你只回答「分多少」,结算、对账、现金上限与费用仍由框架负责。 在「按交易理论切分结构、每个位置可替换、替换后契约仍然成立」这个标准上,公开可见的开源框架里尚未见到第二个实现。 ### 🤖 对 AI 的适用性:接管粒度与接入成本 > 设想一个具体任务:**只让 AI 优化止盈,入场与仓位全部沿用现成规则**。 > > 多数框架里,这件事的成本不在训练,而在改造:退出逻辑写在策略类内部,要把它拆出来、把账户状态暴露给外部、还要让奖励反映真实成交与成本——一层厚封装。Hikyuu 里,止盈本来就是一个独立对象(`TP`),写一个 `TP` 子类即可,其余部件完全不动。 | AI 接入要解决的三件事 | 多数框架 | Hikyuu | | :--- | :--- | :--- | | 把决策点拆出来 | 改策略代码,或生成整个策略 | 部件本身就是对象,换一个即可 | | 托管账户与持仓状态 | 自己维护,或暴露内部状态 | `TM` 托管,`get_funds(dt)` 直接取 | | 让奖励反映真实摩擦 | 自己重建成本 / 权息 / 成交口径 | 净值已扣成本、已调权息、按真实时机成交 | > 于是两件事同时变小:**搜索空间**从「策略 × 参数」缩到「一个部件的输出」;**实验成本**从「造一层适配」降到「写一个部件」。再叠加 bar 驱动的确定性(episode 可重放)与入口守卫(非法配置提前失败),可以先把 AI 限制在一个部件上做窄实验,再逐步扩大接管范围。 > 现状:`runMoment` / `get_funds(dt)` / `get_performance(dt)` 提供 `step` / `state` / `reward` 原语,部件契约(`clone`、序列化、参数枚举)支持搜索与进化;走步优化已内置(`SYS_WalkForward` 配合 `SE_MaxFundsOptimal` / `SE_PerformanceOptimal` / `SE_EvaluateOptimal`)。计划补一层 Gym 风格薄封装与示例级特征、奖励参考;训练器留在外部。 --- ## 🏗️ 交易系统化架构核心部件 > 项目由 **C++ 核心库**、**Python 接口层**、**交互式探索工具** 三部分构成,每个部件可独立替换、自由组合 > > 数据层支持 **HDF5 / MySQL / ClickHouse / SQLite** 四种存储(默认 HDF5;ClickHouse 经插件扩展,分钟级数据的读写快于 HDF5、空间占用远低于 MySQL,更适配分钟级及以下高频数据)。

功能架构

这张表就是**领域模型的位置清单**:每一行是一个可替换的卡口(`EV` / `CN` / `SG` / `MM` / `ST` / `TP` / `PG` / `SP`;`SE` / `AF` / `MF`),换掉任何一个,结算、成本与校验仍由框架承担。 | 层级 | 部件 | 说明 | | :--------------------- | :----------------------------- | :----------------------------- | | **投资组合层** | `PF_*`(组合工厂,`Portfolio` 为兼容别名) | 多资产多策略组合:选样、资金分配与统一记账 | | | `Selector / SE` | 系统对象选择:系统策略筛选 | | | `AllocateFunds / AF` | 资金分配:组合级 L1 权重 / L2 换算 / L3 风控 | | | `MultiFactor / MF` | 多因子模型:因子评分与排序 | | **交易系统 SYS** | `Environment / EV` | 市场环境:大盘环境有效性判断 | | | `Condition / CN` | 系统有效条件:系统适用条件 | | | `Signal / SG` | 信号指示器:产生买卖信号 | | | `MoneyManager / MM` | 资金管理:买卖数量控制 | | | `Stoploss / ST` | 止损:风险控制退出 | | | `Takeprofit / TP` | 止盈:达到目标价位退出 | | | `ProfitGoal / PG` | 盈利目标:目标达成退出 | | | `Slippage / SP` | 滑点:回测价格模拟 | | **交易管理** | `TradeManager / TM` | 交易管理:账户资金与持仓记录 | | | `OrderBroker / OB` | 订单执行:实盘下单 broker 对接 | | **数据层** | `StockManager` | 证券统一管理 | | | `KData` | K 线量价序列 | | | `Query` | 时间范围查询筛选 | --- ## 📂 浏览源码 > 欢迎 **Star ⭐**,参与贡献 | 平台 | 链接 | 推荐 | | :------------------- | :------------------------------------------------------------------------ | :---------- | | **GitHub** | [https://github.com/fasiondog/hikyuu](https://github.com/fasiondog/hikyuu) | 海外 | | **码云 Gitee** | [https://gitee.com/fasiondog/hikyuu](https://gitee.com/fasiondog/hikyuu) | ✅ 国内推荐 | | **GitCode** | [https://gitcode.com/hikyuu/hikyuu](https://gitcode.com/hikyuu/hikyuu) | ✅ 国内推荐 | --- ## ❤️ 感谢捐赠,让 Hikyuu 走得更远 | 方案 | 说明 | 方式 | 链接 | | :------------------------- | :----------------------------------------------------------------------------------------------------------------------- | :------------------ | :------------------------------------- | | ☕**请作者喝杯咖啡** | ¥30 · 一次性的小小支持(赠历史日线及 3 个月捐赠权益) | 支付宝 | [前往捐赠](https://wzyp.cn/item/gflv3v) | | 📅**订阅 180 天** | ¥50 · 半年期捐赠权益(赠历史日线) | 支付宝 | [前往捐赠](https://wzyp.cn/item/du4h8s) | | 🗓️**订阅 365 天** | ¥100 · 全年期捐赠权益(赠历史日 / 分 / 时 / 笔数据) | 支付宝 | [前往捐赠](https://wzyp.cn/item/ehbz9b) | | 🌌**加入知识星球** | ¥300/年 · 首年 300 元,续费半价;捐赠权益 1 年可 3 台设备登录 · 专属微信群及策略部件库(赠历史日 / 分 / 时 / 笔数据) | 微信 / 知识星球 APP | [前往加入](https://t.zsxq.com/YSATD) | > 🎁 **捐赠计划与附赠详见**:[https://hikyuu.readthedocs.io/zh-cn/latest/vip/donate-plan.html](https://hikyuu.readthedocs.io/zh-cn/latest/vip/donate-plan.html) 捐赠用户支持群(仅接受捐赠用户,入群请注明:Hikyuu 订阅)

捐赠用户支持

--- ## 🌟 需要的帮助 欢迎社区成员一起参与贡献: - 🐛 测试并反馈 Bug - 📝 编写文档 - 🔧 开发新功能 - 🎨 网站优化 > 💡 **建议通过在 GitHub / Gitee / GitCode 开 issue 的方式贡献以上内容** --- ## 📦 项目依赖说明 C++ 核心模块直接依赖的开源项目、项目地址及 License 已汇总至 [THIRD_PARTY_LICENSES.md](THIRD_PARTY_LICENSES.md)(间接依赖未列出),在此向所有开源作者致敬 👍 Python 侧依赖见 [requirements.txt](requirements.txt)。 --- ## 🛠️ 工程与架构 对想二次开发或长期维护的人,以下几项是可直接查证的: - **C++20 + xmake**:Windows / Ubuntu / macOS 三平台 CI;第三方依赖及其许可汇总于 `THIRD_PARTY_LICENSES.md` - **三档测试**:`small-test`(CI 默认,不依赖真实行情)/ `unit-test` / `real-test`(需真实行情数据),另有 `-m coverage` 生成 lcov 报告 - **C++ 核心可独立剥离**:`hikyuu_cpp/hikyuu` 是独立的构建目标,不套 Python 也可基于它自建工具 - **双语文档**:`docs/zh` 与 `docs/en` 结构一致,核心 C++ / Python 注释与 docstring 已英文化 --- ## Star History Star History Chart