Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
zengbin93
czsc
提交
f5a1d4ab
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 搜索 >>
提交
f5a1d4ab
编写于
3月 16, 2020
作者:
Z
zengbin93
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
修改线段识别方法
上级
5a10ec07
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
39 addition
and
3 deletion
+39
-3
chan/__init__.py
chan/__init__.py
+1
-1
chan/analyze.py
chan/analyze.py
+38
-2
未找到文件。
chan/__init__.py
浏览文件 @
f5a1d4ab
...
...
@@ -4,7 +4,7 @@ from .analyze import KlineAnalyze, SolidAnalyze
from
.ta
import
ma
,
macd
,
boll
__version__
=
"0.2.1
4
"
__version__
=
"0.2.1
5
"
__author__
=
"zengbin93"
__email__
=
"zeng_bin8888@163.com"
...
...
chan/analyze.py
浏览文件 @
f5a1d4ab
...
...
@@ -340,7 +340,7 @@ class KlineAnalyze(object):
(
p1
[
'fx_mark'
]
==
"d"
and
p1
[
'xd'
]
>
p3
[
'xd'
]):
xd_v
.
pop
(
-
1
)
xd_v
.
append
(
p3
)
elif
len
(
bi_m
)
==
4
:
elif
len
(
bi_m
)
==
4
and
len
(
bi_r
)
>=
2
:
# 两个连续线段标记之间只有三笔的处理
lp2
=
bi_m
[
-
2
]
rp2
=
bi_r
[
1
]
...
...
@@ -379,9 +379,45 @@ class KlineAnalyze(object):
# xd_v.pop()
return
xd_v
def
__get_potential_xd_v2
(
self
):
"""识别线段标记:从已经识别出来的笔中识别线段
划分线段的步骤:
(1)确定所有符合标准的笔标记。
(2)如果前后两个笔标记是同一性质的,对于顶,前面的低于后面的,只保留后面的,前面那个可以忽略掉;对于底,
前面的高于后面的,只保留后面的,前面那个可以忽略掉。不满足上面情况的,例如相等的,都可以先保留。
(3)经过步骤(2)的处理后,余下的笔标记,如果相邻的是顶和底,那么这就可以划为线段。
"""
bi_p
=
sorted
(
deepcopy
(
self
.
bi
),
key
=
lambda
x
:
x
[
'dt'
],
reverse
=
False
)
# 确认哪些笔标记可以构成线段
xd
=
[]
for
i
in
range
(
len
(
bi_p
)):
k
=
deepcopy
(
bi_p
[
i
])
k
[
'xd'
]
=
k
[
'bi'
]
del
k
[
'bi'
]
if
len
(
xd
)
==
0
:
xd
.
append
(
k
)
else
:
k0
=
xd
[
-
1
]
if
k0
[
'fx_mark'
]
==
k
[
'fx_mark'
]:
if
(
k0
[
'fx_mark'
]
==
"g"
and
k0
[
'xd'
]
<
k
[
'xd'
])
or
\
(
k0
[
'fx_mark'
]
==
"d"
and
k0
[
'xd'
]
>
k
[
'xd'
]):
xd
.
pop
(
-
1
)
xd
.
append
(
k
)
else
:
# 确保相邻两个顶底之间顶大于底
if
(
k0
[
'fx_mark'
]
==
'g'
and
k
[
'xd'
]
>=
k0
[
'xd'
])
or
\
(
k0
[
'fx_mark'
]
==
'd'
and
k
[
'xd'
]
<=
k0
[
'xd'
]):
xd
.
pop
(
-
1
)
continue
xd
.
append
(
k
)
return
xd
def
_find_xd
(
self
):
try
:
xd
=
self
.
__get_potential_xd
()
# xd = self.__get_potential_xd()
# xd = self.__get_valid_xd(xd)
xd
=
self
.
__get_potential_xd_v2
()
xd
=
self
.
__get_valid_xd
(
xd
)
xd
=
self
.
__handle_last_xd
(
xd
)
dts
=
[
x
[
'dt'
]
for
x
in
xd
]
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录