Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
zengbin93
czsc
提交
269decdd
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,发现更多精彩内容 >>
提交
269decdd
编写于
4月 29, 2020
作者:
Z
zengbin93
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
0.3.1 优化
上级
0b14bde6
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
23 addition
and
5 deletion
+23
-5
chan/analyze.py
chan/analyze.py
+23
-5
未找到文件。
chan/analyze.py
浏览文件 @
269decdd
...
...
@@ -2,8 +2,9 @@
import
traceback
from
copy
import
deepcopy
import
pandas
as
pd
from
functools
import
lru_cache
from
.ta
import
macd
from
.ta
import
macd
,
ma
def
is_bei_chi
(
ka
,
zs1
,
zs2
,
direction
=
"down"
,
mode
=
"bi"
,
adjust
=
0.9
):
...
...
@@ -28,8 +29,12 @@ def is_bei_chi(ka, zs1, zs2, direction="down", mode="bi", adjust=0.9):
:return:
"""
assert
zs1
[
0
]
>
zs2
[
0
],
"zs1 必须是最近的走势,用于比较;zs2 必须是较前的走势,被比较。"
df
=
pd
.
DataFrame
(
ka
.
kline
)
df
=
macd
(
df
)
assert
zs1
[
0
]
<
zs1
[
1
],
"走势的时间区间定义错误,必须满足 zs[0] < zs[1]"
assert
zs2
[
0
]
<
zs2
[
1
],
"走势的时间区间定义错误,必须满足 zs[0] < zs[1]"
# df = pd.DataFrame(deepcopy(ka.kline))
# df = macd(df)
df
=
create_df
(
ka
)
k1
=
df
[(
df
[
'dt'
]
>=
zs1
[
0
])
&
(
df
[
'dt'
]
<=
zs1
[
1
])]
k2
=
df
[(
df
[
'dt'
]
>=
zs2
[
0
])
&
(
df
[
'dt'
]
<=
zs2
[
1
])]
...
...
@@ -37,6 +42,7 @@ def is_bei_chi(ka, zs1, zs2, direction="down", mode="bi", adjust=0.9):
if
mode
==
'bi'
:
macd_sum1
=
sum
([
abs
(
x
)
for
x
in
k1
.
macd
])
macd_sum2
=
sum
([
abs
(
x
)
for
x
in
k2
.
macd
])
# print("bi: ", macd_sum1, macd_sum2)
if
macd_sum1
<
macd_sum2
*
adjust
:
bc
=
True
...
...
@@ -49,6 +55,7 @@ def is_bei_chi(ka, zs1, zs2, direction="down", mode="bi", adjust=0.9):
macd_sum2
=
sum
([
abs
(
x
)
for
x
in
k2
.
macd
if
x
>
0
])
else
:
raise
ValueError
(
'direction value error'
)
# print("xd: ", macd_sum1, macd_sum2)
if
macd_sum1
<
macd_sum2
*
adjust
:
bc
=
True
...
...
@@ -88,16 +95,26 @@ def down_zs_number(ka):
return
zs_num
@
lru_cache
(
maxsize
=
64
)
def
is_macd_cross
(
ka
,
direction
=
"up"
):
"""判断macd的向上金叉、向下死叉"""
df
=
pd
.
DataFrame
(
ka
.
kline
)
df
=
macd
(
df
)
# df = pd.DataFrame(ka.kline)
# df = macd(df)
df
=
create_df
(
ka
)
if
(
direction
==
"up"
and
df
.
iloc
[
-
1
][
'diff'
]
>
df
.
iloc
[
-
1
][
'dea'
])
\
or
(
direction
==
"down"
and
df
.
iloc
[
-
1
][
'diff'
]
<
df
.
iloc
[
-
1
][
'dea'
]):
return
True
return
False
@
lru_cache
(
maxsize
=
64
)
def
create_df
(
ka
,
ma_params
=
(
5
,
20
,
120
,
250
)):
df
=
pd
.
DataFrame
(
deepcopy
(
ka
.
kline
))
df
=
macd
(
df
)
df
=
ma
(
df
,
params
=
ma_params
)
return
df
class
KlineAnalyze
(
object
):
def
__init__
(
self
,
kline
,
bi_mode
=
"new"
,
xd_mode
=
"loose"
,
handle_last
=
True
):
"""
...
...
@@ -334,6 +351,7 @@ class KlineAnalyze(object):
bi
.
append
(
k
)
# 笔标记后出现新高或新低,则这个笔标记不成立
last_bi
=
bi
[
-
1
]
last_k
=
self
.
kline_new
[
-
1
]
if
(
last_bi
[
'fx_mark'
]
==
'd'
and
last_k
[
'low'
]
<
last_bi
[
'bi'
])
\
or
(
last_bi
[
'fx_mark'
]
==
'g'
and
last_k
[
'high'
]
>
last_bi
[
'bi'
]):
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录