Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
zengbin93
czsc
提交
caf5bdb8
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 搜索 >>
提交
caf5bdb8
编写于
9月 02, 2020
作者:
Z
zengbin93
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
0.5.3 新增井的识别
上级
f5b11078
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
106 addition
and
0 deletion
+106
-0
czsc/analyze.py
czsc/analyze.py
+32
-0
czsc/signals.py
czsc/signals.py
+74
-0
未找到文件。
czsc/analyze.py
浏览文件 @
caf5bdb8
...
...
@@ -850,3 +850,35 @@ class KlineAnalyze:
raise
ValueError
return
[
x
for
x
in
points
if
end_dt
>=
x
[
'dt'
]
>=
start_dt
]
def
calculate_macd_power
(
self
,
start_dt
:
datetime
,
end_dt
:
datetime
,
mode
=
'bi'
,
direction
=
"up"
):
"""计算走势段(start_dt ~ end_dt)的力度
:param start_dt: datetime
走势开始时间
:param end_dt: datetime
走势结束时间
:param mode: str
分段走势类型,默认值为 bi,可选值 ['bi', 'xd'],分别表示笔分段走势和线段分段走势
:param direction: str
线段分段走势计算力度需要指明方向,可选值 ['up', 'down']
:return: float
走势力度
"""
fd_macd
=
[
x
for
x
in
self
.
macd
if
x
[
'dt'
]
>=
start_dt
]
fd_macd
=
[
x
for
x
in
fd_macd
if
end_dt
>=
x
[
'dt'
]]
if
mode
==
'bi'
:
power
=
sum
([
abs
(
x
[
'macd'
])
for
x
in
fd_macd
])
elif
mode
==
'xd'
:
if
direction
==
'up'
:
power
=
sum
([
abs
(
x
[
'macd'
])
for
x
in
fd_macd
if
x
[
'macd'
]
>
0
])
elif
direction
==
'down'
:
power
=
sum
([
abs
(
x
[
'macd'
])
for
x
in
fd_macd
if
x
[
'macd'
]
<
0
])
else
:
raise
ValueError
else
:
raise
ValueError
return
power
czsc/signals.py
浏览文件 @
caf5bdb8
# coding: utf-8
from
.analyze
import
KlineAnalyze
,
find_zs
def
check_jing
(
fd1
,
fd2
,
fd3
,
fd4
,
fd5
):
"""检查最近5个分段走势是否构成井
井的定义:
12345,五段,是构造井的基本形态,形成井的位置肯定是5,而5出井的
前提条件是对于向上5至少比3和1其中之一高,向下反过来; 并且,234
构成一个中枢。
井只有两类,大井和小井(以向上为例):
大井对应的形式是:12345向上,5最高3次之1最低,力度上1大于3,3大于5;
小井对应的形式是:
1:12345向上,3最高5次之1最低,力度上5的力度比1小,注意这时候
不需要再考虑5和3的关系了,因为5比3低,所以不需要考虑力度。
2:12345向上,5最高3次之1最低,力度上1大于5,5大于3。
小井的构造,关键是满足5一定至少大于1、3中的一个。
注意有一种情况不归为井:就是12345向上,1的力度最小,5的力度次之,3的力度最大此类不算井,
因为345后面必然还有走势在67的时候才能再判断,个中道理各位好好体会。
fd 为 dict 对象,表示一段走势,可以是笔、线段,样例如下:
fd = {
"start_dt": "",
"end_dt": "",
"power": 0, # 力度
"k_nums": 0,
"fx_nums": 0,
"bi_nums": 0,
"direction": "up",
"high": 0,
"low": 0,
"mode": "bi"
}
"""
assert
fd1
[
'direction'
]
==
fd3
[
'direction'
]
==
fd5
[
'direction'
]
assert
fd2
[
'direction'
]
==
fd4
[
'direction'
]
direction
=
fd1
[
'direction'
]
zs_g
=
min
(
fd2
[
'high'
],
fd3
[
'high'
],
fd4
[
'high'
])
zs_d
=
max
(
fd2
[
'low'
],
fd3
[
'low'
],
fd4
[
'low'
])
jing
=
"没有出井"
if
zs_d
<
zs_g
:
if
direction
==
'up'
and
fd5
[
"high"
]
>
min
(
fd3
[
'high'
],
fd1
[
'high'
]):
# 大井对应的形式是:12345向上,5最高3次之1最低,力度上1大于3,3大于5
if
fd5
[
"high"
]
>
fd3
[
'high'
]
>
fd1
[
'high'
]
and
fd5
[
'power'
]
<
fd3
[
'power'
]
<
fd1
[
'power'
]:
jing
=
"向上大井"
# 第一种小井:12345向上,3最高5次之1最低,力度上5的力度比1小
if
fd1
[
'high'
]
<
fd5
[
'high'
]
<
fd3
[
'high'
]
and
fd5
[
'power'
]
<
fd1
[
'power'
]:
jing
=
"向上小井"
# 第二种小井:12345向上,5最高3次之1最低,力度上1大于5,5大于3
if
fd5
[
"high"
]
>
fd3
[
'high'
]
>
fd1
[
'high'
]
and
fd1
[
'power'
]
>
fd5
[
'power'
]
>
fd3
[
'power'
]:
jing
=
"向上小井"
if
direction
==
'down'
and
fd5
[
"low"
]
<
max
(
fd3
[
'low'
],
fd1
[
'low'
]):
# 大井对应的形式是:12345向下,5最低3次之1最高,力度上1大于3,3大于5;
if
fd5
[
'low'
]
<
fd3
[
'low'
]
<
fd1
[
'low'
]
and
fd5
[
'power'
]
<
fd3
[
'power'
]
<
fd1
[
'power'
]:
jing
=
"向下大井"
# 第一种小井:12345向下,3最低5次之1最高,力度上5的力度比1小
if
fd1
[
"low"
]
>
fd5
[
'low'
]
>
fd3
[
'low'
]
and
fd5
[
'power'
]
<
fd1
[
'power'
]:
jing
=
"向下小井"
# 第二种小井:12345向下,5最低3次之1最高,力度上1大于5,5大于3
if
fd3
[
"low"
]
>
fd5
[
'low'
]
>
fd1
[
'low'
]
and
fd1
[
'power'
]
>
fd5
[
'power'
]
>
fd3
[
'power'
]:
jing
=
"向下小井"
return
jing
def
get_fx_signals
(
ka
):
"""计算分型特征"""
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录