最近一两年内,股票量化分析逐渐成为热门话题。而从事这一领域工作的第一步,就是获取全面且准确的股票数据。因为无论是实时交易数据、历史交易记录、财务数据还是基本面信息,这些数据都是我们进行量化分析时不可或缺的宝贵资源。我们的主要任务是从这些数据中提炼出有价值的信息,为我们的投资策略提供有力的指导。

在数据探索的旅途中,我尝试了多种方法,包括自编网易股票页面爬虫、申万行业数据爬虫,以及同花顺问财的爬虫,甚至还使用了聚宽的免费数据API。然而,爬虫作为数据源常常显得不够稳定,给我们的量化分析带来不小的困扰。

在量化分析领域,实时且准确的数据接口是成功的基石。经过多次实际测试,我将已确认可用的数据接口分享给正在从事量化分析的朋友们,希望能够对你们的研究和工作有所帮助,接下来我会用Python、JavaScript(Node.js)、Java、C#和Ruby五种主流语言的实例代码给大家逐一演示一下如何获取各类股票数据:

1、python

import requests  
  
url = "http://api.mairui.club/hszbl/fsjy/000001/60m/b997d4403688d5e66a"  
response = requests.get(url)  
data = response.json()  
print(data)

2、JavaScript (Node.js)

const axios = require('axios');  
  
const url = "http://api.mairui.club/hszbl/fsjy/000001/60m/b997d4403688d5e66a";  
axios.get(url)  
  .then(response => {  
    console.log(response.data);  
  })  
  .catch(error => {  
    console.log(error);  
  });

3、Java

import java.net.URI;  
import java.net.http.HttpClient;  
import java.net.http.HttpRequest;  
import java.net.http.HttpResponse;  
import java.io.IOException;  
  
public class Main {  
    public static void main(String[] args) {  
        HttpClient client = HttpClient.newHttpClient();  
        HttpRequest request = HttpRequest.newBuilder()  
            .uri(URI.create("http://api.mairui.club/hszbl/fsjy/000001/60m/b997d4403688d5e66a"))  
            .build();  
  
        try {  
            HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());  
            System.out.println(response.body());  
        } catch (IOException | InterruptedException e) {  
            e.printStackTrace();  
        }  
    }  
}

4、C#

using System;  
using System.Net.Http;  
using System.Threading.Tasks;  
  
class Program  
{  
    static async Task Main()  
    {  
        using (HttpClient client = new HttpClient())  
        {  
            string url = "http://api.mairui.club/hszbl/fsjy/000001/60m/b997d4403688d5e66a";  
            HttpResponseMessage response = await client.GetAsync(url);  
            string responseBody = await response.Content.ReadAsStringAsync();  
            Console.WriteLine(responseBody);  
        }  
    }  
}

5、Ruby

require 'net/http'  
require 'json'  
  
url = URI("http://api.mairui.club/hszbl/fsjy/000001/60m/b997d4403688d5e66a")  
  
http = Net::HTTP.new(url.host, url.port)  
request = Net::HTTP::Get.new(url)  
response = http.request(request)  
data = JSON.parse(response.read_body)  
puts data

返回的数据示例:[{“d”:“2024-08-27 15:00”,“o”:“10.43”,“h”:“10.45”,“l”:“10.42”,“c”:“10.43”,“v”:“163804”,“e”:“170990736.00”,“zf”:“0.29”,“hs”:“0.08”,“zd”:“0.00”,“zde”:“0.00”},{“d”:“2024-08-28 10:30”,“o”:“10.41”,“h”:“10.43”,“l”:“10.28”,“c”:“10.31”,“v”:“382111”,“e”:“395503852.00”,“zf”:“1.44”,“hs”:“0.20”,“zd”:“-1.15”,“zde”:“-0.12”},{“d”:“2024-08-28 11:30”,“o”:“10.32”,“h”:“10.38”,“l”:“10.29”,“c”:“10.36”,“v”:“184046”,“e”:“190148007.00”,“zf”:“0.87”,“hs”:“0.09”,“zd”:“0.48”,“zde”:“0.05”},{“d”:“2024-08-28 14:00”,“o”:“10.36”,“h”:“10.36”,“l”:“10.29”,“c”:“10.31”,“v”:“177854”,“e”:“183509437.00”,“zf”:“0.68”,“hs”:“0.09”,“zd”:“-0.48”,“zde”:“-0.05”},{“d”:“2024-08-28 15:00”,“o”:“10.31”,“h”:“10.33”,“l”:“10.29”,“c”:“10.33”,“v”:“198536”,“e”:“204710849.00”,“zf”:“0.39”,“hs”:“0.10”,“zd”:“0.19”,“zde”:“0.02”},{“d”:“2024-08-29 10:30”,“o”:“10.31”,“h”:“10.38”,“l”:“10.18”,“c”:“10.24”,“v”:“452429”,“e”:“464700149.00”,“zf”:“1.94”,“hs”:“0.23”,“zd”:“-0.87”,“zde”:“-0.09”},{“d”:“2024-08-29 11:30”,“o”:“10.24”,“h”:“10.24”,“l”:“10.14”,“c”:“10.17”,“v”:“288148”,“e”:“293223054.00”,“zf”:“0.98”,“hs”:“0.15”,“zd”:“-0.68”,“zde”:“-0.07”},{“d”:“2024-08-29 14:00”,“o”:“10.17”,“h”:“10.18”,“l”:“10.11”,“c”:“10.14”,“v”:“210424”,“e”:“213224808.00”,“zf”:“0.69”,“hs”:“0.11”,“zd”:“-0.29”,“zde”:“-0.03”},{“d”:“2024-08-29 15:00”,“o”:“10.13”,“h”:“10.16”,“l”:“10.12”,“c”:“10.13”,“v”:“246676”,“e”:“250203075.00”,“zf”:“0.39”,“hs”:“0.13”,“zd”:“-0.10”,“zde”:“-0.01”},{“d”:“2024-08-30 10:30”,“o”:“10.11”,“h”:“10.24”,“l”:“10.11”,“c”:“10.13”,“v”:“481791”,“e”:“490082225.00”,“zf”:“1.28”,“hs”:“0.25”,“zd”:“0.00”,“zde”:“0.00”},{“d”:“2024-08-30 11:30”,“o”:“10.14”,“h”:“10.26”,“l”:“10.11”,“c”:“10.25”,“v”:“337418”,“e”:“344039027.00”,“zf”:“1.48”,“hs”:“0.17”,“zd”:“1.18”,“zde”:“0.12”},{“d”:“2024-08-30 14:00”,“o”:“10.24”,“h”:“10.26”,“l”:“10.20”,“c”:“10.21”,“v”:“245258”,“e”:“250881200.00”,“zf”:“0.59”,“hs”:“0.13”,“zd”:“-0.39”,“zde”:“-0.04”},{“d”:“2024-08-30 15:00”,“o”:“10.21”,“h”:“10.22”,“l”:“10.16”,“c”:“10.16”,“v”:“229592”,“e”:“233856223.00”,“zf”:“0.59”,“hs”:“0.12”,“zd”:“-0.49”,“zde”:“-0.05”}]

历史分时交易API说明文档

API接口:http://api.mairui.club/hszbl/fsjy/股票代码(如000001)/分时级别/b997d4403688d5e66a

接口说明:根据《股票列表》得到的股票代码和分时级别获取历史交易数据,交易时间从远到近排序。目前 分时级别 支持5分钟、15分钟、30分钟、60分钟、日周月年级别(包括前后复权),对应的值分别是 5m(5分钟)、15m(15分钟)、30m(30分钟)、60m(60分钟)、dn(日线未复权)、dq(日线前复权)、dh(日线后复权)、wn(周线未复权)、wq(周线前复权)、wh(周线后复权)、mn(月线未复权)、mq(月线前复权)、mh(月线后复权)、yn(年线未复权)、yq(年线前复权)、yh(年线后复权) 。

数据更新:分钟级别数据盘中更新,分时越小越优先更新,如5分钟级别会每5分钟更新,15分钟级别会每15分钟更新,以此类推,日线及以上级别每天16:00更新。

字段名称 数据类型 字段说明
d string 交易时间,短分时级别格式为yyyy-MM-dd HH:mm:ss,日线级别为yyyy-MM-dd
o number 开盘价(元)
h number 最高价(元)
l number 最低价(元)
c number 收盘价(元)
v number 成交量(手)
e number 成交额(元)
zf number 振幅(%)
hs number 换手率(%)
zd number 涨跌幅(%)
zde number 涨跌额(元)

【重要提示】

上方所有演示中的API接口Url链接结尾的b997d4403688d5e66a,均为数据请求licence证书,因为这个证书是官方测试证书,仅可用于验证各个接口的有效性,所以这个证书限制了只可请求股票代码为000001的数据,正式环境中是不能使用的,证书可以自己去申请一个替换掉就好了,证书是免费申请的:https://www.mairui.club/getlicence.html,替换成自己申请的证书就可以请求任何股票数据了。

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐