Java调用聚宽股票接口API保存数据库

最近想在网上爬一些股票日线数据用来分析,然后做一些钉钉预警功能。找来找去,最终选择聚宽http api接口。

1.搜狐

只有日线接口,当天日线数据要等到下午4:30以后。
另外每次只能获取100条数据。
方法:https://q.stock.sohu.com/hisHq?code=cn_000001&start=20210301&end=20210301&stat=2&order=A&period=d&callback=historySearchHandler&rt=jsonp

2.新浪

获取最新的股票行情
方法:http://hq.sinajs.cn/list=sz000001
其他接口参考下面链接
https://blog.csdn.net/Llingmiao/article/details/79941066

3.聚宽

聚宽数据比较全面,基本接口都有,但每天限制100万条记录。对一般用户也足够了。
聚宽API链接地址:
https://www.joinquant.com/help/api/help#JQDataHttp:get_all_securities-%E8%8E%B7%E5%8F%96%E6%89%80%E6%9C%89%E6%A0%87%E7%9A%84%E4%BF%A1%E6%81%AF

例子:get_all_securities - 获取所有标的信息

public String get_all_securities(String token,String code,String date) {
        Map<String,String> paramMap = new HashMap<>();
        paramMap.put("method","get_all_securities");
        // 获取当前token
        paramMap.put("token",token);
        // 标的类型 
        paramMap.put("code",code);
        // 日期
        paramMap.put("date",date);

        String result = HttpClientUtil.postJson("https://dataapi.joinquant.com/apis", JSON.toJSONString(paramMap));
        System.out.println(result);

        return result;
    }

返回字符串:
code,display_name,name,start_date,end_date,type
000001.XSHE,平安银行,PAYH,1991-04-03,2200-01-01,stock
000002.XSHE,万科A,WKA,1991-01-29,2200-01-01,stock

处理返回数据保存数据库

public Boolean initSecurities(StockType stockType) {
        String token = ijqDataHttpApiService.get_current_token();

        // 初始化标的信息
        String result = ijqDataHttpApiService.get_all_securities(token,stockType.getCode(),"");

        if(StringUtils.isEmpty(result)){
            System.out.println("初始化标的信息为空");
            return false;
        }
        String[] arrResult = result.split("\\n");
        List<Securities> lists = new ArrayList<>(arrResult.length-1);
        for(int i=1; i<arrResult.length; i++){
            String[] arrSecurities = arrResult[i].split(",");
            Securities securities = new Securities();
            securities.setStockCode(arrSecurities[0]);
            securities.setStockName(arrSecurities[1]);
            securities.setNickName(arrSecurities[2]);
            securities.setStockType(arrSecurities[5]);
            securities.setStartDate(arrSecurities[3]);
            securities.setEndDate(arrSecurities[4]);
            lists.add(securities);
        }
        return this.saveBatch(lists,100);
    }```


  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java中连接MySQL数据库需要使用JDBC API,以下是一个简单的连接MySQL数据库并双向传输数据的示例代码: ```java import java.sql.*; public class MySQLDemo { public static void main(String[] args) { String url = "jdbc:mysql://localhost:3306/testdb?useSSL=false&characterEncoding=utf-8"; String user = "root"; String password = "123456"; Connection conn = null; Statement stmt = null; ResultSet rs = null; try { // 加载MySQL JDBC驱动 Class.forName("com.mysql.jdbc.Driver"); // 建立连接 conn = DriverManager.getConnection(url, user, password); // 创建Statement对象 stmt = conn.createStatement(); // 查询数据 String sql = "SELECT * FROM user"; rs = stmt.executeQuery(sql); // 遍历结果集 while (rs.next()) { int id = rs.getInt("id"); String name = rs.getString("name"); String gender = rs.getString("gender"); System.out.println(id + "\t" + name + "\t" + gender); } // 插入数据 sql = "INSERT INTO user (name, gender) VALUES ('Tom', 'male')"; int rows = stmt.executeUpdate(sql); System.out.println(rows + " rows affected."); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } finally { // 关闭连接 try { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } } } ``` 以上代码连接了一个名为testdb的MySQL数据库,并查询了user表的所有数据,并插入了一条数据。需要注意的是,连接MySQL数据库的参数需要根据实际情况进行修改。 希望这个示例代码对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值