新浪 股票
这两天做了一个调用新浪股票接口获取实时以及历史股票数据的应用,因为新浪没有公开关于其接口的官方文档,所以通过各种百度差了很多关于新浪股票接口的使用,不过大家基本都是转载或者直接复制,对于实时数据的获取讲的很详细,但是缺少获取历史数据的方法。
关于实时数据的获取大家可以看这篇博客:实时股票数据接口
经过不懈的努力终于再这篇博文中找到了关于新浪股票历史数据的获取方式腾讯股票接口、和讯网股票接口、新浪股票接口、雪球股票数据、网易股票数据
最近二十天左右的每5分钟数据
http://money.finance.sina.com.cn/quotes_service/api/json_v2.php/CN_MarketData.getKLineData?symbol=sz000001&scale=5&ma=5&datalen=1023
(参数:股票编号、分钟间隔(5、15、30、60)、均值(5、10、15、20、25)、查询个数点(最大值242))
获取的数据是类似下面的json数组:日期、开盘价、最高价、最低价、收盘价、成交量:
获取的数据会有很多,然后根据自己需要进行解析,我需要的是每天的收盘价,股市是每个工作日下午3点收盘,所以我只需要找到每天的下午三点时刻的数据进行过滤即可:
1、新建一个历史数据对象类:
public class HistoryModel { public String day; public String close; public HistoryModel(String day, String close) { this.day = day; this.close = close; } }
2、新建一个股票多次历史数据类:和上一个区别就是,这里包含的是所有的历史数据:参数包括股票名字、代码、现在的价格、历史数据:
public class HistoryModels { public String name; public String code; public String now; public List<HistoryModel> list; public HistoryModels(String name, String code, String now, List<HistoryModel> list) { this.name = name; this.code = code; this.now = now; this.list = list; } }
3、将需要查询的股票的代码带进url里通过HTTP请求json数据,我这里用的Volley请求的:
其中将时间点未15:00:00的数据过滤出来,组合乘List之后在全部赋值组合成一个HistoryModels存放股票信息以及股票的所有历史数据。
// Instantiate the requestqueue. RequestQueue queue = Volley.newRequestQueue(Home.context); String url1 = "http://money.finance.sina.com.cn/quotes_service/api/json_v2.php/CN_MarketData.getKLineData?symbol=" + Home.myChoiceModelList.get(ii).code + "&scale=60&ma=no&datalen=1023"; // Request a string response from the provided URL. StringRequest stringRequest1 = new StringRequest(Request.Method.GET, url1, new Response.Listener<String>() { @Override public void onResponse(String response) { List<HistoryModel> historyList = Convert(response,new TypeToken<List<HistoryModel>>() { }.getType()); List<HistoryModel> historyList2 = new ArrayList<>(); if(historyList!=null) { for (int j = 0; j < historyList.size(); j++) { if (historyList.get(j).day.split(" ")[1].equals("15:00:00")) { historyList2.add(historyList.get(j)); } } } HistoryModels model = new HistoryModels(Home.myChoiceModelList.get(ii).name, Home.myChoiceModelList.get(ii).code, Home.myChoiceModelList.get(ii).now, historyList2); cllList.add(model); message msg = new Message(); msg.what = 0x002; handler.sendMessage(msg); } }, new Response.ERRORListener() { @Override public void onErrorResponse(VolleyError error) { } }); queue.add(stringRequest1);
4、其中对json数据的处理,即从json转化成数据对象的方法如下:
/* * Json转换泛型 */ public static <T> T Convert(String jsonString, Type cls) { T t = null; try { if (jsonString != null && !jsonString.equals("")) { Gson gson = new Gson(); t = gson.fromJson(jsonString, cls); } } catch (Exception e) { e.printstacktrace(); } return t; }
关于股票的实时数据这里没有描述,通过文章开头连接的博客可以了解到,写的很详细。
相关阅读
A5创业网(公众号:iadmin5)5月22日消息,今日微博管理员发布公告,据公众号“谷雨实验室”报道,自媒体账号ayawawa 在线下某活
我们在前面讲述在新浪SAE中如何建站,今天我们来详解如何上传文件。新浪SAE中是不允许用FTP来上传的。我们只能用它提供的专用工具,
证券宝www.baostock.com是一个免费、开源的证券数据平台。提供大量准确、完整的证券历史行情数据、上市公司财务数据、实时证券行
A5创业网(公众号:iadmin5)2月8日报道,据外媒报道,索尼公司在周五宣布将会回购1000亿日元(约合9.1亿美元)的股票,这是索尼历史上第一次做
Uber拟收购Careem,估值约为30亿元以股票的形式进行
A5创业网(公众号:iadmin5)3月1日消息,据新浪美股引述知情人士透露,打车服务公司Uber正在就收购其迪拜竞争对手Careem Networks FZ公