最最近一两年内,股票量化分析逐渐成为热门话题。而从事这一领域工作的第一步,就是获取全面且准确的股票数据。因为无论是实时交易数据、历史交易记录、财务数据还是基本面信息,这些数据都是我们进行量化分析时不可或缺的宝贵资源。我们的主要任务是从这些数据中提炼出有价值的信息,为我们的投资策略提供有力的指导。
在数据探索的旅途中,我尝试了多种方法,包括自编网易股票页面爬虫、申万行业数据爬虫,以及同花顺问财的爬虫,甚至还使用了聚宽的免费数据API。然而,爬虫作为数据源常常显得不够稳定,给我们的量化分析带来不小的困扰。
在量化分析领域,实时且准确的数据接口是成功的基石。经过多次实际测试,我将已确认可用的数据接口分享给正在从事量化分析的朋友们,希望能够对你们的研究和工作有所帮助,接下来我会用Python、JavaScript(Node.js)、Java、C#和Ruby五种主流语言的实例代码给大家逐一演示一下如何获取各类股票数据:
历史分时MA
接口URL(可直接点击在浏览器中打开验证):http://api.mairui.club/zs/hma/sh000001/60m/b997d4403688d5e66a
1、python
import requests
url = "http://api.mairui.club/zs/hma/sh000001/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/zs/hma/sh000001/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/zs/hma/sh000001/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/zs/hma/sh000001/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/zs/hma/sh000001/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
返回的数据示例:
[{"t":"2024-07-19 14:00","ma3":"10.33","ma5":null,"ma10":null,"ma15":null,"ma20":null,"ma30":null,"ma60":null,"ma120":null,"ma200":null,"ma250":null},{"t":"2024-07-19 15:00","ma3":"10.35","ma5":null,"ma10":null,"ma15":null,"ma20":null,"ma30":null,"ma60":null,"ma120":null,"ma200":null,"ma250":null},{"t":"2024-07-22 10:30","ma3":"10.30","ma5":"10.31","ma10":null,"ma15":null,"ma20":null,"ma30":null,"ma60":null,"ma120":null,"ma200":null,"ma250":null},{"t":"2024-07-22 11:30","ma3":"10.26","ma5":"10.29","ma10":null,"ma15":null,"ma20":null,"ma30":null,"ma60":null,"ma120":null,"ma200":null,"ma250":null},{"t":"2024-07-22 14:00","ma3":"10.21","ma5":"10.27","ma10":null,"ma15":null,"ma20":null,"ma30":null,"ma60":null,"ma120":null,"ma200":null,"ma250":null},{"t":"2024-07-22 15:00","ma3":"10.22","ma5":"10.24","ma10":null,"ma15":null,"ma20":null,"ma30":null,"ma60":null,"ma120":null,"ma200":null,"ma250":null},{"t":"2024-07-23 10:30","ma3":"10.24","ma5":"10.23","ma10":null,"ma15":null,"ma20":null,"ma30":null,"ma60":null,"ma120":null,"ma200":null,"ma250":null},{"t":"2024-07-23 11:30","ma3":"10.27","ma5":"10.25","ma10":"10.28","ma15":null,"ma20":null,"ma30":null,"ma60":null,"ma120":null,"ma200":null,"ma250":null},{"t":"2024-07-23 14:00","ma3":"10.29","ma5":"10.26","ma10":"10.28","ma15":null,"ma20":null,"ma30":null,"ma60":null,"ma120":null,"ma200":null,"ma250":null},{"t":"2024-07-23 15:00","ma3":"10.25","ma5":"10.25","ma10":"10.26","ma15":null,"ma20":null,"ma30":null,"ma60":null,"ma120":null,"ma200":null,"ma250":null},{"t":"2024-07-24 10:30","ma3":"10.21","ma5":"10.24","ma10":"10.24","ma15":null,"ma20":null,"ma30":null,"ma60":null,"ma120":null,"ma200":null,"ma250":null},{"t":"2024-07-24 11:30","ma3":"10.18","ma5":"10.22","ma10":"10.23","ma15":null,"ma20":null,"ma30":null,"ma60":null,"ma120":null,"ma200":null,"ma250":null}]
API接口:http://api.mairui.club/zs/hma/指数代码(如sh000001)/分时级别/您的licence
接口说明:接口说明:根据《指数列表》得到的指数代码(包含sh/sz前缀,如:sh000001)和分时级别获取历史ma数据,交易时间从远到近排序。目前 分时级别 支持5分钟、15分钟、30分钟、60分钟、日周月年级别,对应的值分别是 5m、15m、30m、60m、dn、wn、mn、yn 。
数据更新:分钟级别数据盘中更新,分时越小越优先更新,如5分钟级别会每5分钟更新,15分钟级别会每15分钟更新,以此类推,日线及以上级别每天16:00更新。
字段名称 | 数据类型 | 字段说明 |
---|---|---|
t | string | 交易时间,短分时级别格式为yyyy-MM-dd HH:mm:ss,日线级别为yyyy-MM-dd |
ma3 | number | MA3,没有则为null |
ma5 | number | MA5,没有则为null |
ma10 | number | MA10,没有则为null |
ma15 | number | MA20,没有则为null |
ma20 | number | MA20,没有则为null |
ma30 | number | MA30,没有则为null |
ma60 | number | MA60,没有则为null |
ma120 | number | MA120,没有则为null |
ma200 | number | MA200,没有则为null |
ma250 | number | MA250,没有则为null |