Java yahoo 雅虎 股票接口获取股票交易数据

来源:互联网 发布:软件项目团队管理 编辑:程序博客网 时间:2024/05/22 08:23
/** * 股票实体类 * @ 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股票数据接口工具类 * @ 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?";    /**     * 根据 股票编码、开始日期、结束日期 获取股票数据     *      * @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;    }    /**     * 根据 股票编码、日期 获取股票数据     *     * @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);    }    /**     * 根据 股票编码 获取当天股票数据     *      * @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]

0 0
原创粉丝点击