Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
zengbin93
czsc
提交
e578ed49
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 搜索 >>
提交
e578ed49
编写于
7月 26, 2020
作者:
Z
zengbin93
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
0.5.1 优化笔和线段识别
上级
85667580
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
34 addition
and
24 deletion
+34
-24
czsc/analyze.py
czsc/analyze.py
+34
-24
未找到文件。
czsc/analyze.py
浏览文件 @
e578ed49
...
...
@@ -196,21 +196,22 @@ class KlineAnalyze:
'is_end': True,
'direction': 'down'}
"""
if
len
(
self
.
kline_new
)
<
3
:
last_k
=
self
.
kline_raw
[
-
1
]
new_k
=
dict
(
last_k
)
new_k
[
'direction'
]
=
"up"
self
.
kline_new
.
append
(
new_k
)
if
len
(
self
.
kline_new
)
<
4
:
for
x
in
self
.
kline_raw
:
self
.
kline_new
.
append
(
dict
(
x
))
return
# 新K线只会对最后一个去除包含关系K线的结果产生影响
self
.
kline_new
=
self
.
kline_new
[:
-
1
]
self
.
kline_new
=
self
.
kline_new
[:
-
2
]
right_k
=
[
x
for
x
in
self
.
kline_raw
if
x
[
'dt'
]
>
self
.
kline_new
[
-
1
][
'dt'
]]
for
k
in
right_k
:
k
=
dict
(
k
)
last_kn
=
self
.
kline_new
[
-
1
]
direction
=
last_kn
[
'direction'
]
if
self
.
kline_new
[
-
1
][
'high'
]
>
self
.
kline_new
[
-
2
][
'high'
]:
direction
=
"up"
else
:
direction
=
"down"
# 判断是否存在包含关系
cur_h
,
cur_l
=
k
[
'high'
],
k
[
'low'
]
...
...
@@ -233,14 +234,6 @@ class KlineAnalyze:
k
.
update
({
"open"
:
last_h
,
"close"
:
last_l
})
else
:
k
.
update
({
"open"
:
last_l
,
"close"
:
last_h
})
# 加上 direction 信息
if
k
[
'high'
]
>
self
.
kline_new
[
-
1
][
'high'
]:
k
[
'direction'
]
=
"up"
elif
k
[
'low'
]
<
self
.
kline_new
[
-
1
][
"low"
]:
k
[
'direction'
]
=
"down"
else
:
raise
ValueError
self
.
kline_new
.
append
(
k
)
if
self
.
verbose
:
...
...
@@ -358,6 +351,12 @@ class KlineAnalyze:
print
(
f
"新增笔标记:
{
bi
}
"
)
self
.
bi_list
.
append
(
bi
)
if
(
self
.
bi_list
[
-
1
][
'fx_mark'
]
==
'd'
and
self
.
kline_new
[
-
1
][
'low'
]
<
self
.
bi_list
[
-
1
][
'bi'
])
\
or
(
self
.
bi_list
[
-
1
][
'fx_mark'
]
==
'g'
and
self
.
kline_new
[
-
1
][
'high'
]
>
self
.
bi_list
[
-
1
][
'bi'
]):
if
self
.
verbose
:
print
(
f
"最后一个笔标记无效,
{
self
.
bi_list
[
-
1
]
}
"
)
self
.
bi_list
.
pop
(
-
1
)
@
staticmethod
def
_make_standard_seq
(
bi_seq
):
"""计算标准特征序列
...
...
@@ -448,15 +447,26 @@ class KlineAnalyze:
print
(
f
"
{
last_xd
[
'dt'
]
}
-
{
xd
[
'dt'
]
}
之间笔标记数量少于4,跳过"
)
continue
else
:
if
len
(
bi_inside
)
>=
6
:
self
.
xd_list
.
append
(
xd
)
continue
bi_r
=
[
x
for
x
in
right_bi
if
x
[
'dt'
]
>=
xd
[
'dt'
]]
assert
bi_r
[
1
][
'fx_mark'
]
==
bi_inside
[
-
2
][
'fx_mark'
],
f
"
{
bi_r
[
1
]
}
-
{
bi_inside
[
-
2
]
}
"
if
(
bi_r
[
1
][
'fx_mark'
]
==
"g"
and
bi_r
[
1
][
'bi'
]
<
bi_inside
[
-
2
][
'bi'
])
\
or
(
bi_r
[
1
][
'fx_mark'
]
==
"d"
and
bi_r
[
1
][
'bi'
]
>
bi_inside
[
-
2
][
'bi'
]):
if
len
(
bi_inside
)
>
4
:
if
self
.
verbose
:
print
(
f
"新增线段标记(笔标记数量大于4):
{
xd
}
"
)
self
.
xd_list
.
append
(
xd
)
else
:
bi_r
=
[
x
for
x
in
right_bi
if
x
[
'dt'
]
>=
xd
[
'dt'
]]
assert
bi_r
[
1
][
'fx_mark'
]
==
bi_inside
[
-
2
][
'fx_mark'
],
f
"
{
bi_r
[
1
]
}
-
{
bi_inside
[
-
2
]
}
"
# 第一种情况:没有缺口
if
(
bi_r
[
1
][
'fx_mark'
]
==
"g"
and
bi_r
[
1
][
'bi'
]
>
bi_inside
[
-
3
][
'bi'
])
\
or
(
bi_r
[
1
][
'fx_mark'
]
==
"d"
and
bi_r
[
1
][
'bi'
]
<
bi_inside
[
-
3
][
'bi'
]):
if
self
.
verbose
:
print
(
f
"新增线段标记(第一种情况):
{
xd
}
"
)
self
.
xd_list
.
append
(
xd
)
# 第二种情况:有缺口
else
:
if
(
bi_r
[
1
][
'fx_mark'
]
==
"g"
and
bi_r
[
1
][
'bi'
]
<
bi_inside
[
-
2
][
'bi'
])
\
or
(
bi_r
[
1
][
'fx_mark'
]
==
"d"
and
bi_r
[
1
][
'bi'
]
>
bi_inside
[
-
2
][
'bi'
]):
if
self
.
verbose
:
print
(
f
"新增线段标记(第二种情况):
{
xd
}
"
)
self
.
xd_list
.
append
(
xd
)
if
(
self
.
xd_list
[
-
1
][
'fx_mark'
]
==
'd'
and
self
.
kline_new
[
-
1
][
'low'
]
<
self
.
xd_list
[
-
1
][
'xd'
])
\
or
(
self
.
xd_list
[
-
1
][
'fx_mark'
]
==
'g'
and
self
.
kline_new
[
-
1
][
'high'
]
>
self
.
xd_list
[
-
1
][
'xd'
]):
...
...
@@ -500,7 +510,7 @@ class KlineAnalyze:
if
self
.
verbose
:
print
(
"更新结束
\n\n
"
)
def
to_df
(
self
,
ma_params
=
(
5
,
20
),
use_macd
=
True
,
use_boll
=
False
,
max_count
=
5
000
):
def
to_df
(
self
,
ma_params
=
(
5
,
20
),
use_macd
=
True
,
use_boll
=
False
,
max_count
=
1
000
):
"""整理成 df 输出
:param ma_params: tuple of int
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录