以下文章来源于https://www.joinquant.com/view/community/detail/16970
不限语言·极速调取 | JQData HTTP 接口正式上线
聚宽量化数据接口JQData自上线以来,覆盖了银行、证券、保险、基金等各大金融机构以及高校师生和广大个人量化投资者们。历经一年多百亿级实盘交易量考验,完全具备商用数据的稳定性和准确性。为了保证数据质量,聚宽每年从各大交易所、统计局等权威官方渠道获取原始数据授权,再由专业的数据团队清洗入库,加工出适用于量化场景的数据和因子体系,拥有自有数据版权,做到“专业可依赖“。
新的一年,JQData除继续支持Python SDK外,还正式推出了不限编程语言的HTTP接口,无论你用的是:C、C++、C#、Java、R、Matlab、PHP、Go、NodeJS还是Ruby等任何一种语言,都能轻松方便的调用JQData提供的全品种量化金融数据。
在新上线的 HTTP 接口中,我们采用 post 机制,用户只需提交 JSON body 参数,就能获取股票、指数、基金、期货、期权、宏观经济、因子数据、舆情数据等量化研究所需的各类金融数据。点击申请JQData使用权限。 下面我们来一一讲解JQData HTTP 接口的各个部分。
url:
https://dataapi.joinquant.com/apis 请求JQData数据的http接口地址
token:
请求数据接口前需要使用get_token函数获取调用数据的身份凭证,通过post方法传入申请JQData时填入的手机号和密码(密码是聚宽官网登录密码;新申请用户是手机号后6位):
body= {
"method" : "get_token",
"mob" : "135xxxxxxx",
"pwd" : "xxxxxxxxxx"
}
返回token结果如下所示:
body:通过post方法传入 JSON 格式的字符串,获取指定的金融量化数据,body 参数由如下部分组成:
```body={
"method" : 指定获取数据的方法名,调用指定数据品种
"token" : 调用数据接口的身份验证,当天有效,失效后可重新获取
"param1" : 指定method方法输入的参数1
"param2" : 指定method方法输入的参数2
…
}
输出结果:返回 CSV 格式的文本数据,例如使用 get_all_securities 方法获取所有标的信息的返回结果如下:
000001.XSHE,平安银行,PAYH,1991-04-03,2200-01-01,stock
000002.XSHE,万科A,WKA,1991-01-29,2200-01-01,stock
…
下面,我们来用具体的代码示例演示一下:
import requests, json
import pandas as pd
#获取调用凭证
url = "https://dataapi.joinquant.com/apis"
body = {
"method": "get_token",
"mob": "ID", #ID是申请JQData时所填写的手机号
"pwd": "Password", # Password为聚宽官网登录密码,新申请用户默认为手机号后6位
}
response = requests.post(url, data=json.dumps(body))
token = response.text
#调用get_all_securities函数获取所有股票信息
body = {
"method": "get_all_securities",
"token": token,
"code": "stock",
"date": "2019-01-15"
}
response = requests.post(url, data=json.dumps(body))
stock = response.text
#写入CSV文件
with open('C:/Users/jase8/Desktop/test/stock.csv', 'w')as f:
f.write(stock)
#读取CSV文件转化成dataframe
df = pd.read_csv('C:/Users/jase8/Desktop/test/stock.csv',
'utf-8',engine='python')
print(df)
code,display_name,name,start_date,end_date,type
0 000001.XSHE,平安银行,PAYH,1991-0 4-03,2200-01-01,stock
1 000002.XSHE,万科A,WKA,1991-01-29,2200-01-01,stock
2 000004.XSHE,国农科技,GNKJ,1990-12-01,2200-01-01,stock
3 000005.XSHE,世纪星源,SJXY,1990-12-10,2200-01-01,stock
slCharacterEncoding('UTF-8')
url = 'https://dataapi.joinquant.com/apis';
options = weboptions('RequestMethod','post','MediaType','application/json');
body = struct('method','get_token','mob','135xxxxxxx','pwd','xxxxxxxxxx');
token = webwrite(url,body,options);
body = struct('method','get_security_info','token',token,'code','600519.XSHG');
options = weboptions('RequestMethod','post','ContentReader',@readtable, 'MediaType','application/json');
result = webwrite(url,body,options);
% writetable(result,'xxxxxx.csv')
result
code,display_name,name,start_date,end_date,type,parent
600519.XSHG,贵州茅台,GZMT,2001-08-27,2200-01-01,stock,
library(httr)
url <- "https://dataapi.joinquant.com/apis"
body <- list(
method = "get_token",
mob = "135xxxxxxx",
pwd = "xxxxxxxxxx"
)
r <- POST(url, body = body, encode = "json")
token <- content(r)
body <- list(
method = "get_security_info",
token = token,
code = "600519.XSHG"
)
r <- POST(url, body = body, encode = "json")
content(r)
code,display_name,name,start_date,end_date,type,parent
600519.XSHG,贵州茅台,GZMT,2001-08-27,2200-01-01,stock,
using System;
using System.Net.Http;
using System.Text;
using System.Web.Script.Serialization;
namespace JQData.Samples
{
class Program
{
static void Main(string[] args)
{
QuerySecurityInfo();
}
static void QuerySecurityInfo()
{
var url = "https://dataapi.joinquant.com/apis";
using (var client = new HttpClient())
{
//需要添加System.Web.Extensions
//生成JSON请求信息
string json = new
JavaScriptSerializer().Serialize(new
{
method = "get_token",
mob = "135xxxxxxx", //mob是申请JQData时所填写的手机号
pwd = "xxxxxxxxxx" //Password为聚宽官网登录密码,新申请用户默认为手机号后6位
});
var content = new StringContent(json,
Encoding.UTF8, "application/json");
//POST请求并等待结果
var result = client.PostAsync(url,
content).Result;
//读取返回的TOKEN
string token = result.Content.ReadAsStringAsync().Result;
string body = new JavaScriptSerializer().Serialize(new
{
method = "get_security_info",
token = token, //token
code = "600519.XSHG" //代码
});
var bodyContent = new StringContent(body,
Encoding.UTF8, "application/json");
//POST请求并等待结果
result = client.PostAsync(url,
bodyContent).Result;
//code,display_name,name,start_date,end_date,type,parent
//600519.XSHG,贵州茅台,GZMT,2001-08-27,2200-01-01,stock,
var securityInfo = result.Content.ReadAsStringAsync().Result;
Console.WriteLine("Result\n" + securityInfo);
}
}
}
}