【量化分析--获取股票数据实例代码教程】Python、JavaScript(Node.js)、Java、C#和Ruby五种主流语言的实例代码给大家演示一下如何获取股票历史交易数据

最近一两年,股票量化分析越来越受欢迎了。想要入行,首先得搞定股票数据。毕竟,所有量化分析都是建立在数据之上的,实时交易、历史交易、财务、基本面,这些数据咱们都得有。咱们的目标就是挖掘这些数据中的价值,来指导咱们的投资策略。

​ 为了找数据,我可是尝试了各种方法,自己动手写过网易、申万行业的爬虫,还试过同花顺问财的,连聚宽的免费API都用过。但爬虫这东西,数据总是不稳定,给量化分析带来不少困扰。

​ 在量化分析领域,实时、准确的数据接口太重要了。现在我用Python、JavaScript(Node.js)、Java、C#和Ruby五种主流语言的实例代码给大家演示一下如何获取股票历史交易数据:

历史交易数据是区分分时级别的,我这里演示的都是60分钟级别的历史数据,其他级别可以参考下面的API文档自行修改参数就行了

1、python

import requests  
  
url = "http://api.mairui.club/hszbl/fsjy/000001/60m/b997d4403688d5e66a"  
response = requests.get(url)  
data = response.json()  
print(data)
  1. 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);  
  });
  1. 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();  
        }  
    }  
}
  1. 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);  
        }  
    }  
}
  1. 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更新。

字段名称数据类型字段说明
dstring交易时间,短分时级别格式为yyyy-MM-dd HH:mm:ss,日线级别为yyyy-MM-dd
onumber开盘价(元)
hnumber最高价(元)
lnumber最低价(元)
cnumber收盘价(元)
vnumber成交量(手)
enumber成交额(元)
zfnumber振幅(%)
hsnumber换手率(%)
zdnumber涨跌幅(%)
zdenumber涨跌额(元)

【重要提示】

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值