Skip to content

Commit

Permalink
Merge pull request #316 from fasiondog/release
Browse files Browse the repository at this point in the history
Release 2.3.1
  • Loading branch information
fasiondog authored Jan 18, 2025
2 parents 5f83f4f + ad6263f commit ebb1772
Show file tree
Hide file tree
Showing 9 changed files with 122 additions and 9 deletions.
27 changes: 24 additions & 3 deletions docs/source/base/other_utils.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,41 @@
函数
------

.. py:function:: select()
.. py:function:: select(cond, start=Datetime(201801010000), end=Datetime.now(), print_out=True)
示例::
#选出涨停股
C = CLOSE()
x = select(C / REF(C, 1) - 1 >= 0.0995))
x = select(C / REF(C, 1) - 1 >= 0.0995)

:param Indicator cond: 条件指标
:param Datetime start: 起始日期
:param Datetime end: 结束日期
:param bool print_out: 打印选中的股票
:rtype: 选中的股票列表


.. py:function:: select2(inds, start=Datetime(201801010000), end=Datetime.now(), stks=None)
导出最后时刻指定证券的所有指定指标值

如:
select2([CLOSE(), VOLUME()], stks=blocka)
返回一个DataFrame, 列名是指标名称, 行是证券代码和证券名称:
证券代码 证券名称 CLOSE VOLUME
SH600000 浦发银行 14.09 1000
SH600001 中国平安 13.09 2000
SZ000001 平安银行 13.09 3000
...

:param Indicator inds: 指标列表
:param Datetime start: 起始日期
:param Datetime end: 结束日期(不包括该日期)
:param list stks: 指定的证券列表
:rtype: pandas.DataFrame


.. py:function:: get_log_level()
获取当前日志打印级别
Expand Down Expand Up @@ -65,7 +86,7 @@
:return: 处理过的数据


.. py:function:: getDateRange(start, end)
.. py:function:: get_date_range(start, end)
获取指定 [start, end) 日期时间范围的自然日日历日期列表,仅支持到日

Expand Down
35 changes: 35 additions & 0 deletions docs/source/indicator/indicator.rst
Original file line number Diff line number Diff line change
Expand Up @@ -571,6 +571,30 @@
:param data: 输入数据
:rtype: Indicator


.. py:function:: ISNA(ind[, ignore_discard=False])
判断指标是否为 nan 值,若为 nan 值, 则返回1, 否则返回0.

:param Indicator ind: 指定指标
:param bool ignore_discard: 忽略指标丢弃数据


.. py:function:: ISINF(ind)
判断指标是否为正无穷大 (+inf) 值,若为 +inf 值, 则返回1, 否则返回0。如判断负无穷大, 使用 ISINFA。

:param Indicator ind: 指定指标
:rtype: Indicator


.. py:function:: ISINFA(ind)
判断指标是否为负无穷大 (-inf) 值,若为 -inf 值, 则返回1, 否则返回0。如判断正无穷大, 使用 ISINF。

:param Indicator ind: 指定指标
:rtype: Indicator


.. py:function:: KDATA([data])
Expand Down Expand Up @@ -854,6 +878,17 @@
:rtype: Indicator


.. py:function:: REPLACE(ind, [old_value=constant.nan, new_value=0.0, ignore_discard=False]
替换指标中指定值,默认为替换 nan 值为 0.0
:param Indicator ind: 指定指标
:param double old_value: 指定值
:param double new_value: 替换值
:param bool ignore_discard: 忽略指标丢弃数据
:rtype: Indicator
.. py:function:: RESULT(data, result_ix)
以公式指标的方式返回指定指标中的指定结果集
Expand Down
4 changes: 4 additions & 0 deletions docs/source/indicator/overview.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,11 @@
* :py:func:`CVAL` - 创建指定长度的固定数值指标
* :py:func:`CONTEXT` - 独立上下文
* :py:func:`DROPNA` - 删除 nan 值
* :py:func:`ISNA` - 判断是否为 nan 值
* :py:func:`ISINF` - 判断是否为 +inf 值
* :py:func:`ISINFA` - 判断是否为 -inf 值
* :py:func:`PRICELIST` - 将PriceList或Indicator的结果集包装为Indicator,同名 VALUE
* :py:func:`REPLACE` - 替换指标中指定值,默认为替换 nan 值为 0.0
* :py:func:`RESULT` - 以指标公式的方式返回指定指标中相应的结果集
* :py:func:`WEAVE` - 将两个ind的结果合并到一个ind中
* :py:func:`ZSCORE` - ZScore 标准化
Expand Down
7 changes: 7 additions & 0 deletions docs/source/quickstart.rst
Original file line number Diff line number Diff line change
Expand Up @@ -180,4 +180,11 @@ Ubuntu wayland 平台上 QT 不可用
-----------------------------------

使用 wayland 的 ubuntu, 可能需要设置 QT_QPA_PLATFORM=wayland 环境变量,通常可以在 .bashrc 中 添加 export QT_QPA_PLATFORM=wayland 进行设置


PyCharm 等 IDE 无法正常提示帮助信息
-----------------------------------

1. 安装 pybind11-stubgen,使用命令 pip install pybind11-stubgen
2. 运行 pybind11-stubgen hikyuu 命令,即可正常提示帮助信息。

25 changes: 25 additions & 0 deletions docs/source/release.rst
Original file line number Diff line number Diff line change
@@ -1,6 +1,31 @@
版本发布说明
=======================

2.3.1 - 2025年1月18日
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

1. 新增特性
- HikyuuTdx 新增添加部分 tdx 880指数导入: 880001/880002 等
- 新增 INDEXO/INDEXH/INDEXL/INDEXC/INDEXA/INDEXV 大盘指标
- 新增 REPLACE/ISNA/ISINF/ISINFA 辅助数据处理指标
- interactive 工具新增 select2 快捷方法,用于导出最后时刻指定证券的所有指定指标值为 DataFrame
- 新增 MF_Weight 指定权重评分板

2. 功能优化
- echarts 绘图引擎改进,支持 sys performance 绘制
- interactive 工具中 zsbk_sz50/zsbk_sz180 命名调整为zsbk_sh50/zsbk_sh180
- 部分涉及日期对齐的指标添加 fill_null 参数, CORR/ADVANCE/DECLINE/INSUM等
- 改进 DMA 实现时数据对齐
- 调整 LOG/LN 计算值为 0 时为 -inf
- python constant 常量中添加 infa 表示负无穷大
- 优化 VAR、VARP, 采取抛弃方式

3. 缺陷修复
- fixed spot_server隔夜后会将未要求启动的spot_agent 启动起来
- fixed RESULT 输入为原型公式时可能因尚无结果集数据导致指定上下文时计算失败
- fixed CORR 初值计算, 导致n=0时结果不正确, 同时采用抛弃策略


2.3.0 - 2025年1月1日
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Expand Down
14 changes: 14 additions & 0 deletions docs/source/trade_portfolio/multifactor.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,20 @@
内建对因子合成算法
--------------------------------

.. py:function:: MF_Weight(inds, weights, stks, query, ref_stk[, ic_n=5, spearman=True])
按指定权重合成因子 = ind1 * weight1 + ind2 * weight2 + ... + indn * weightn

:param sequense(Indicator) inds: 原始因子列表
:param sequense(float) weights: 权重列表(需和 inds 等长)
:param sequense(stock) stks: 计算证券列表
:param Query query: 日期范围
:param Stock ref_stk: 参考证券 (未指定时,默认为 sh000300 沪深300)
:param int ic_n: 默认 IC 对应的 N 日收益率
:param bool spearman: 默认使用 spearman 计算相关系数,否则为 pearson
:rtype: MultiFactorBase


.. py:function:: MF_EqualWeight(inds, stks, query, ref_stk[, ic_n=5, spearman=True])
等权重合成因子
Expand Down
9 changes: 8 additions & 1 deletion hikyuu_pywrap/_Datetime.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -108,5 +108,12 @@ void export_Datetime(py::module& m) {

DEF_PICKLE(Datetime);

m.def("get_date_range", getDateRange, py::arg("start"), py::arg("end"));
m.def("get_date_range", getDateRange, py::arg("start"), py::arg("end"),
R"(get_date_range(start, end)
获取指定 [start, end) 日期时间范围的自然日日历日期列表,仅支持到日
:param Datetime start: 起始日期
:param Datetime end: 结束日期
:rtype: DatetimeList)");
}
8 changes: 4 additions & 4 deletions hikyuu_pywrap/trade_sys/_MultiFactor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,7 @@ void export_MultiFactor(py::module& m) {
:param Stock ref_stk: 参考证券 (未指定时,默认为 sh000300 沪深300)
:param int ic_n: 默认 IC 对应的 N 日收益率
:param bool spearman: 默认使用 spearman 计算相关系数,否则为 pearson
:rtype: MultiFactor)");
:rtype: MultiFactorBase)");

m.def("MF_Weight", py::overload_cast<>(MF_Weight));
m.def(
Expand All @@ -240,7 +240,7 @@ void export_MultiFactor(py::module& m) {
:param Stock ref_stk: 参考证券 (未指定时,默认为 sh000300 沪深300)
:param int ic_n: 默认 IC 对应的 N 日收益率
:param bool spearman: 默认使用 spearman 计算相关系数,否则为 pearson
:rtype: MultiFactor)");
:rtype: MultiFactorBase)");

m.def("MF_ICWeight", py::overload_cast<>(MF_ICWeight));
m.def(
Expand All @@ -266,7 +266,7 @@ void export_MultiFactor(py::module& m) {
:param int ic_n: 默认 IC 对应的 N 日收益率
:param int ic_rolling_n: IC 滚动周期
:param bool spearman: 默认使用 spearman 计算相关系数,否则为 pearson
:rtype: MultiFactor)");
:rtype: MultiFactorBase)");

m.def("MF_ICIRWeight", py::overload_cast<>(MF_ICIRWeight));
m.def(
Expand All @@ -292,5 +292,5 @@ void export_MultiFactor(py::module& m) {
:param int ic_n: 默认 IC 对应的 N 日收益率
:param int ic_rolling_n: IC 滚动周期
:param bool spearman: 默认使用 spearman 计算相关系数,否则为 pearson
:rtype: MultiFactor)");
:rtype: MultiFactorBase)");
}
2 changes: 1 addition & 1 deletion xmake.lua
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ set_project("hikyuu")
add_rules("mode.debug", "mode.release")

-- version
set_version("2.3.0", {build = "%Y%m%d%H%M"})
set_version("2.3.1", {build = "%Y%m%d%H%M"})

set_warnings("all")

Expand Down

0 comments on commit ebb1772

Please sign in to comment.