mirror of
https://gitee.com/fasiondog/hikyuu.git
synced 2024-12-02 03:48:19 +08:00
release 1.2.3; 更新示例,修正 EMA 引出错误
This commit is contained in:
parent
0b583c4667
commit
4731df72b0
BIN
docs/source/_static/indparam.png
Normal file
BIN
docs/source/_static/indparam.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 14 KiB |
BIN
docs/source/_static/portfolio.png
Normal file
BIN
docs/source/_static/portfolio.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 41 KiB |
@ -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相关示例
|
||||||
|
@ -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
160
hikyuu/examples/notebook/010-Portfolio.ipynb
Normal file
160
hikyuu/examples/notebook/010-Portfolio.ipynb
Normal file
File diff suppressed because one or more lines are too long
@ -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)
|
||||||
|
|
||||||
|
@ -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',
|
||||||
|
@ -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) -- 激活的日志级别
|
||||||
|
Loading…
Reference in New Issue
Block a user