diff --git a/docs/source/base/other_utils.rst b/docs/source/base/other_utils.rst index 0bca6c781..a855a2655 100644 --- a/docs/source/base/other_utils.rst +++ b/docs/source/base/other_utils.rst @@ -7,13 +7,13 @@ 函数 ------ -.. 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: 起始日期 @@ -21,6 +21,27 @@ :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() 获取当前日志打印级别 @@ -65,7 +86,7 @@ :return: 处理过的数据 -.. py:function:: getDateRange(start, end) +.. py:function:: get_date_range(start, end) 获取指定 [start, end) 日期时间范围的自然日日历日期列表,仅支持到日 diff --git a/docs/source/indicator/indicator.rst b/docs/source/indicator/indicator.rst index 6092e0c24..4be6d6127 100644 --- a/docs/source/indicator/indicator.rst +++ b/docs/source/indicator/indicator.rst @@ -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]) @@ -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) 以公式指标的方式返回指定指标中的指定结果集 diff --git a/docs/source/indicator/overview.rst b/docs/source/indicator/overview.rst index bb9d7c0da..350dcbd2e 100644 --- a/docs/source/indicator/overview.rst +++ b/docs/source/indicator/overview.rst @@ -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 标准化 diff --git a/docs/source/quickstart.rst b/docs/source/quickstart.rst index e38de586e..b6a1149c1 100644 --- a/docs/source/quickstart.rst +++ b/docs/source/quickstart.rst @@ -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 命令,即可正常提示帮助信息。 \ No newline at end of file diff --git a/docs/source/release.rst b/docs/source/release.rst index a841ec104..e281dc68e 100644 --- a/docs/source/release.rst +++ b/docs/source/release.rst @@ -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日 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/docs/source/trade_portfolio/multifactor.rst b/docs/source/trade_portfolio/multifactor.rst index d34470295..20df2e2a1 100644 --- a/docs/source/trade_portfolio/multifactor.rst +++ b/docs/source/trade_portfolio/multifactor.rst @@ -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]) 等权重合成因子 diff --git a/hikyuu_pywrap/_Datetime.cpp b/hikyuu_pywrap/_Datetime.cpp index 9655cf96f..e04d60560 100644 --- a/hikyuu_pywrap/_Datetime.cpp +++ b/hikyuu_pywrap/_Datetime.cpp @@ -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)"); } diff --git a/hikyuu_pywrap/trade_sys/_MultiFactor.cpp b/hikyuu_pywrap/trade_sys/_MultiFactor.cpp index b4577970b..a3d41d169 100644 --- a/hikyuu_pywrap/trade_sys/_MultiFactor.cpp +++ b/hikyuu_pywrap/trade_sys/_MultiFactor.cpp @@ -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( @@ -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( @@ -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( @@ -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)"); } \ No newline at end of file diff --git a/xmake.lua b/xmake.lua index 0eb35ef0f..050dd57a0 100644 --- a/xmake.lua +++ b/xmake.lua @@ -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")