easyquotation 库——实时获取股票、分级基金行情

easyquotation 库——实时获取股票、分级基金行情

新发现的一个数据获取库,项目地址为:shidenggui/easyquotation。可以用于实时获取新浪/腾讯的免费股票行情/集思路的分级基金行情数据。

安装

下载该项目,然后:

1
2
pip install -r requirements.txt
pip install easyquotation

用法

引入于选择行情

可以选择新浪(sina)或腾讯(tencent/qq):

1
2
import easyquotation
quotation = easyquotation.use('qq')

获取所有股票行情

1
2
market_snapshot = quotation.market_snapshot(prefix = True)  
# prefix 参数指定返回的行情字典中的股票代码 key 是否带 sz/sh 前缀

market_snapshot 是一个 dict,所以可以非常容易地把它变成 pd.DataFrame:

1
2
3
import pandas as pd
df_ms = pd.DataFrame(market_snapshot)
df_ms.head()

转变成数据框再导出:

1
df_ms.to_csv("~/Desktop/ms.csv")


这样看起来很不方便,转置一下:

1
2
df_ms2 = df_ms.transpose()
df_ms2.to_csv("~/Desktop/ms2.csv")


这些变了含义可以参考作者的注释:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{'sh000159': {'name': '国际实业', # 股票名
'buy': 8.87, # 竞买价
'sell': 8.88, # 竞卖价
'now': 8.88, # 现价
'open': 8.99, # 开盘价
'close': 8.96, # 昨日收盘价
'high': 9.15, # 今日最高价
'low': 8.83, # 今日最低价
'turnover': 22545048, # 交易股数
'volume': 202704887.74# 交易金额
'ask1': 8.88, # 卖一价
'ask1_volume': 111900, # 卖一量
'ask2': 8.89,
'ask2_volume': 54700,
'bid1': 8.87, # 买一价
'bid1_volume': 21800, # 买一量
...
'bid2': 8.86,
'bid2_volume': 78400,
'date': '2016-02-19',
'time': '14:30:00',
...},
......
}

获取单只股票的行情

1
pingan = quotation.real('000001')

获取多只股票

1
dict1 = quotation.real(['000001', '000002'])

更新股票代码

1
easyquotation.update_stock_codes()

选择集思路行情

1
quotation = easyquotation.use('jsl')

获取分级基金数据

1
quotation.funda()

指数 ETF 查询接口

1
2
df = pd.DataFrame(quotation.etfindex(index_id="", \
min_volume=0, max_discount=None, min_discount=None))

变量含义为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
"510050": {
"fund_id": "510050", # 代码
"fund_nm": "50ETF", # 名称
"price": "2.066", # 现价
"increase_rt": "0.34%", # 涨幅
"volume": "71290.96", # 成交额(万元)
"index_nm": "上证50", # 指数
"pe": "9.038", # 指数PE
"pb": "1.151", # 指数PB
"index_increase_rt": "0.45%", # 指数涨幅
"estimate_value": "2.0733", # 估值
"fund_nav": "2.0730", # 净值
"nav_dt": "2016-03-11", # 净值日期
"discount_rt": "-0.34%", # 溢价率
"creation_unit": "90", # 最小申赎单位(万份)
"amount": "1315800", # 份额
"unit_total": "271.84", # 规模(亿元)
"index_id": "000016", # 指数代码
"last_time": "15:00:00", # 价格最后时间(未确定)
"last_est_time": "23:50:02", # 估值最后时间(未确定)
}
}

分时数据

1
2
quotation = easyquotation.use("timekline")
data = quotation.real(['603828'], prefix=True)

变量含义为:

1
2
3
4
5
6
'date': '170721',  #日期
'time_data': {
'201707210930': ['0930', '19.42', '61'], # [时间, 当前价, 上一分钟到这一分钟之间的成交数量]
...
}
`

港股日 k 线数据

1
2
3
4
import easyquotation
quotation = easyquotation.use("daykline")
data = quotation.real(['00001','00700'])
print(data)

变量含义:

1
2
3
4
5
6
7
8
9
10
11
{
'00001': [
['2017-10-09', '352.00', '349.00', '353.00', '348.60', '13455864.00'],
# [日期, 今开, 今收, 最高, 最低, 成交量 ]
['2017-10-10', '350.80', '351.20', '352.60', '349.80', '10088970.00'],
]
'00700':[

]
}
}

腾讯港股时时行情

1
2
3
4
import easyquotation
quotation = easyquotation.use("hkquote")
data = quotation.real(['00001','00700'])
print(data)

变量含义:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
{
'00001':
{
'stock_code': '00001', # 股票代码
'lotSize': '"100', # 每手数量
'name': '长和', # 股票名称
'price': '97.20', # 股票当前价格
'lastPrice': '97.75', # 股票昨天收盘价格
'openPrice': '97.75', # 股票今天开盘价格
'amount': '1641463.0', # 股票成交量
'time': '2017/11/29 15:38:58', # 当前时间
'high': '98.05', # 当天最高价格
'low': '97.15' # 当天最低价格
},
'00700':
{
'stock_code': '00700',
'lotSize': '"100',
'name': '腾讯控股',
'price': '413.20',
'lastPrice': '419.20',
'openPrice': '422.20',
'amount': '21351010.0',
'time': '2017/11/29 15:39:01',
'high': '422.80',
'low': '412.40'
}
}

# Python

评论

程振兴

程振兴 @czxa.top
截止今天,我已经在本博客上写了570.7k个字了!

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×