Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
quant-wiki
提交
8b94df79
Q
quant-wiki
项目概览
OpenDocCN
/
quant-wiki
通知
0
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Q
quant-wiki
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
8b94df79
编写于
7月 05, 2018
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
技术指标
上级
598fe00b
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
147 addition
and
1 deletion
+147
-1
技术/工具/数据获取.md
技术/工具/数据获取.md
+72
-0
技术/指标/README.md
技术/指标/README.md
+75
-1
未找到文件。
技术/工具/数据获取.md
0 → 100644
浏览文件 @
8b94df79
# 数据获取
## TuShare
获取 A 股数据。
安装(可能需要手动安装
`lxml`
):
```
pip install tushare
```
示例:
```
py
import
tushare
as
ts
ts
.
get_hist_data
(
'600848'
)
#一次性获取全部日k线数据
'''
open high close low volume p_change ma5
\
date
2012-01-11 6.880 7.380 7.060 6.880 14129.96 2.62 7.060
2012-01-12 7.050 7.100 6.980 6.900 7895.19 -1.13 7.020
2012-01-13 6.950 7.000 6.700 6.690 6611.87 -4.01 6.913
2012-01-16 6.680 6.750 6.510 6.480 2941.63 -2.84 6.813
2012-01-17 6.660 6.880 6.860 6.460 8642.57 5.38 6.822
2012-01-18 7.000 7.300 6.890 6.880 13075.40 0.44 6.788
2012-01-19 6.690 6.950 6.890 6.680 6117.32 0.00 6.770
2012-01-20 6.870 7.080 7.010 6.870 6813.09 1.74 6.832
ma10 ma20 v_ma5 v_ma10 v_ma20 turnover
date
2012-01-11 7.060 7.060 14129.96 14129.96 14129.96 0.48
2012-01-12 7.020 7.020 11012.58 11012.58 11012.58 0.27
2012-01-13 6.913 6.913 9545.67 9545.67 9545.67 0.23
2012-01-16 6.813 6.813 7894.66 7894.66 7894.66 0.10
2012-01-17 6.822 6.822 8044.24 8044.24 8044.24 0.30
2012-01-18 6.833 6.833 7833.33 8882.77 8882.77 0.45
2012-01-19 6.841 6.841 7477.76 8487.71 8487.71 0.21
2012-01-20 6.863 6.863 7518.00 8278.38 8278.38 0.23
'''
```
参数:
+
`code`
:股票代码,即6位数字代码,或者指数代码(sh=上证指数 sz=深圳成指 hs300=沪深300指数 sz50=上证50 zxb=中小板 cyb=创业板)
+
`start`
:开始日期,格式YYYY-MM-DD
+
`end`
:结束日期,格式YYYY-MM-DD
+
`ktype`
:数据类型,D=日k线 W=周 M=月 5=5分钟 15=15分钟 30=30分钟 60=60分钟,默认为D
+
`retry_count`
:当网络异常后重试次数,默认为3
+
`pause`
:重试时停顿秒数,默认为0
返回值为
`DataFrame`
,列为:
+
`date`
:日期
+
`open`
:开盘价
+
`high`
:最高价
+
`close`
:收盘价
+
`low`
:最低价
+
`volume`
:成交量
+
`price_change`
:价格变动
+
`p_change`
:涨跌幅
+
`ma5`
:5日均价
+
`ma10`
:10日均价
+
`ma20`
:20日均价
+
`v_ma5`
:5日均量
+
`v_ma10`
:10日均量
+
`v_ma20`
:20日均量
+
`turnover`
:换手率[注:指数无此项]
更多信息请见
[
官方文档
](
http://tushare.org/trading.html
)
。
技术/指标/README.md
浏览文件 @
8b94df79
...
...
@@ -2,7 +2,9 @@
这里是一些常见的技术指标。
这些指标不能单独使用,可以用于组成策略,或者用作模型的特征。
这些指标用于组成策略,或者用作模型的特征。
> 注:如果没有特殊说明,输入默认为收盘价。
## SMA(简单移动平均)
...
...
@@ -97,3 +99,75 @@ def rsi(arr, wnd):
return
sma
(
np
.
fmax
(
roc1
,
0
),
wnd
-
1
)
/
\
sma
(
np
.
abs
(
roc1
),
wnd
-
1
)
```
## KDJ
首先计算 RSV,其中
`c(t)`
为收盘价,
`l(t)`
为最低价,
`h(t)`
为最高价。
$RSV(t) =
\f
rac{c(t) - l(t)}{h(t) - l(t)}$
然后计算 K 和 D 值。
$K(t) =
\f
rac{2}{3}K(t-1)+
\f
rac{1}{3}RSV(t)$
$D(t) =
\f
rac{2}{3}D(t-1)+
\f
rac{1}{3}K(t)$
$K(1) = D(1) = 50$
最后计算 J 值。
$J(t) = 3K(t) - 2D(t)$
```
py
def
kdj
(
h
,
l
,
c
):
assert
len
(
h
)
==
len
(
l
)
and
\
len
(
l
)
==
len
(
c
)
rsv
=
(
c
-
l
)
/
(
h
-
l
)
k
=
np
.
zeros_like
(
rsv
)
k
[
0
]
=
50
for
i
in
range
(
1
,
len
(
k
)):
k
[
i
]
=
2
/
3
*
k
[
i
-
1
]
+
1
/
3
*
rsv
[
i
]
d
=
np
.
zeros_like
(
k
)
d
[
0
]
=
50
for
i
in
range
(
1
,
len
(
d
)):
d
[
i
]
=
2
/
3
*
d
[
i
-
1
]
+
1
/
3
*
k
[
i
]
j
=
3
*
k
-
2
*
d
return
k
,
d
,
j
```
## CCI(顺势指标)
$TP(t) =
\f
rac{h(t) + l(t) + c(t)}{3}$
$CCI(t,n) =
\f
rac{TP(t) - SMA(t,n)}{0.015MSD(t,n)}$
```
py
def
cci
(
h
,
l
,
c
,
wnd
):
assert
len
(
h
)
==
len
(
l
)
and
\
len
(
l
)
==
len
(
c
)
tp
=
(
h
+
l
+
c
)
/
3
tp
=
tp
[
wnd
-
1
:]
sma_n
=
sma
(
c
,
n
)
msd_n
=
msd
(
c
,
n
)
return
(
tp
-
sma
)
/
(
0.015
*
msd
)
```
## MACD(移动平均聚散指标)
$DIF(t) = EMA(t, 12) - EMA(t, 26)$
$DEA(t) = EMA(DIF(t), 9)$
```
py
def
macd
(
arr
):
dif
=
ema
(
arr
,
12
)
-
ema
(
arr
,
26
)
dea
=
ema
(
dif
,
9
)
return
dif
,
dea
```
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录