请问怎样用Java获取股票行情历史数据?新浪、搜狐、百度财经都可以......
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问怎样用Java获取股票行情历史数据?新浪、搜狐、百度财经都可以......相关的知识,希望对你有一定的参考价值。
我是菜鸟,刚开始学习,所以需要Java将接口返回的数据解析成数组的代码......
http://biz.finance.sina.com.cn/stock/flash_hq/kline_data.php?&rand=random(10000)&symbol=sz002241&end_date=20130806&begin_date=20130101&type=plain
上面的链接可以抓取“歌尔声学”股票从2013年1月1日起到2013年8月6日的数据。
public static void main(String[] args)
URL ur = null;
try
//搜狐股票行情历史接口
// ur = new URL("http://q.stock.sohu.com/hisHq?code=cn_300228&start=20130930&end=20131231&stat=1&order=D&period=d&callback=historySearchHandler&rt=jsonp");
//新浪股票行情历史接口
ur = new URL("http://biz.finance.sina.com.cn/stock/flash_hq/kline_data.php?&rand=random(10000)&symbol=sh600000&end_date=20150809&begin_date=20000101&type=plain");
HttpURLConnection uc = (HttpURLConnection) ur.openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(ur.openStream(),"GBK"));
String line;
while((line = reader.readLine()) != null)
System.out.println(line);
catch (Exception e)
// TODO Auto-generated catch block
e.printStackTrace();
参考技术A 风险与收益是成正比的,收益越大风险也越高,所以在配资时选择适当的杠杆倍数。超凡脱俗 参考技术B 好的配资公司还是有的,配资是一种合作,安全是股民一个永恒的话题die, the better she gets over 参考技术C 如果要获得股票历史数据的话,推荐你用免费开源的Python数据接口平台tushare。
tushare 不仅能获取股票数据,其他行情历史数据如基金、期货、债券、外汇和行业的都能获取。目前已经运行四年了,而且使用很稳定,现在已经升级到Pro版了。
数据接口-免费版(股票数据API)
获取股票数据的源头主要有:数据超市、雅虎、新浪、Google、和讯、搜狐、ChinaStockWebService、东方财富客户端、证券之星、网易财经。
数据超市
2016年5月6日更新。根据最近频繁出现的数据超市,可以无限制获取相关数据,而不再需要使用爬虫等方式获取,这样不仅节省了极大资源,也有利于遍历数据。
具体的方法不再赘述,列出来相关网站清单,开发者可自行到这些网站查询调用方法。
聚合数据 https://www.juhe.cn/
百度API数据 http://apistore.baidu.com/
发源地 http://www.finndy.com/
笔者这里推荐使用聚合数据,其次配合百度API使用即可。
雅虎
缺点:某些美国节假日数据会短缺;调用次数不能超过每分钟200次,否则会被警告并封锁IP地址;自定义列获取方法只能获取美股数据。
优点:数据最标准化,可以获取其他国家市场数据;返回数据类型可自定义组合。
方法1:http://table.finance.yahoo.com/table.csv?s=股票代码
返回结果:CSV格式的文件,返回列依次是“日期、开盘价、最高价、最低价、收盘价、成交量、复权价”。
其股票代码需要在末尾标记所属市场,如上证指数股票代码为600000.ss、深圳成指为399001.sz。
方法2:http://finance.yahoo.com/d/quotes.csv?s=股票代码&f=[自定义列]
返回结果:CSV格式的文件,最后一个交易日的数据,列根据设定的自定义列返回。
例如:http://finance.yahoo.com/d/quotes.csv?s=TWTR&f=nt1,返回TWTR股票的名称和最后交易时间。
方法3:http://quote.yahoo.com/d/quotes.csv?s=股票代码&f=[自定义列]
和方法2类似。
自定义列
市场代码及说明
ChinaStockWebService
缺点:不稳定,经常出现维护停止服务;只能获取当前行情和历史走势图。
优点:国内数据提供商,以XML响应,速度较快。
方法参考:http://www.webxml.com.cn/WebServices/ChinaStockWebService.asmx
?
东方财富客户端
缺点:手动操作导出;没有历史数据。
优点:数据全面,速度较快。
方法:通过东方财富网客户端自带的功能,导出数据。
相对于其他获取方式,这种获取速度非常快,出错率非常低,而且数据非常全面,如果定期整理可以作为非常有效的数据使用。
?
新浪
缺点:历史股价数据不够完整,只能获取最近1023个数据节点。
优点:速度非常快;可以获取行情图片;返回JSON,容易处理;可以获取历史的分价图数据和分时买卖交易列。
方法1:HTTP://HQ.SINAJS.CN/LIST=[股票代码]
返回结果:JSON实时数据,以逗号隔开相关数据,数据依次是“股票名称、今日开盘价、昨日收盘价、当前价格、今日最高价、今日最低价、竞买价、竞卖价、成交股数、成交金额、买1手、买1报价、买2手、买2报价、…、买5报价、…、卖5报价、日期、时间”。
获取当前的股票行情,如http://hq.sinajs.cn/list=sh601006,注意新浪区分沪深是以sh和sz区分。
方法2:获取各个时间段行情图。
查看日K线图:http://image.sinajs.cn/newchart/daily/n/sh601006.gif分时线的查询:http://image.sinajs.cn/newchart/min/n/sh000001.gif日K线查询:http://image.sinajs.cn/newchart/daily/n/sh000001.gif周K线查询:http://image.sinajs.cn/newchart/weekly/n/sh000001.gif月K线查询:http://image.sinajs.cn/newchart/monthly/n/sh000001.gif
方法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个节点。
方法4:http://finance.sina.com.cn/realstock/company/[市场][股票代码]/[复权].js?d=[日期]
[复权]:qianfuquan-前复权;houfuquan-后复权。
返回结果:股票日期的股价JSON数据。
例如,http://finance.sina.com.cn/realstock/company/sz002095/qianfuquan.js?d=2015-06-16,获取深圳市场002095股票的前复权2015-06-16的数据。
注意,无法获取未复权的数据。
注意,需要对返回数据进行处理才能使用,新浪会在末尾加入注释语句,打乱日期数据,key值需要自行加入双引号,否则无法解析JSON。
注意,由于新浪的周线和月线数据,是以股票日线所有数据直接计算得到的,所以无法直接通过API获取周线和月线数据,需要自行处理。
方法5:http://market.finance.sina.com.cn/downxls.php?date=[日期]&symbol=[市场][股票代码]
返回数据:XLS文件;股票历史成交明细。
例如,http://market.finance.sina.com.cn/downxls.php?date=2015-06-15&symbol=sz002095,获取2015-06-15日期的深圳市长002095数据。
方法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日期的分价数据。
?
和讯
(待续)
?
Google数据其实是从新浪获取的,所以可以优先考虑从新浪获取,如果喜欢google的API,再考虑。
优点:数据可靠。
缺点:历史数据只能通过分解HTML页面获取;国外数据源速度慢。
方法1:从股票历史数据中获取相关数据。
方法2:https://www.google.com.hk/finance/getprices?q=[股票代码]&x=[市场]&i=[间隔]&p=[周期]
例如,https://www.google.com.hk/finance/getprices?q=002673&x=SHE&i=1800&p=30d,意思就是获取上证002673的股票,周期为30天,间隔1800。
?
搜狐
优点:JSON数据结果容易处理;获取速度快。
缺点:每次只能获取100个节点的数据;API经常变动。
方法1:http://q.stock.sohu.com/hisHq?code=[股票市场和代码]8&start=[开始日期]&end=[结束日期]&stat=1&order=D&period=d&callback=historySearchHandler&rt=jsonp
返回结果:JSON;时间段内的100个数据节点。
例如,http://q.stock.sohu.com/hisHq?code=cn_300228&start=20130930&end=20131231&stat=1&order=D&period=d&callback=historySearchHandler&rt=jsonp,返回30022股票20130930到20131231时间段内的日线数据。
?
证券之星
缺点:只能获取80条数据。
优点:国内速度快;JSON返回容易解析。
方法1:HTTP://CQ.SSAJAX.CN/INTERACT/GETTRADEDATA.ASHX?PIC=QLPIC_[股票代码]_[市场]_[周期]
其中股票代码如000001;市场1表示沪,2表示深;周期6表示日,7表示周,8表示月。如:http://cq.ssajax.cn/interact/getTradedata.ashx?pic=qlpic_000001_1_6,获取上证指数的日线行情数据。
返回结果:JSON数据。
方法2:HTTP://CQ.SSAJAX.CN/INTERACT/GETTRADEDATA.ASHX?PIC=QMPIC_600308_1_6_N80
?
网易财经
优点:速度快;JSON容易处理。
缺点:不能获取分钟线数据。
方法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天的数据,不包括当天的数据。
方法3:http://img1.money.126.net/data/[沪深拼音]/[是否复权]/day/history/[年份]/[股票代码].json
返回结果:获取日线数据。
其中,是否复权,不复权为kline,复权为klinederc。
例如,http://img1.money.126.net/data/hs/kline/day/history/2015/1399001.json,获取深证成指2015年所有日线数据。
方法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,获取深证成指所有时间节点数据。
方法5:http://quotes.money.163.com/cjmx/[今年年份]/[日期]/[股票代码].xls
返回结果:获取历史成交明细;XLS文件。
注意,只能获取5日内的数据,再之前的数据不会存在。
注意,该方法为网易公开获取数据方法,推荐使用。
例如,http://quotes.money.163.com/cjmx/2015/20150611/0601857.xls,获取0601857股票的2015年6月11日历史成交明细XLS文件。
方法6:http://quotes.money.163.com/service/chddata.html?code=[股票代码]&start=[开始日期]&end=[结束日期]&fields=[自定义列]
返回结果:历史股价及相关情况;CSV文件。
注意,该方法为网易公开方法,推荐使用。
其中,自定义列可定义TCLOSE收盘价 ;HIGH最高价;LOW最低价;TOPEN开盘价;LCLOSE前收盘价;CHG涨跌额;PCHG涨跌幅;TURNOVER换手率;VOTURNOVER成交量;VATURNOVER成交金额;TCAP总市值;MCAP流通市值这些值。
例如,http://quotes.money.163.com/service/chddata.html?code=0601857&start=20071105&end=20150618&fields=TCLOSE;HIGH;LOW;TOPEN;LCLOSE;CHG;PCHG;TURNOVER;VOTURNOVER;VATURNOVER;TCAP;MCAP,获取0601857从2007-11-05到2015-06-18区间的数据。
?
参考文献
http://www.jarloo.com/yahoo_finance/
http://blog.sina.com.cn/s/blog_54fae2350101c7ye.html
http://blog.sina.com.cn/s/blog_7ed3ed3d0102v5y7.html
http://blog.sina.com.cn/s/articlelist_2127818045_10_1.html
http://www.webxml.com.cn/WebServices/ChinaStockWebService.asmx
http://blog.sina.com.cn/s/blog_7ed3ed3d010146ti.html
http://www.cnblogs.com/me115/archive/2011/05/09/2040826.html
https://blog.csdn.net/llingmiao/article/details/79941066
以上是关于请问怎样用Java获取股票行情历史数据?新浪、搜狐、百度财经都可以......的主要内容,如果未能解决你的问题,请参考以下文章