Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
zengbin93
czsc
提交
318807ff
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 搜索 >>
提交
318807ff
编写于
6月 23, 2020
作者:
Z
zengbin93
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
0.4.2 优化性能,彻底清除deepcopy,优化线段标记
上级
2aafe8bd
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
59 addition
and
30 deletion
+59
-30
czsc/__init__.py
czsc/__init__.py
+1
-1
czsc/analyze.py
czsc/analyze.py
+58
-29
未找到文件。
czsc/__init__.py
浏览文件 @
318807ff
...
...
@@ -7,7 +7,7 @@ from .solid import SolidAnalyze
from
.solid
import
is_in_tolerance
,
is_first_buy
,
is_first_sell
,
is_second_buy
,
\
is_second_sell
,
is_third_buy
,
is_third_sell
,
is_xd_buy
,
is_xd_sell
__version__
=
"0.4.
1
"
__version__
=
"0.4.
2
"
__author__
=
"zengbin93"
__email__
=
"zeng_bin8888@163.com"
...
...
czsc/analyze.py
浏览文件 @
318807ff
# coding: utf-8
import
traceback
from
copy
import
deepcopy
import
pandas
as
pd
from
functools
import
lru_cache
...
...
@@ -292,19 +291,34 @@ class KlineAnalyze(object):
raise
ValueError
k_new
.
pop
(
-
1
)
k_new
.
append
({
"symbol"
:
k
[
'symbol'
],
"dt"
:
k
[
'dt'
],
"open"
:
k
[
'open'
],
"close"
:
k
[
'close'
],
"high"
:
last_h
,
"low"
:
last_l
,
"vol"
:
k
[
'vol'
],
"fx_mark"
:
k
[
'fx_mark'
],
"fx"
:
k
[
'fx'
],
"bi"
:
k
[
'bi'
],
"xd"
:
k
[
'xd'
],
})
if
k
[
'open'
]
>=
k
[
'close'
]:
k_new
.
append
({
"symbol"
:
k
[
'symbol'
],
"dt"
:
k
[
'dt'
],
"open"
:
last_h
,
"close"
:
last_l
,
"high"
:
last_h
,
"low"
:
last_l
,
"vol"
:
k
[
'vol'
],
"fx_mark"
:
k
[
'fx_mark'
],
"fx"
:
k
[
'fx'
],
"bi"
:
k
[
'bi'
],
"xd"
:
k
[
'xd'
],
})
else
:
k_new
.
append
({
"symbol"
:
k
[
'symbol'
],
"dt"
:
k
[
'dt'
],
"open"
:
last_l
,
"close"
:
last_h
,
"high"
:
last_h
,
"low"
:
last_l
,
"vol"
:
k
[
'vol'
],
"fx_mark"
:
k
[
'fx_mark'
],
"fx"
:
k
[
'fx'
],
"bi"
:
k
[
'bi'
],
"xd"
:
k
[
'xd'
],
})
else
:
# 无包含关系,更新 K 线
k_new
.
append
({
...
...
@@ -367,21 +381,31 @@ class KlineAnalyze(object):
p
=
[
seq
[
0
]]
i
=
1
while
i
<
len
(
seq
):
s1
=
p
[
-
1
]
s2
=
seq
[
i
]
if
fx_mark
==
'd'
:
# 对于底,前面的高于后面的,只保留后面的
if
s1
[
mode
]
>=
s2
[
mode
]:
p
.
pop
(
-
1
)
p
.
append
(
s2
)
s1
=
seq
[
i
-
1
]
s2
=
seq
[
i
]
if
i
==
len
(
seq
)
-
1
:
p
.
append
(
s2
)
else
:
s3
=
seq
[
i
+
1
]
if
s1
[
mode
]
>
s2
[
mode
]
<
s3
[
mode
]:
p
.
append
(
s2
)
elif
fx_mark
==
'g'
:
# 对于顶,前面的低于后面的,只保留后面的
if
s1
[
mode
]
<=
s2
[
mode
]:
p
.
pop
(
-
1
)
p
.
append
(
s2
)
s1
=
seq
[
i
-
1
]
s2
=
seq
[
i
]
if
i
==
len
(
seq
)
-
1
:
p
.
append
(
s2
)
else
:
s3
=
seq
[
i
+
1
]
if
s1
[
mode
]
<
s2
[
mode
]
>
s3
[
mode
]:
p
.
append
(
s2
)
else
:
raise
ValueError
i
+=
1
return
p
def
__handle_hist_bi
(
self
):
...
...
@@ -415,9 +439,11 @@ class KlineAnalyze(object):
# 确认哪些分型可以构成笔
bi
=
[]
for
i
in
range
(
len
(
fx_p
)):
k
=
deepcopy
(
fx_p
[
i
])
k
[
'bi'
]
=
k
[
'fx'
]
del
k
[
'fx'
]
k
=
{
"dt"
:
fx_p
[
i
][
'dt'
],
"fx_mark"
:
fx_p
[
i
][
'fx_mark'
],
"bi"
:
fx_p
[
i
][
'fx'
],
}
if
len
(
bi
)
==
0
:
bi
.
append
(
k
)
else
:
...
...
@@ -434,7 +460,7 @@ class KlineAnalyze(object):
bi
.
pop
(
-
1
)
continue
# 一笔的顶底分型之间至少包含5根K线
(新笔只需要4根)
# 一笔的顶底分型之间至少包含5根K线
k_num
=
[
x
for
x
in
kn
if
k0
[
'dt'
]
<=
x
[
'dt'
]
<=
k
[
'dt'
]]
if
len
(
k_num
)
>=
min_k_num
:
bi
.
append
(
k
)
...
...
@@ -477,9 +503,11 @@ class KlineAnalyze(object):
xd
=
[]
for
i
in
range
(
len
(
bi_p
)):
k
=
deepcopy
(
bi_p
[
i
])
k
[
'xd'
]
=
k
[
'bi'
]
del
k
[
'bi'
]
k
=
{
"dt"
:
bi_p
[
i
][
'dt'
],
"fx_mark"
:
bi_p
[
i
][
'fx_mark'
],
"xd"
:
bi_p
[
i
][
'bi'
],
}
if
len
(
xd
)
==
0
:
xd
.
append
(
k
)
else
:
...
...
@@ -496,6 +524,7 @@ class KlineAnalyze(object):
(
k0
[
'fx_mark'
]
==
'd'
and
k
[
'xd'
]
<=
k0
[
'xd'
]):
xd
.
pop
(
-
1
)
continue
bi_m
=
[
x
for
x
in
self
.
bi
if
k0
[
'dt'
]
<=
x
[
'dt'
]
<=
k
[
'dt'
]]
bi_r
=
[
x
for
x
in
self
.
bi
if
x
[
'dt'
]
>=
k
[
'dt'
]]
# 一线段内部至少三笔
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录