Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
zengbin93
czsc
提交
ef640447
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 搜索 >>
提交
ef640447
编写于
8月 30, 2020
作者:
Z
zengbin93
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
0.5.3 新增聚宽K线获取
上级
7831c571
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
26 addition
and
59 deletion
+26
-59
examples/use_czsc_with_jq.py
examples/use_czsc_with_jq.py
+26
-59
未找到文件。
examples/use_czsc_with_jq.py
浏览文件 @
ef640447
# coding: utf-8
import
json
import
requests
import
pandas
as
pd
import
sys
sys
.
path
.
insert
(
0
,
".."
)
sys
.
path
.
insert
(
0
,
"."
)
from
datetime
import
datetime
from
czsc
import
KlineAnalyze
from
czsc.data.jq
import
get_kline
# 聚宽数据 API
url
=
"https://dataapi.joinquant.com/apis"
mob
=
"******"
# mob是申请JQData时所填写的手机号
pwd
=
"******"
# Password为聚宽官网登录密码,新申请用户默认为手机号后6位
def
get_token
():
"""获取调用凭证"""
body
=
{
"method"
:
"get_current_token"
,
"mob"
:
mob
,
# mob是申请JQData时所填写的手机号
"pwd"
:
pwd
,
# Password为聚宽官网登录密码,新申请用户默认为手机号后6位
}
response
=
requests
.
post
(
url
,
data
=
json
.
dumps
(
body
))
token
=
response
.
text
return
token
def
text2df
(
text
):
rows
=
[
x
.
split
(
","
)
for
x
in
text
.
strip
().
split
(
'
\n
'
)]
df
=
pd
.
DataFrame
(
rows
[
1
:],
columns
=
rows
[
0
])
return
df
def
get_kline
(
symbol
,
end_date
,
freq
,
count
=
3000
):
# 1m, 5m, 15m, 30m, 60m, 120m, 1d, 1w, 1M
freq_convert
=
{
"1min"
:
"1m"
,
"5min"
:
'5m'
,
'15min'
:
'15m'
,
"30min"
:
"30m"
,
"60min"
:
'60m'
,
"D"
:
"1d"
,
"W"
:
'1w'
}
if
"-"
not
in
end_date
:
end_date
=
datetime
.
strptime
(
end_date
,
"%Y%m%d"
).
strftime
(
"%Y-%m-%d"
)
data
=
{
"method"
:
"get_price"
,
"token"
:
get_token
(),
"code"
:
symbol
,
"count"
:
count
,
"unit"
:
freq_convert
[
freq
],
"end_date"
:
end_date
,
"fq_ref_date"
:
"2010-01-01"
}
r
=
requests
.
post
(
url
,
data
=
json
.
dumps
(
data
))
df
=
text2df
(
r
.
text
)
df
[
'symbol'
]
=
symbol
df
.
rename
({
'date'
:
'dt'
,
'volume'
:
'vol'
},
axis
=
1
,
inplace
=
True
)
df
=
df
[[
'symbol'
,
'dt'
,
'open'
,
'close'
,
'high'
,
'low'
,
'vol'
]]
for
col
in
[
'open'
,
'close'
,
'high'
,
'low'
,
'vol'
]:
df
.
loc
[:,
col
]
=
df
[
col
].
apply
(
lambda
x
:
round
(
float
(
x
),
2
))
return
df
def
format_bi_points
(
bi_points
):
for
i
,
x
in
enumerate
(
bi_points
):
x
[
'dt'
]
=
i
x
.
pop
(
"start_dt"
)
x
.
pop
(
"end_dt"
)
x
.
pop
(
"fx_high"
)
x
.
pop
(
"fx_low"
)
return
bi_points
def
use_kline_analyze
():
kline
=
get_kline
(
symbol
=
"000001.XSHG"
,
end_date
=
"20200616"
,
freq
=
"D"
,
count
=
5000
)
kline
=
get_kline
(
symbol
=
"000001.XSHG"
,
end_date
=
datetime
.
strptime
(
"20200830"
,
"%Y%m%d"
),
freq
=
"D"
,
count
=
5000
)
ka
=
KlineAnalyze
(
kline
,
name
=
"日线"
,
max_raw_len
=
5000
,
verbose
=
False
)
print
(
"分型识别结果:"
,
ka
.
fx_list
[
-
3
:])
print
(
"笔识别结果:"
,
ka
.
bi_list
[
-
3
:])
print
(
"线段识别结果:"
,
ka
.
xd_list
[
-
3
:])
# 输入K线即完成分析
ka
=
KlineAnalyze
(
kline
,
name
=
"日线"
,
min_bi_k
=
5
,
max_raw_len
=
10000
,
verbose
=
False
)
kline
=
get_kline
(
symbol
=
"300803.XSHE"
,
end_date
=
datetime
.
strptime
(
"20200830"
,
"%Y%m%d"
),
freq
=
"30min"
,
count
=
5000
)
ka
=
KlineAnalyze
(
kline
,
name
=
"30分钟"
,
max_raw_len
=
5000
,
verbose
=
False
)
print
(
"分型识别结果:"
,
ka
.
fx_list
[
-
3
:])
print
(
"笔识别结果:"
,
ka
.
bi_list
[
-
3
:])
print
(
"线段识别结果:"
,
ka
.
xd_list
[
-
3
:])
# 查看结果
kline
=
get_kline
(
symbol
=
"300803.XSHE"
,
end_date
=
datetime
.
strptime
(
"20200830"
,
"%Y%m%d"
),
freq
=
"5min"
,
count
=
5000
)
ka
=
KlineAnalyze
(
kline
,
name
=
"5分钟"
,
max_raw_len
=
5000
,
verbose
=
False
)
print
(
"分型识别结果:"
,
ka
.
fx_list
[
-
3
:])
print
(
"笔识别结果:"
,
ka
.
bi_list
[
-
3
:])
print
(
"线段识别结果:"
,
ka
.
xd_list
[
-
3
:])
# 用图片或者HTML可视化
ka
.
to_image
(
"test.png"
)
ka
.
to_html
(
"test.html"
)
# ka.to_image("test.png")
if
__name__
==
'__main__'
:
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录