Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
zengbin93
czsc
提交
355c6eee
C
czsc
项目概览
zengbin93
/
czsc
通知
23
Star
2
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
4
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
czsc
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
4
Issue
4
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
355c6eee
编写于
9月 07, 2020
作者:
Z
zengbin93
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
0.5.4 线段识别BUG
上级
b3b532c9
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
19 addition
and
24 deletion
+19
-24
czsc/analyze.py
czsc/analyze.py
+12
-17
test/test_analyze.py
test/test_analyze.py
+7
-7
未找到文件。
czsc/analyze.py
浏览文件 @
355c6eee
...
...
@@ -279,15 +279,15 @@ def get_potential_xd(bi_points):
class
KlineAnalyze
:
def
__init__
(
self
,
kline
,
name
=
"本级别"
,
bi_mode
=
"old"
,
max_
raw_len
=
1000
0
,
ma_params
=
(
5
,
20
,
120
),
verbose
=
False
):
def
__init__
(
self
,
kline
,
name
=
"本级别"
,
bi_mode
=
"old"
,
max_
xd_len
=
1
0
,
ma_params
=
(
5
,
20
,
120
),
verbose
=
False
):
"""
:param kline: list or pd.DataFrame
:param name: str
:param bi_mode: str
new 新笔;old 老笔;默认值为 old
:param max_
raw
_len: int
原始K线
序列的最大长度
:param max_
xd
_len: int
线段标记
序列的最大长度
:param ma_params: tuple of int
均线系统参数
:param verbose: bool
...
...
@@ -295,7 +295,7 @@ class KlineAnalyze:
self
.
name
=
name
self
.
verbose
=
verbose
self
.
bi_mode
=
bi_mode
self
.
max_
raw_len
=
max_raw
_len
self
.
max_
xd_len
=
max_xd
_len
self
.
ma_params
=
ma_params
self
.
kline_raw
=
[]
# 原始K线序列
self
.
kline_new
=
[]
# 去除包含关系的K线序列
...
...
@@ -316,7 +316,6 @@ class KlineAnalyze:
else
:
self
.
kline_raw
=
kline
self
.
kline_raw
=
self
.
kline_raw
[
-
self
.
max_raw_len
:]
self
.
symbol
=
self
.
kline_raw
[
0
][
'symbol'
]
self
.
start_dt
=
self
.
kline_raw
[
0
][
'dt'
]
self
.
end_dt
=
self
.
kline_raw
[
-
1
][
'dt'
]
...
...
@@ -550,7 +549,7 @@ class KlineAnalyze:
if
len
(
self
.
bi_list
)
<
4
:
return
self
.
xd_list
=
self
.
xd_list
[:
-
2
]
#
self.xd_list = self.xd_list[:-2]
if
len
(
self
.
xd_list
)
==
0
:
for
i
in
range
(
3
):
xd
=
dict
(
self
.
bi_list
[
i
])
...
...
@@ -562,6 +561,7 @@ class KlineAnalyze:
else
:
right_bi
=
[
x
for
x
in
self
.
bi_list
[
-
200
:]
if
x
[
'dt'
]
>=
self
.
xd_list
[
-
1
][
'dt'
]]
right_bi
=
[
x
for
x
in
self
.
bi_list
if
x
[
'dt'
]
>=
self
.
xd_list
[
-
1
][
'dt'
]]
xd_p
=
get_potential_xd
(
right_bi
)
for
xp
in
xd_p
:
xd
=
dict
(
xp
)
...
...
@@ -669,21 +669,16 @@ class KlineAnalyze:
self
.
end_dt
=
self
.
kline_raw
[
-
1
][
'dt'
]
self
.
latest_price
=
self
.
kline_raw
[
-
1
][
'close'
]
# 根据最大原始K线序列长度限制分析结果长度
if
len
(
self
.
kline_raw
)
>
self
.
max_raw_len
:
self
.
kline_raw
=
self
.
kline_raw
[
-
self
.
max_raw_len
:]
self
.
kline_new
=
self
.
kline_new
[
-
self
.
max_raw_len
:]
self
.
ma
=
self
.
ma
[
-
self
.
max_raw_len
:]
self
.
macd
=
self
.
macd
[
-
self
.
max_raw_len
:]
last_dt
=
self
.
kline_new
[
0
][
'dt'
]
if
len
(
self
.
xd_list
)
>
self
.
max_xd_len
:
last_dt
=
self
.
xd_list
[
-
self
.
max_xd_len
:][
0
][
'dt'
]
self
.
kline_raw
=
[
x
for
x
in
self
.
kline_raw
if
x
[
'dt'
]
>
last_dt
]
self
.
kline_new
=
[
x
for
x
in
self
.
kline_new
if
x
[
'dt'
]
>
last_dt
]
self
.
ma
=
[
x
for
x
in
self
.
ma
if
x
[
'dt'
]
>
last_dt
]
self
.
macd
=
[
x
for
x
in
self
.
macd
if
x
[
'dt'
]
>
last_dt
]
self
.
fx_list
=
[
x
for
x
in
self
.
fx_list
if
x
[
'dt'
]
>
last_dt
]
self
.
bi_list
=
[
x
for
x
in
self
.
bi_list
if
x
[
'dt'
]
>
last_dt
]
self
.
xd_list
=
[
x
for
x
in
self
.
xd_list
if
x
[
'dt'
]
>
last_dt
]
# self.fx_list = self.fx_list[-(self.max_raw_len // 2):]
# self.bi_list = self.bi_list[-(self.max_raw_len // 4):]
# self.xd_list = self.xd_list[-(self.max_raw_len // 8):]
if
self
.
verbose
:
print
(
"更新结束
\n\n
"
)
...
...
test/test_analyze.py
浏览文件 @
355c6eee
...
...
@@ -22,8 +22,8 @@ def test_ka_update():
kline1
=
kline
.
iloc
[:
2000
]
kline2
=
kline
.
iloc
[
2000
:]
ka1
=
KlineAnalyze
(
kline
,
name
=
"日线"
,
max_
raw_len
=
500
0
,
verbose
=
False
)
ka2
=
KlineAnalyze
(
kline1
,
name
=
"日线"
,
max_
raw_len
=
500
0
,
verbose
=
False
)
ka1
=
KlineAnalyze
(
kline
,
name
=
"日线"
,
max_
xd_len
=
1
0
,
verbose
=
False
)
ka2
=
KlineAnalyze
(
kline1
,
name
=
"日线"
,
max_
xd_len
=
1
0
,
verbose
=
False
)
for
_
,
row
in
kline2
.
iterrows
():
ka2
.
update
(
row
.
to_dict
())
...
...
@@ -36,7 +36,7 @@ def test_calculate_power():
file_kline
=
os
.
path
.
join
(
cur_path
,
"data/000001.SH_D.csv"
)
kline
=
pd
.
read_csv
(
file_kline
,
encoding
=
"utf-8"
)
kline
.
loc
[:,
"dt"
]
=
pd
.
to_datetime
(
kline
.
dt
)
ka
=
KlineAnalyze
(
kline
,
name
=
"日线"
,
max_
raw_len
=
500
0
,
verbose
=
False
)
ka
=
KlineAnalyze
(
kline
,
name
=
"日线"
,
max_
xd_len
=
1
0
,
verbose
=
False
)
# 测试 macd 力度
last_xd_power
=
ka
.
calculate_macd_power
(
start_dt
=
ka
.
xd_list
[
-
2
][
'dt'
],
end_dt
=
ka
.
xd_list
[
-
1
][
'dt'
],
...
...
@@ -59,7 +59,7 @@ def test_get_sub_section():
file_kline
=
os
.
path
.
join
(
cur_path
,
"data/000001.SH_D.csv"
)
kline
=
pd
.
read_csv
(
file_kline
,
encoding
=
"utf-8"
)
kline
.
loc
[:,
"dt"
]
=
pd
.
to_datetime
(
kline
.
dt
)
ka
=
KlineAnalyze
(
kline
,
name
=
"日线"
,
max_
raw_len
=
200
0
,
verbose
=
False
)
ka
=
KlineAnalyze
(
kline
,
name
=
"日线"
,
max_
xd_len
=
1
0
,
verbose
=
False
)
sub_kn
=
ka
.
get_sub_section
(
ka
.
fx_list
[
-
2
][
'dt'
],
ka
.
fx_list
[
-
1
][
'dt'
],
mode
=
'kn'
,
is_last
=
True
)
assert
sub_kn
[
0
][
'dt'
]
==
ka
.
fx_list
[
-
2
][
'dt'
]
and
sub_kn
[
-
1
][
'dt'
]
==
ka
.
fx_list
[
-
1
][
'dt'
]
...
...
@@ -78,7 +78,7 @@ def test_kline_analyze():
file_kline
=
os
.
path
.
join
(
cur_path
,
"data/000001.SH_D.csv"
)
kline
=
pd
.
read_csv
(
file_kline
,
encoding
=
"utf-8"
)
kline
.
loc
[:,
"dt"
]
=
pd
.
to_datetime
(
kline
.
dt
)
ka
=
KlineAnalyze
(
kline
,
name
=
"日线"
,
max_
raw_len
=
200
0
,
verbose
=
False
)
ka
=
KlineAnalyze
(
kline
,
name
=
"日线"
,
max_
xd_len
=
1
0
,
verbose
=
False
)
# 测试绘图
file_img
=
"kline.png"
...
...
@@ -111,7 +111,7 @@ def test_bei_chi():
file_kline
=
os
.
path
.
join
(
cur_path
,
"data/000001.SH_D.csv"
)
kline
=
pd
.
read_csv
(
file_kline
,
encoding
=
"utf-8"
)
kline
.
loc
[:,
"dt"
]
=
pd
.
to_datetime
(
kline
.
dt
)
ka
=
KlineAnalyze
(
kline
,
name
=
"日线"
,
max_
raw_len
=
200
0
,
verbose
=
False
)
ka
=
KlineAnalyze
(
kline
,
name
=
"日线"
,
max_
xd_len
=
1
0
,
verbose
=
False
)
bi1
=
{
"start_dt"
:
ka
.
bi_list
[
-
11
][
'dt'
],
"end_dt"
:
ka
.
bi_list
[
-
10
][
'dt'
],
"direction"
:
"down"
}
bi2
=
{
"start_dt"
:
ka
.
bi_list
[
-
13
][
'dt'
],
"end_dt"
:
ka
.
bi_list
[
-
12
][
'dt'
],
"direction"
:
"down"
}
...
...
@@ -127,7 +127,7 @@ def test_update_ta():
file_kline
=
os
.
path
.
join
(
cur_path
,
"data/000001.SH_D.csv"
)
kline
=
pd
.
read_csv
(
file_kline
,
encoding
=
"utf-8"
)
kline
.
loc
[:,
"dt"
]
=
pd
.
to_datetime
(
kline
.
dt
)
ka
=
KlineAnalyze
(
kline
,
name
=
"日线"
,
max_
raw_len
=
200
0
,
verbose
=
False
)
ka
=
KlineAnalyze
(
kline
,
name
=
"日线"
,
max_
xd_len
=
1
0
,
verbose
=
False
)
ma_x1
=
dict
(
ka
.
ma
[
-
1
])
macd_x1
=
dict
(
ka
.
macd
[
-
1
])
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录