release 1.2.3; 更新示例,修正 EMA 引出错误

This commit is contained in:
fasiondog 2022-03-06 17:36:19 +08:00
parent 0b583c4667
commit 4731df72b0
9 changed files with 357 additions and 36 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

View File

@ -1,11 +1,75 @@
版本发布说明 版本发布说明
=============== =======================
1.2.2 (待发布) 1.2.3 (待发布)
------------------------- -------------------------
1. 指标支持动态参数
1.2.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()
.. figure:: _static/indparam.png
**注意事项**
由于无法区分 Indicator(ind) 形式时ind 究竟是指标参数还是待计算的输出数据,此时如果希望 ind 作为参数,需要通过 IndParam 进行显示指定EMA(IndParam(ind))。
最佳的的方式,则是通过指定参数名,来明确说明使用的是参数::
x = EMA(c) # 以收盘价作为计算的输入
y = EMA(IndParam(c)) # 以收盘价作为 n 参数
z = EMA(n=c) # 以收盘价作为参数 n
2. 完善 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()
.. figure:: _static/portfolio.png
3. 修复fedora 34编译找不到路径报错waning 提示
4. fixed mysql 升级脚本错误
5. fixed 复权后计算的净收益不对,并在使用前复权数据进行回测时给出警告(前复权回测属于未来函数)
1.2.1 - 2022年2月2日
------------------------- -------------------------
1. 修复 importdata 无法导入的问题 1. 修复 importdata 无法导入的问题
@ -17,7 +81,7 @@
7. 修改其他文档帮助错误 7. 修改其他文档帮助错误
1.2.0 1.2.0 - 2022年1月11日
------------------------- -------------------------
1. HikyuuTdx 执行导入时自动保存配置,避免第一次使用 hikyuu 必须退出先退出 Hikyuutdx 的问题 1. HikyuuTdx 执行导入时自动保存配置,避免第一次使用 hikyuu 必须退出先退出 Hikyuutdx 的问题
@ -32,7 +96,7 @@
10. 优化 HikyuuTDX GUI控制台日志捕获子进程日志输出 10. 优化 HikyuuTDX GUI控制台日志捕获子进程日志输出
1.1.9 1.1.9 - 2021年11月11日
------------------------- -------------------------
1. 补充科创板 1. 补充科创板
@ -46,13 +110,13 @@
9. 取消编译时指定的AVX指令集防止不支持的CPU架构 9. 取消编译时指定的AVX指令集防止不支持的CPU架构
1.1.8 1.1.8 - 2021年2月27日
------------------------- -------------------------
1. HikyuuTDX 切换mysql导入时错误提示目录不存在 1. HikyuuTDX 切换mysql导入时错误提示目录不存在
2. tdx本地导入修复并支持导入MySQL 2. tdx本地导入修复并支持导入MySQL
1.1.7 1.1.7 - 2021年2月13日
------------------------- -------------------------
1. 更新examples/notebook相关示例 1. 更新examples/notebook相关示例

View File

@ -30,7 +30,8 @@
"* [006 TradeManager应用](006-TradeManager.ipynb?flush_cache=True)\n", "* [006 TradeManager应用](006-TradeManager.ipynb?flush_cache=True)\n",
"* [007 系统策略演示](007-SystemDetails.ipynb?flush_cache=True)\n", "* [007 系统策略演示](007-SystemDetails.ipynb?flush_cache=True)\n",
"* [008 序列化说明](008-Pickle.ipynb?flush_cache=True)\n", "* [008 序列化说明](008-Pickle.ipynb?flush_cache=True)\n",
"* [009_获取实时日线数据](009-RealData.ipynb?flush_cache=True)" "* [009_获取实时日线数据](009-RealData.ipynb?flush_cache=True)\n",
"* [010_资产组合](010-Portfolio.ipynb?flush_cache=True)"
] ]
}, },
{ {
@ -53,7 +54,7 @@
], ],
"metadata": { "metadata": {
"kernelspec": { "kernelspec": {
"display_name": "Python 3", "display_name": "Python 3 (ipykernel)",
"language": "python", "language": "python",
"name": "python3" "name": "python3"
}, },
@ -67,7 +68,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.8.3" "version": "3.9.7"
} }
}, },
"nbformat": 4, "nbformat": 4,

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -519,9 +519,9 @@ void export_Indicator_build_in() {
def("EMA", EMA_1, (arg("n") = 22)); def("EMA", EMA_1, (arg("n") = 22));
def("EMA", EMA_2, (arg("n"))); def("EMA", EMA_2, (arg("n")));
def("EMA", EMA_3, (arg("data"), arg("n")));
def("EMA", EMA_4, (arg("data"), arg("n"))); def("EMA", EMA_4, (arg("data"), arg("n")));
def("EMA", EMA_5, (arg("data"), arg("n"))); def("EMA", EMA_5, (arg("data"), arg("n") = 22), R"(EMA([data, n=22])
def("EMA", EMA_3, (arg("data"), arg("n") = 22), R"(EMA([data, n=22])
线(Exponential Moving Average) 线(Exponential Moving Average)

View File

@ -101,7 +101,7 @@ setup(
# 3 - Alpha # 3 - Alpha
# 4 - Beta # 4 - Beta
# 5 - Production/Stable # 5 - Production/Stable
'Development Status :: 3 - Alpha', 'Development Status :: 4 - Beta',
# Indicate who your project is intended for # Indicate who your project is intended for
'Intended Audience :: Developers', 'Intended Audience :: Developers',

View File

@ -9,7 +9,7 @@ if not is_plat("windows") then
end end
-- version -- version
set_version("1.2.2", {build="%Y%m%d%H%M"}) set_version("1.2.3", {build="%Y%m%d%H%M"})
set_configvar("LOG_ACTIVE_LEVEL", 0) -- 激活的日志级别 set_configvar("LOG_ACTIVE_LEVEL", 0) -- 激活的日志级别
--if is_mode("debug") then --if is_mode("debug") then
-- set_configvar("LOG_ACTIVE_LEVEL", 0) -- 激活的日志级别 -- set_configvar("LOG_ACTIVE_LEVEL", 0) -- 激活的日志级别