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

    xiaoxiao2021-04-12  39

    /**  * 股票实体类  * @ 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]
    转载请注明原文地址: https://ju.6miu.com/read-667200.html

    最新回复(0)