写在前面
1 个股:作为量化投资的用户来说,个股K线一定只能使用复权数据来分析,比如说前复权。不然股票一旦分红,派发,不复权数据就会严重失真。
2 指数:指数可以理解成没有复权数据(分红按自然下跌处理,参考张居营《慢慢变富》);中证500在两个交易所代码不同,数据相同。
股票数据API整理
分时数据
方法1:http://img1.money.126.net/data/[沪深拼音]/time/today/[股票代码].json
返回结果:当日分时图数据;JSON数据;分时图获取数据依次是count节点数量、symbol股票代码、name股票名称、data数据,其中数据依次是小时分钟时间、价格、均价、成交量。
注意,沪深拼音为简写hs,以此可以推断出其他市场也可以获取,具体请自行判断研究。
例如,http://img1.money.126.net/data/hs/time/today/1399001.json,返回深证成指当日分时图数据。
方法2:http://img1.money.126.net/data/hs/time/4days/[股票代码].json
返回结果:获取4天分时数据;和上述分时图相似,但数据是连续4天的数据,不包括当天的数据。
腾讯
股票日行情接口
http://sqt.gtimg.cn/q=sh600519
返回
v_sh600519="1~贵州茅台~600519~456.86~452.55~454.00~56259~27176~29084~456.80~4~456.68~8~456.67~1~456.62~4~456.61~1~456.81~11~456.87~2~456.89~1~456.90~1~456.97~1~14:59:59/456.80/6/M/274055/28944|14:59:59/456.80/3/B/137040/28937|14:59:53/456.69/7/S/319760/28928|14:59:50/456.81/17/S/776642/28925|14:59:47/456.89/5/B/228435/28920|14:59:44/456.81/8/S/365448/28916~20170719150557~4.31~0.95~463.62~452.80~456.80/56259/2574934655~56259~257493~0.45~31.97~~463.62~452.80~2.39~5739.08~5739.08~7.26~497.81~407.30~2.03";
含义
/*** 股票接口* * http://sqt.gtimg.cn/utf8/q=股票代码01,股票代码02&offset=1,2,3,4,31,32,33,38* offset返回结果字段的索引号* 返回结果样例:v_sh600887="1* 2 ~伊利股份 股票名称* 3 ~600887 股票代码* 4 ~16.32 最新报价* 5 ~16.31 昨收* 6 ~16.31 今开* 7 ~180204 成交量(手)。除以100后单位为:万股* 8 ~94954 外盘* 9 ~85250 内盘* 10 ~16.31 五档盘口:买01:元* 11 ~33 五档盘口:买01:手* 12 ~16.30 五档盘口:买02:元* 13 ~912 五档盘口:买02:手* 14 ~16.29 五档盘口:买03:元* 15 ~264 五档盘口:买03:手* 16 ~16.28 五档盘口:买04:元* 17 ~591 五档盘口:买04:手* 18 ~16.27 五档盘口:买05:元* 19 ~194 五档盘口:买05:手* 20 ~16.32 五档盘口:卖01:元* 21 ~793 五档盘口:卖01:手* 22 ~16.33 五档盘口:卖02:元* 23 ~1976 五档盘口:卖02:手* 24 ~16.34 五档盘口:卖03:元* 25 ~662 五档盘口:卖03:手* 26 ~16.35 五档盘口:卖04:元* 27 ~1217 五档盘口:卖04:手* 28 ~16.36 五档盘口:卖05:元* 29 ~461 五档盘口:卖05:手* 30 ~15:00:02/16.32/63/B/102774/13108|14:59:56/16.32/60/B/97890/13103|14:59:47/16.32/98/B/159893/13095|14:59:47/16.32/148/B/241481/13092|14:59:41/16.32/162/B/264330/13087|14:59:37/16.32/139/B/226781/13084* 31 ~20160622150541 时间* 32 ~0.01 涨跌额(单位:元)* 33 ~0.06 涨跌幅 %* 34 ~16.42 今日最高* 35 ~16.16 今日最低* 36 ~16.32/180141/293078740* 37 ~180204 成交量(手)。除以100后单位为:万股* 38 ~29318 成交额(单位:万元)* 39 ~0.30 换手率 %* 40 ~20.27 市盈率* 41 ~* 42 ~16.42* 43 ~16.16* 44 ~1.59 振幅 %* 45 ~984.65 流通市值(单位:亿元)* 46 ~989.78 总市值(单位:亿元)* 47 ~4.59 市净率* 48 ~17.94* 49 ~14.68* 50 ~";** @author ZhengWei(HY)* @createDate 2016-06-22* @version v1.0*/
/** * 参数Offset,返回结果字段* 数组二维的第0下标: 股票接口offset参数值* 数组二维的第1下标: 股票接口offset参数值的注释说明* 数组二维的第2下标: 股票接口返回结果集对应Java属性名称*/public static final String [][] $StockResults = {{"31" ,"时间" ,"time"},{"2" ,"股票名称" ,"stockName"},{"3" ,"股票代码" ,"stockCode"},{"5" ,"昨收" ,"yesterdayClosePrice"},{"6" ,"今开" ,"todayOpenPrice"},{"4" ,"最新报价" ,"newPrice"},{"34" ,"今日最高" ,"maxPrice"},{"35" ,"今日最低" ,"minPrice"},{"32" ,"涨跌额" ,"upDownPrice"},{"33" ,"涨跌幅" ,"upDownRange"},{"37" ,"成交量" ,"bargainSum"},{"38" ,"成交额" ,"bargainSize"},{"39" ,"换手率" ,"turnoverRate"},{"44" ,"振幅" ,"swingRate"},{"8" ,"外盘" ,"outSize"},{"9" ,"内盘" ,"inSize"},{"40" ,"市盈率" ,"priceEarningRatio"},{"47" ,"市净率" ,"priceBookValueRatio"}};
######代码含义[以~分割字符串,下标从0开始]###### 0: 未知 1: 股票名字 2: 股票代码 3: 当前价格 4: 昨收 5: 今开 6: 成交量(手) 7: 外盘 8: 内盘 9: 买一 10: 买一量(手) 11-18: 买二 买五 19: 卖一 20: 卖一量 21-28: 卖二 卖五 29: 最近逐笔成交 30: 时间 31: 涨跌 32: 涨跌% 33: 最高 34: 最低 35: 价格/成交量(手)/成交额 36: 成交量(手) 37: 成交额(万) 38: 换手率 39: 市盈率 40: 41: 最高 42: 最低 43: 振幅 44: 流通市值 45: 总市值 46: 市净率 47: 涨停价 48: 跌停价
新浪
个股行情完整网页地址:https://finance.sina.com.cn/realstock/company/sh600000/nc.shtml 结果如下
- 接口4:http://finance.sina.com.cn/realstock/company/[市场][股票代码]/[复权].js?d=[日期]
[复权]:qianfuquan-前复权;houfuquan-后复权。
返回结果:股票日期的股价JSON数据。
例如,http://finance.sina.com.cn/realstock/company/sz002095/qianfuquan.js 获取sz002095的所有前复权收盘价,而且只返回前复权价格信息,没有其他信息。
返回结果简化之后:
1 实际上返回的是一个长字符串,包括换行符,下图的格式是本人认为整理为了好看得到的;
2 从下图可以看出,返回的前复权价格把上市第一天价格作为1.0000;
3 数据之间的关系:上市第一天收盘价14.21元 返回1.00000;最新价2019-07-21收盘价22.46元 返回1.577841
14.21/1.0000 = 22.42/1.577841 实际上最新收盘价 2019-07-21收盘价22.46元, 22.42距离实际收盘价22.46还差。04元,不知道咋回事。
[{total:3063,data:{_2019_07_19:"1.577841",_2019_07_18:"1.575734",_2019_07_17:"1.628422",................._2006_12_18:"0.955414",_2006_12_15:"1.000000"}}
]
/* Iq66n6UtIL64s.......qyKQ== */
注意,无法获取未复权的数据。
注意,需要对返回数据进行处理才能使用,新浪会在末尾加入注释语句,打乱日期数据,key值需要自行加入双引号,否则无法解析JSON。
注意,由于新浪的周线和月线数据,是以股票日线所有数据直接计算得到的,所以无法直接通过API获取周线和月线数据,需要自行处理。
接口3
http://money.finance.sina.com.cn/quotes_service/api/json_v2.php/CN_MarketData.getKLineData?symbol=[市场][股票代码]&scale=[周期]&ma=no&datalen=[长度]
返回结果:获取5、10、30、60分钟JSON数据;day日期、open开盘价、high最高价、low最低价、close收盘价、volume成交量;向前复权的数据。
注意,最多只能获取最近的1023个数据节点。
例如,http://money.finance.sina.com.cn/quotes_service/api/json_v2.php/CN_MarketData.getKLineData?symbol=sz002095&scale=60&ma=no&datalen=1023,获取深圳市场002095股票的60分钟数据,获取最近的1023个节点。
接口5
http://market.finance.sina.com.cn/downxls.php?date=[日期]&symbol=[市场][股票代码]
返回数据:XLS文件;股票历史成交明细。
- 接口6:http://market.finance.sina.com.cn/pricehis.php?symbol=[市场][股票代码]&startdate=[开始日期]&enddate=[结束日期]
返回数据:HTML文本;指定日期范围内的股票分价表。
例如,http://market.finance.sina.com.cn/pricehis.php?symbol=sh600900&startdate=2011-08-17&enddate=2011-08-19,获取上证600900股票2011-08-17到2011-08-19日期的分价数据。
网易财经
优点:速度快;JSON容易处理。
方法4:http://img1.money.126.net/data/[沪深拼音]/[是否复权]/[周期]/times/[股票代码].json
返回结果:获取日线所有时间节点和收盘价。
其中,[是否复权],不复权为kline,复权为klinederc。
其中,[周期],day为日数据,week周数据,month月数据。
例如,http://img1.money.126.net/data/hs/kline/day/times/1399001.json,获取深证成指所有时间节点数据。
例如,获取所有日线不复权数据,删减了绝大部分数据后只留下了结构信息(内容为UTF-8格式):
{"closes": [988.05,983.11,978.27,968.57,963.73],"symbol": "399001","times": ["19910403","19910404","19910405","19910408","20190704"],"name": "深证成指"
}
方法6:获取实时detail数据
http://quotes.money.163.com/service/chddata.html?code=[股票代码]&start=[开始日期]&end=[结束日期]&fields=[自定义列]
其中,自定义列可定义
TCLOSE收盘价 ;
HIGH最高价;
LOW最低价;
TOPEN开盘价;
LCLOSE前收盘价;
CHG涨跌额;
PCHG涨跌幅;
TURNOVER换手率;
VOTURNOVER成交量;
VATURNOVER成交金额;
TCAP总市值;
MCAP流通市值
这些值。
例如:http://quotes.money.163.com/service/chddata.html?code=0603088&start=20141111&end=20190717&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;CHG;PCHG;TURNOVER;VOTURNOVER;VATURNOVER;TCAP;MCAP
获取0601857从2007-11-05到2015-06-18区间的数据。