`
commissioner
  • 浏览: 23053 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

股票查询1.2版本

 
阅读更多

无注释。

两个方法:

executeQuery();查询集合中所有的股票信息

executeQueryWithFilter(Float indexRate,Float normalRate);查询超过一定涨幅的股票,将低于涨幅的过滤掉。indexRate:指数涨幅点过滤;normalRate目标涨幅过滤点。

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class Query {
	private String requestUrl = "http://qt.gtimg.cn/r=0.7938921226847172q=";  
    private long sleepSecond = 10;  
  
    private List<String> stockCodeList;  
    private SimpleDateFormat dateFormate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  
    
    private Set<String> indexCodeSet = new HashSet<String>(2);;
    
    public Query(List<String> stockCodeList,long sleepSecond)  
    {  
        this.stockCodeList = stockCodeList;  
        this.sleepSecond = sleepSecond; 
        
        indexCodeSet.add("000001");
        indexCodeSet.add("399006");
    }  
      
    public void executeQuery() throws IOException, InterruptedException  
    {  
    	query(null, null);
    }  
    
    public void executeQueryWithFilter(Float indexRate,Float normalRate) throws IOException, InterruptedException  
    {  
    	query(indexRate, normalRate);
          
    }  
    
    private void query(Float indexRate,Float normalRate)throws IOException, InterruptedException{
    	String request = getRequestData();  
        while (true)  
        {  
        	
        	Calendar ca  = Calendar.getInstance();
        	ca.setTime(new Date());
            System.out.println(dateFormate.format(ca.getTime()));  
            System.out.println("***********************************************************************");  
             
           
            sendRequest(request,indexRate,normalRate);  
           
            if(!inTradeTime()){
            	break;
            }
            
            Thread.sleep(sleepSecond * 1000);  
        }  
    }
    
    private String getRequestData()  
    {  
        StringBuilder requestUrlWithPara = new StringBuilder(requestUrl);   
        for(String code : stockCodeList)  
        {  
            requestUrlWithPara.append(code+",");  
        }  
          
        if(stockCodeList.size() > 0)  
        {  
            requestUrlWithPara.deleteCharAt(requestUrlWithPara.length()-1);  
        }  
          
        return requestUrlWithPara.toString();  
    } 
    
    private boolean inTradeTime(){
 	   Calendar ca  = Calendar.getInstance();
 	   ca.setTime(new Date());
 	   int hour = ca.get(Calendar.HOUR_OF_DAY);
 	   if(hour>=9 && hour<=15){
 		   return true;
 	   }
 	   return false;
    }
    
      
    private void sendRequest(String request,Float indexRate,Float normalRate) throws IOException  
    {  
        URL url = new URL(request);  
        URLConnection conn = url.openConnection(); 
        
        InputStream in = conn.getInputStream();  
        BufferedReader br = new BufferedReader(new InputStreamReader(in,"GBK"));  
        String tmp = null; 
        List<String> stockList = new ArrayList<String>();
        while (null != (tmp = br.readLine()))  
        {  
        	stockList.add(tmp);
        }  
        br.close();  
        in.close();  
        
        for(String stock : stockList){
        	displayMessage(stock,indexRate,normalRate);
        }
    }  
    
    private void displayMessage(String stock,Float indexRange,Float normalRange){
    	 
    	 String stockInfo = stock.replace('~', '\t');  
         int index = stockInfo.indexOf('=');  
               
         stockInfo = stockInfo.substring(index + 2);  
         int headerIndex = stockInfo.indexOf("\t");  
         stockInfo = stockInfo.substring(headerIndex+1);  
         int last = stockInfo.lastIndexOf(";");  
         stockInfo = stockInfo.substring(0, last-1);  
         
         stockInfo = replaceInMap(stockInfo);
         
         String[] arr = stockInfo.split("\t");//SZZS, 000001, 2979.43, 18.46, 0.62, 175074344, 20081844
         StringBuilder sbuilder = new StringBuilder();
         
         if(indexCodeSet.contains(arr[1])){//上证指数,中小板指数
        	 if(indexRange== null 
        			 || (indexRange != null && outOfRange(indexRange, arr[4]))){
        		 for(int i = 0 ; i < 5 ; i++){
        			 sbuilder.append(arr[i]+"\t");	
        		 }
        	 }
         }else{
        	 
        	 if(normalRange == null || (normalRange != null && outOfRange(normalRange, arr[4])) ){
        		 for(int i = 0 ; i < 5 ; i++){
        			 sbuilder.append(arr[i]+"\t");	
        		 }
        	 }
        	 
         }
         
         if(sbuilder.length() > 0){
        	 System.out.println(sbuilder.toString()); 
         }
    }
    
    private boolean outOfRange(Float range,String actRateStr ){
    	Float actRate = Float.valueOf(actRateStr);
    	if(actRate >= 0){//
    		return actRate.floatValue() >= range.floatValue() ? true : false;
    	}else{
    		return actRate.floatValue() <= range.floatValue()*-1 ? true : false;
    	}
    }
    
    private String replaceInMap(String content){
    	
    	Map<String,String> map = new HashMap<String, String>();
    	map.put("粤 传 媒", "YCM");
    	map.put("晋西车轴", "JXCZ");
    	map.put("太安堂", "TAT*");
    	map.put("福耀玻璃", "FYBL*");
    	map.put("中联重科", "ZLZK*");
    	map.put("上证指数", "SZZS");
    	map.put("九洲电气", "JZDQ");
    	map.put("创业板指", "CYBZ");
    	map.put("云南铜业", "YNTY*");
    	map.put("慈星股份", "CXGF*");
    	map.put("招商证券", "ZSZQ*");
    	map.put("南都电源", "NDDY");
    	map.put("歌华有线", "GHYX*");
    	String newContent = new String(content);
    	for(Entry<String, String> entry : map.entrySet()){
    		newContent = newContent.replace(entry.getKey(), entry.getValue());
    	}
    	
    	
    	return newContent;
    }
      
    
    
    
    public static void main(String[] args)   
    {  
        //股票代号列表  
        List<String> codeList = new ArrayList<String>();  
        codeList.add("s_sh000001"); 
        codeList.add("s_sz399006");

        codeList.add("s_sz000878"); 
        codeList.add("s_sh600999");
        codeList.add("s_sz300307"); 
        codeList.add("s_sz002433");
        codeList.add("s_sz000157"); 
        codeList.add("s_sh600660"); 
        codeList.add("s_sh600037"); 
        
        codeList.add("s_sz002181"); 
        codeList.add("s_sz300040");
        codeList.add("s_sz300068");
       
        Query stockQuery = new Query(codeList, 20);  
        try  
        {  
            stockQuery.executeQuery(); //普通查询
//            stockQuery.executeQueryWithFilter(1.00F,2.00f); //过滤查询
        }  
        catch (IOException e)  
        {  
            e.printStackTrace();  
        }  
        catch (InterruptedException e)  
        {  
            e.printStackTrace();  
        }  
  
    }  
      
}

 

 

分享到:
评论

相关推荐

    交易日节假日查询API接口规范

    1.2 接口地址 接口地址为http://42.194.194.188:8080/findbydatep。 注意:本接口不支持并发请求,不支持压测。 1.3 请求调用方式 请求方式为POST,Content-Type为application/x-www-form-urlencoded。 1.4 ...

    透明看股神器划水必备摸鱼摸鱼

    如果是插件,它可能需要安装在特定的浏览器或桌面环境中,以便与之配合使用,提供股票信息查询功能。 压缩包中的文件`gp_test_v1.2.exe`很可能就是这个透明看股工具的可执行文件,版本为1.2。通常,`.exe`文件是...

    股票客户端用户手册v2.0整理.pdf

    用户需要确保自己的计算机满足特定的硬件和软件要求,如操作系统版本、内存大小、网络连接等,才能顺利运行股票客户端。 2. 客户端程序的安装 手册详细指导用户如何下载和安装股票客户端。首先,用户需要找到并下载...

    wind c++接口

    接口版本经历了多次更新,例如这里提到的版本1.2,修订时间是2014年2月12日,可以查询到的是一系列函数和方法,用于在Wind量化平台中实现特定的数据和交易操作。 ### 数据接口功能函数 Wind C++接口中的数据接口...

    Java EE 7 Specification APIs

    1.2版本包含了一些改进,使得与EL表达式更紧密集成,增强了标签的功能。 4. **EJB 3.2**: Entity Bean、Session Bean和Message-driven Bean是Java EE中的核心组件。EJB 3.2引入了轻量级模式,简化了Bean的创建和...

    Informix SQL参考指南

    #### 1.2 版本介绍 本次提到的版本是IBM Informix SQL 9.4。该版本相较于之前的版本在性能、稳定性方面有所提升,并且引入了一些新的特性和改进,以满足不断变化的企业需求。版本号中的“9.4”表明了这是一个相对...

    语义开放平台API介绍

    - **股票查询**:查询股票信息。 - **故事**:讲述故事。 - **诗歌**:朗诵诗歌。 - **成语**:解释成语。 - **知识**:提供各种知识问答。 - **翻译**:文本翻译。 - **单位换算**:单位转换。 - **时间、日期**:...

    javaee7api.zip

    3. **WebSocket 1.0**: Java EE 7引入了WebSocket API,提供了一种低延迟、全双工的通信机制,适合实时交互应用,如在线游戏、聊天室和股票交易系统。 4. **JSF 2.2**: JavaServer Faces(JSF)更新了视图状态管理...

    易语言模块大全(共775个模块)

    股票查询(1.0).zip 高彩光标模块(含2种光标)(1.0).zip 高级信息框(1.0).zip 高级易模块集(1.0).zip 高级液晶数字1.1(1.1).zip 高级表格存为excel(1.0).zip 高级表格到数据库(1.0).zip 高级表格扩展模块(1.0).zip ...

    易语言700模块打包

    股票查询(1.0).zip 高彩光标模块(含2种光标)(1.0).zip 高级信息框(1.0).zip 高级易模块集(1.0).zip 高级液晶数字1.1(1.1).zip 高级表格存为excel(1.0).zip 高级表格到数据库(1.0).zip 高级表格扩展模块(1.0)....

    微信公众平台开发最佳实践 源码及书箱

    1.2 微信公众平台 2 1.2.1 功能 2 1.2.2 管理 5 1.2.3 服务 6 1.2.4 统计 7 1.2.5 设置 9 第2章 获取服务器资源 11 2.1 新浪SAE 11 2.1.1 申请账号 11 2.1.2 创建应用 13 2.1.3 创建版本 14 2.1.4 上传...

    微信公众平台开发最佳实践 源代码

    1.2 微信公众平台 2 1.2.1 功能 2 1.2.2 管理 5 1.2.3 服务 6 1.2.4 统计 7 1.2.5 设置 9 第2章 获取服务器资源 11 2.1 新浪SAE 11 2.1.1 申请账号 11 2.1.2 创建应用 13 2.1.3 创建版本 14 2.1.4 上传...

    易语言模块大全(401个)

    股票查询.ec 配置文件扩充操作模块.ec 网络服务器模块.ec 特效窗口模块.ec 水波特效模块.ec 取IP及地理位置模块.ec E库多条件查询模块.ec EXE→SWF转换模块.ec 树型框三级填充.ec 驱动器相关模块.ec 文件字符替换...

    javaee5-doc-api

    在Java EE 5中,JSP 2.1版本引入了EL(Expression Language)2.1和JSTL(JavaServer Pages Standard Tag Library)1.2,这两者都增强了表达式编写和页面逻辑的处理能力。EL2.1提供了更多的操作符,而JSTL则提供了更...

    易语言模块914个

    E库多条件查询模块.ec E库模糊查询模块.ec E电子琴.ec fhhs.ec FlyFox_hotkey.ec ForceSample.ec freemark模块_取文件.ec gdiplus类模块.ec GetStringSize.ec Hex-Dec.ec HTTP.ec http_ec.ec HTTP访问...

    大数据技术之Storm.doc

    - **Hive**:提供类似于SQL的查询语言来处理存储在HDFS中的大量数据。 **1.2 流式计算** 流式计算是指对实时产生的数据进行实时处理和计算的过程,通常涉及到数据的实时获取、实时传输、实时计算和实时展示。常用...

Global site tag (gtag.js) - Google Analytics