public void QueryStockHistoryPrice(String market, String code) throws Exception {
		
		//date->PriceRecord
		HashMap<String, PriceRecord> stock_price	= new HashMap<String, PriceRecord>();
		
		//先获取历史数据
		String url_actual = YAHOO_URL + code + "." + (market.equals(TransDetailRecord.MARKET_SH) ? "ss" : market);
		
		log.info("request url:" + url_actual);
		
		URL url = new URL(url_actual);
		ArrayList<String> raws	= HttpUrl(url);
		
		if (raws.size() == 0) {
			throw new Exception(url_actual + " return null");
		}
		
		Pattern pattern_date = Pattern.compile("^\\d{8}$");
		Matcher matcher		= null;
		
		//用于记录股票价格的起始、结束日期，便于后面补空
        String date_s	= null;
        
        SimpleDateFormat  sdf	= new SimpleDateFormat("yyyyMMdd");  
		String date_e	= sdf.format(new Date());  
        
		for (int i = 0; i < raws.size(); i++) {
			String raw = raws.get(i);
			String[] arrs	= raw.split(",");
			String stock_date	= arrs[0].replace("-", "");
			
			matcher = pattern_date.matcher(stock_date);
            if (! matcher.matches()) {
            	continue;
            }
            
            //结束时期不取接口返回的时间，用当前日期，
            /**
             * 交易日[1-5]	休息日[6-10]
             * 10号执行程序，那么6-9日的数据为空
             */
//            if (date_e == null) {
//            	date_e = stock_date;
//            }
            
            date_s = stock_date;
			
            PriceRecord pr = new PriceRecord();
            pr.open		= Double.parseDouble(arrs[1]);
			pr.close	= Double.parseDouble(arrs[4]);
			
			stock_price.put(stock_date, pr);
		}
		
		//补全非交易日的数据（用离非交易日最近的交易日数据补齐）
		Date date = sdf.parse(date_s);
		
		String date_str	= sdf.format(date);
		PriceRecord last_pr = null;
		while (!date_str.equals(date_e)) {
			if (!stock_price.containsKey(date_str)) {
				stock_price.put(date_str, last_pr);
			}
			
			last_pr	= stock_price.get(date_str);
			date.setTime((date.getTime() / 1000 + 86400) * 1000);
			date_str	= sdf.format(date);
		}
		
		String key = market + "," + code;
		stock_map.put(key, stock_price);
	}