Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
zengbin93
czsc
提交
f0b85abf
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,发现更多精彩内容 >>
提交
f0b85abf
编写于
7月 27, 2020
作者:
Z
zengbin93
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
0.5.1 优化初始化
上级
860e54bd
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
17 addition
and
13 deletion
+17
-13
czsc/analyze.py
czsc/analyze.py
+17
-13
未找到文件。
czsc/analyze.py
浏览文件 @
f0b85abf
...
...
@@ -164,13 +164,16 @@ class KlineAnalyze:
# self.fd_list_l2 = []
# self.fd_list_l3 = []
# 根据输入K线初始化
if
isinstance
(
kline
,
pd
.
DataFrame
):
columns
=
kline
.
columns
.
to_list
()
bars
=
[{
k
:
v
for
k
,
v
in
zip
(
columns
,
row
)}
for
row
in
kline
.
values
]
self
.
kline_raw
=
[{
k
:
v
for
k
,
v
in
zip
(
columns
,
row
)}
for
row
in
kline
.
values
]
else
:
bars
=
kline
for
bar
in
bars
:
self
.
update
(
bar
)
self
.
kline_raw
=
kline
self
.
_update_kline_new
()
self
.
_update_fx_list
()
self
.
_update_bi_list
()
self
.
_update_xd_list
()
def
_update_kline_new
(
self
):
"""更新去除包含关系的K线序列
...
...
@@ -197,13 +200,14 @@ class KlineAnalyze:
'direction': 'down'}
"""
if
len
(
self
.
kline_new
)
<
4
:
for
x
in
self
.
kline_raw
:
for
x
in
self
.
kline_raw
[:
4
]
:
self
.
kline_new
.
append
(
dict
(
x
))
return
# 新K线只会对最后一个去除包含关系K线的结果产生影响
self
.
kline_new
=
self
.
kline_new
[:
-
2
]
right_k
=
[
x
for
x
in
self
.
kline_raw
if
x
[
'dt'
]
>
self
.
kline_new
[
-
1
][
'dt'
]]
if
len
(
right_k
)
==
0
:
return
for
k
in
right_k
:
k
=
dict
(
k
)
...
...
@@ -318,8 +322,8 @@ class KlineAnalyze:
if
len
(
self
.
fx_list
)
<
2
:
return
if
len
(
self
.
bi_list
)
==
0
:
for
fx
in
self
.
fx_list
:
if
len
(
self
.
bi_list
)
<
2
:
for
fx
in
self
.
fx_list
[:
2
]
:
bi
=
dict
(
fx
)
bi
[
'bi'
]
=
bi
.
pop
(
'fx'
)
self
.
bi_list
.
append
(
bi
)
...
...
@@ -406,7 +410,7 @@ class KlineAnalyze:
if
len
(
self
.
bi_list
)
<
4
:
return
if
len
(
self
.
xd_list
)
==
0
:
if
len
(
self
.
xd_list
)
<
3
:
for
i
in
range
(
3
):
xd
=
dict
(
self
.
bi_list
[
i
])
xd
[
'xd'
]
=
xd
.
pop
(
'bi'
)
...
...
@@ -510,7 +514,7 @@ class KlineAnalyze:
if
self
.
verbose
:
print
(
"更新结束
\n\n
"
)
def
to_df
(
self
,
ma_params
=
(
5
,
20
),
use_macd
=
Tru
e
,
use_boll
=
False
,
max_count
=
1000
):
def
to_df
(
self
,
ma_params
=
(
5
,
20
),
use_macd
=
Fals
e
,
use_boll
=
False
,
max_count
=
1000
):
"""整理成 df 输出
:param ma_params: tuple of int
...
...
@@ -521,9 +525,9 @@ class KlineAnalyze:
:return: pd.DataFrame
"""
bars
=
self
.
kline_raw
[
-
max_count
:]
fx_list
=
{
x
[
"dt"
]:
{
"fx_mark"
:
x
[
"fx_mark"
],
"fx"
:
x
[
'fx'
]}
for
x
in
self
.
fx_list
}
bi_list
=
{
x
[
"dt"
]:
{
"fx_mark"
:
x
[
"fx_mark"
],
"bi"
:
x
[
'bi'
]}
for
x
in
self
.
bi_list
}
xd_list
=
{
x
[
"dt"
]:
{
"fx_mark"
:
x
[
"fx_mark"
],
"xd"
:
x
[
'xd'
]}
for
x
in
self
.
xd_list
}
fx_list
=
{
x
[
"dt"
]:
{
"fx_mark"
:
x
[
"fx_mark"
],
"fx"
:
x
[
'fx'
]}
for
x
in
self
.
fx_list
[
-
(
max_count
//
2
):]
}
bi_list
=
{
x
[
"dt"
]:
{
"fx_mark"
:
x
[
"fx_mark"
],
"bi"
:
x
[
'bi'
]}
for
x
in
self
.
bi_list
[
-
(
max_count
//
4
):]
}
xd_list
=
{
x
[
"dt"
]:
{
"fx_mark"
:
x
[
"fx_mark"
],
"xd"
:
x
[
'xd'
]}
for
x
in
self
.
xd_list
[
-
(
max_count
//
8
):]
}
results
=
[]
for
k
in
bars
:
k
[
'fx_mark'
],
k
[
'fx'
],
k
[
'bi'
],
k
[
'xd'
]
=
"o"
,
None
,
None
,
None
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录