本帖隐藏的内容
- /**
- * 股票实体类
- * @author 祁丛生 2013.01.02
- */
- public class StockData {
- private String code; // 股票编码
- private String name; // 股票名称
- private String date; // 交易日期
- private double open = 0.0; // 开盘价
- private double high = 0.0; // 最高价
- private double low = 0.0; // 最低价
- private double close = 0.0; // 最后一次交易价格,相当于收盘价
- private double volume = 0.0;// 总交易手
- private double adj = 0.0; // 最后一次交易价格 (今天的收盘价当做加权价格)
- //setters and getters.....省略
- //toString method...为测试方便可以加个toString方法,省略
- }
- /**
- * yahoo股票数据接口工具类
- * @author 祁丛生 2013.01.02
- * @version 1.0
- */
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.net.URL;
- import java.net.URLConnection;
- import java.util.ArrayList;
- import java.util.Date;
- import java.util.List;
- public class GetDataFromYahooUtil {
-
- public static final String YAHOO_FINANCE_URL = "http://table.finance.yahoo.com/table.csv?";
- public static final String YAHOO_FINANCE_URL_TODAY = "http://download.finance.yahoo.com/d/quotes.csv?";
- /**
- * 根据 股票编码、开始日期、结束日期 获取股票数据
- * @author 祁丛生
- * @param stockName 沪市:000000.ss 深市:000000.sz
- * @param fromDate 开始日期
- * @param toDate 结束日期
- * @return List<StockData>
- */
- public static List<StockData> getStockCsvData(String stockName, String fromDate,String toDate) {
- List<StockData> list = new ArrayList<StockData>();
- String[] datefromInfo= fromDate.split("-");
- String[] toDateInfo = toDate.split("-");
- String code = stockName.substring(0, 6);;
-
- String a = (Integer.valueOf(datefromInfo[1])-1)+"";// a – 起始时间,月
- String b = datefromInfo[2];// b – 起始时间,日
- String c = datefromInfo[0];// c – 起始时间,年
- String d = (Integer.valueOf(toDateInfo[1])-1)+"";// d – 结束时间,月
- String e = toDateInfo[2];// e – 结束时间,日
- String f = toDateInfo[0];// f – 结束时间,年
-
- String params = "&a=" + a + "&b=" + b + "&c=" + c + "&d=" + d + "&e="
- + e + "&f=" + f;
- String url = YAHOO_FINANCE_URL + "s=" + stockName + params;
-
- URL MyURL = null;
- URLConnection con = null;
- InputStreamReader ins = null;
- BufferedReader in = null;
- try {
- MyURL = new URL(url);
- con = MyURL.openConnection();
- ins = new InputStreamReader(con.getInputStream(), "UTF-8");
- in = new BufferedReader(ins);
- String newLine = in.readLine();// 标题行
-
- while ((newLine = in.readLine()) != null) {
- String stockInfo[] = newLine.trim().split(",");
- StockData sd = new StockData();
- sd.setCode(code);
- sd.setDate(stockInfo[0]);
- sd.setOpen(Float.valueOf(stockInfo[1]));
- sd.setHigh(Float.valueOf(stockInfo[2]));
- sd.setLow(Float.valueOf(stockInfo[3]));
- sd.setClose(Float.valueOf(stockInfo[4]));
- sd.setVolume(Float.valueOf(stockInfo[5]));
- sd.setAdj(Float.valueOf(stockInfo[6]));
- list.add(sd);
- }
- } catch (Exception ex) {
- return null; //无交易数据
- } finally {
- if (in != null)
- try {
- in.close();
- } catch (IOException ex) {
- ex.printStackTrace();
- }
- }
- return list;
- }
- /**
- * 根据 股票编码、日期 获取股票数据
- * @author 祁丛生
- * @param stockName 沪市:000000.ss 深市:000000.sz
- * @param date 日期
- * @return StockData
- */
- public static StockData getStockCsvData(String stockName, String date){
- List<StockData> list = getStockCsvData(stockName,date,date);
- return ((list.size()>0)?list.get(0):null);
- }
- /**
- * 根据 股票编码 获取当天股票数据
- * @author 祁丛生
- * @param stockName 沪市:000000.ss 深市:000000.sz
- * @return StockData
- */
- public static StockData getStockCsvData(String stockName){
- String date = String.format("%1$tF", new Date());
- List<StockData> list = getStockCsvData(stockName,date,date);
- return ((list!=null&&list.size()>0)?list.get(0):null);
- }
- }
- /**
- * 测试类
- */
- public class Test {
- public static void main(String[] args){
- GetDataFromYahooUtil stockUtil = new GetDataFromYahooUtil();
- StockData sd = stockUtil.getStockCsvData("600629.ss", "2012-12-31");
- System.out.println(sd);
- }
- }
测试结果:
StockData [code=600629, date=2012-12-31, open=7.059999942779541, high=7.25, low=7.050000190734863, close=7.130000114440918, volume=1831800.0, adj=7.130000114440918]



雷达卡






京公网安备 11010802022788号







