## Stock类
### 属性
- `Stock.codeList`
- 类型 : `<class 'list'>`
- 说明 : 所有A股代码(例如300204)组成的list
- `Stock.symbolList`
- 类型 : `<class 'list'>`
- 说明 : 所有A股符号(例如sz300204)组成的list
- `Stock.basicInfo`
- 类型 : `<class 'dict'>`
- 说明 : 所有A股基本信息
- Stock.basicInfo["lastUpdated"] : 该信息获得时间
- Stock.basicInfo["codeList"] : 与`Stock.codeList`相同
- Stock.basicInfo["basicInfo"] : dict类型的字段,包含A股基本信息
- timeToMarket : 上市日期
- bvps:每股账面净值
- totals:总股本(万)
- totalAssets:总资产(万)
- liquidAssets:流动资产
- name:名称
- industry:所属行业
- area:所属地区
- outstanding:流通股本
- reserved:公积金
- fixedAssets:固定资产
- eps:每股收益
- reservedPerShare:每股公积金
### 方法
- `Stock.fetch_realtime()`:
发起一次http请求,获取3秒/条的所有A股实时数据(5档盘口)【耗时<0.5秒】
**返回:**dataframe, 共30列
- **time**: 时间
- **preclose**:昨日收盘价
- **price**:现价
- **high**:今日最高价
- **low**:今日最低价
- **open**: 开盘价
- **volume**:成交量
- **amount**:成交额
- **b1_v**:买1手数(1手=100股)
- **b1_p**:买1价格
- ……买1到买5
- **a1_v**:卖1手数
- **turn_over_ratio**:换手率
**使用范例:**
```
import dHydra
stock = dHydra.Stock()
stock.fetch_realtime().head(5) #只显示前5行
open pre_close price high low volume amount b1_v b1_p \
0 18.21 18.21 18.08 18.47 17.93 986725 17948736.25 3 18.08
1 0.00 9.32 0.00 0.00 0.00 0 0.00 NaN 0.00
2 40.00 40.18 39.53 41.00 39.40 1647203 66075188.14 1 39.53
3 9.55 9.49 9.50 9.63 9.38 2172628 20614849.75 106 9.48
4 11.40 11.34 11.28 11.49 11.22 3032562 34412780.45 159 11.27
b2_v ... a2_p a3_v a3_p a4_v a4_p a5_v a5_p \
0 18 ... 18.19 7 18.20 20 18.25 2 18.26
1 NaN ... 0.00 NaN 0.00 NaN 0.00 NaN 0.00
2 10 ... 39.78 5 39.80 5 39.85 4 39.86
3 7 ... 9.51 115 9.52 186 9.53 184 9.54
4 124 ... 11.29 10 11.30 16 11.32 41 11.33
time code turn_over_ratio
0 2016-03-10 11:35:55 300444 1.430602
1 2016-03-10 11:35:55 000962 0.000000
2 2016-03-10 11:35:55 300493 5.490677
3 2016-03-10 11:35:55 002610 0.309419
4 2016-03-10 11:35:55 002363 0.786523
```
- `Stock.start_realtime()`:
不断发起http请求的方式来获取3秒/条的所有A股实时数据(5档盘口),存储到mongodb。每天上午9点程序会自动更新一次所有股票的基本信息。使用此方法时需要注意计算机的本地时区必须是北京时间(东八区),否则程序会误以为不在交易期间而不发起http请求。
- `Stock.export_realtime_csv()`:
**参数**:
**date**:
需要导出的日期。可以为空,默认为今天。日期格式:YYYY-MM-DD
**end**:
可以为空,默认为今天日期+1日。日期格式:YYYY-MM-DD
**resample**:
pandas.DataFrame对时间序列的处理。**可以为空,默认不处理**。参数说明[参考这里](http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.resample.html)。
e.g: 如果resample="T",则会按照每1分钟1条数据的方式(取当分钟最后一条数据)导出,如果resample="15S",则是15秒/条导出。
会在程序运行的当前路径生成`data/stock_realtime/日期/股票代码.csv`文件
**使用范例**:
```
import dHydra
stock = dHydra.Stock()
stock.export_realtime_csv(date="2016-03-04",resample="T")
stock.export_realtime_csv(date="2016-03-03")
```
## 新浪Level2行情
![](https://box.kancloud.cn/2016-03-10_56e176714cb97.png)
官网链接:http://finance.sina.com.cn/stock/level2/orderIntro.html
**如果要使用新浪l2接口,需要自行去新浪网购买普及版(298元/年)**,数据来源于sina
### 开启新浪Level2的实时推送(Websocket)
- `Stock.start_sina(callback)`
**参数:**
- **callback**:可以为空,如果为空系统默认会将message输出到屏幕上
- **类型**:asyncio.coroutine
- **说明**:异步回调函数(严格意义上它不是函数,而是一个coroutine),用于处理Websocket接受到的实时数据(message)
- **symbolList**:可以为空,默认为所有的股票列表,也可以自行设定一个列表(如demo)
- **raw**: True/False,可以为空,默认为False,返回message是一个List。如果设置raw=True,则返回的是未经过parse的字符串数据。
- **message格式说明**:
**使用范例:**
```
# -*- coding: utf8 -*-
import dHydra
import asyncio
stock = dHydra.Stock()
#这里是回调函数的内容,用于处理ws接收到的message
@asyncio.coroutine
def callback(message):
for item in message: #本例中message是一个list,将它逐个打印到屏幕上。
print(item)
stock.start_sina(symbolList = ['sz300204'], callback = callback)
```
![](https://box.kancloud.cn/2016-03-22_56f137373e0c7.png)
### 新浪Level2当日历史下载(http协议)
- `Stock.sina_l2_hist(thread_num)`
- **参数**
- **thread_num**:(可选)开启线程的数量,默认为5个线程。
- **symbolList**:(可选)设置要获取的股票列表,默认则是所有股票。
- **说明**
将会在当前路径`data/stock_l2/日期`目录下建立csv文件