Julia : 如何利用julia获取Joinquant web api的数据?

126 篇文章 8 订阅
79 篇文章 13 订阅

聚宽推了web api数据接口,其中缺少Julia的方式,仅做一下补充。

一、joinquant web
详细的资料,不详述。
总体地讲,接口很不错,写起来很方便。跨语言,跨平台。
二、相关的Julia库
其中,可以用到HTTP,JSON两个库,具体可以查github.
#https://github.com/JuliaWeb/HTTP.jl/blob/master/src/HTTP.jl
JSON有两个库,最新的是JSON2,我现在用的是JSON.应差不多。
Pkg.add(“JSON2”)

三、试验—代码

using HTTP;
using JSON;

function get_token()
    url ="https://dataapi.joinquant.com/apis";
    params_0= Dict("method" => "get_token","mob" =>"137********","pwd" => "*********");// 替换其中密码,和账户
    r = HTTP.post( url, body=JSON.json(params_0))
    return String(r.body);
end
function get_security_info(token::String,code::String,date::String)
    params_1=Dict("method" => "get_security_info","token" => token,"code" => code,"date" =>date);
    data = HTTP.post(url, body=JSON.json(params_1))
    return String(data.body);
end
token =get_token();
println("获得token:{}",token);
println("请等待获取数据......");
data =get_security_info(token,"502050.XSHG","2019-01-15")
println("数据如下:.");
println(body)

四、对API进行封装

module JoinQuant
using HTTP;
using JSON;
const url ="https://dataapi.joinquant.com/apis";
const mobile_phone ="137********"
const pwd = "*****"
export get_token,get_security_info,get_all_securities,get_index_stocks,get_index_weights,get_industries
export get_industry,get_concepts,get_trade_days,get_all_trade_days,get_future_contracts,get_fund_info
export get_current_tick,get_price,get_bar,get_ticks
function get_token()
    params= Dict("method" => "get_token","mob" =>mobile_phone,"pwd" =>pwd );
    r = HTTP.post( url, body=JSON.json(params))
    return String(r.body);
end
function get_security_info(token::String,code::String,date::String)
    params=Dict("method" => "get_security_info","token" => token,"code" => code,"date" =>date);
    data = HTTP.post(url, body=JSON.json(params))
    return String(data.body);
end
#code: securities的类型,可选: stock, fund, index, futures, etf, lof, fja, fjb
function get_all_securities(token::String,code::String,date::String)
    params=Dict("method" => "get_all_securities","token" => token,"code" => code,"date" =>date);
    data = HTTP.post(url, body=JSON.json(params))
    return String(data.body);
end

function get_index_stocks(token::String,index_code::String,date::String)
    #"code": "000300.XSHG",
    params=Dict("method" => "get_index_stocks","token" => token,"code" => index_code,"date" =>date);
    data = HTTP.post(url, body=JSON.json(params))
    return String(data.body);
end
function get_margincash_stocks(token::String,date::String)
    params=Dict("method" => "get_margincash_stocks","token" => token,"date" =>date);
    data = HTTP.post(url, body=JSON.json(params))
    return String(data.body);
end

function get_marginsec_stocks(token::String,date::String)
    params=Dict("method" => "get_marginsec_stocks","token" => token,"date" =>date);
    data = HTTP.post(url, body=JSON.json(params))
    return String(data.body);
end


function get_locked_shares(token::String,date::String,end_date::String)
    params=Dict("method" => "get_locked_shares","token" => token,"date" =>date,"enddate"=>end_date);
    data = HTTP.post(url, body=JSON.json(params))
    return String(data.body);
end
# 注意json的字段的顺序
function get_index_weights(token::String,date::String)
    params=Dict("method" => "get_index_weights","token" => token,"date" =>date);
    data = HTTP.post(url, body=JSON.json(params))
    return String(data.body);
end

function get_industries(token::String,index_code::String)
    params=Dict("method" => "get_industries","token" => token,"code" =>index_code);
    data = HTTP.post(url, body=JSON.json(params))
    return String(data.body);
end
function get_industry(token::String,code::String,date::String)
    params=Dict("method" => "get_industry","token" => token,"code" =>code,"date"=>date);
    data = HTTP.post(url, body=JSON.json(params))
    return String(data.body);
end
function get_industry_stocks(token::String,code::String,date::String)
    params=Dict("method" => "get_industry_stocks","token" => token,"code" =>code,"date"=>date);
    data = HTTP.post(url, body=JSON.json(params))
    return String(data.body);
end
function get_concepts(token::String)
    params=Dict("method" => "get_concepts","token" => token);
    data = HTTP.post(url, body=JSON.json(params))
    return String(data.body);
end
function get_concept_stocks(token::String,code::String,date::String)
    params=Dict("method" => "get_concept_stocks","token" => token,"code"=>code,"date"=>date);
    data = HTTP.post(url, body=JSON.json(params))
    return String(data.body);
end
function get_trade_days(token::String,date::String,end_date::String)
    params=Dict("method" => "get_trade_days","token" => token,"date"=>date,"enddate"=>end_date);
    data = HTTP.post(url, body=JSON.json(params))
    return String(data.body);
end

function get_all_trade_days(token::String)
    params=Dict("method" => "get_trade_days","token" => token);
    data = HTTP.post(url, body=JSON.json(params))
    return String(data.body);
end
function get_mtss(token::String,code::String,date::String,end_date::String)
    params=Dict("method" => "get_mtss","token" => token,"code"=>code,"date"=>date,"enddate"=>end_date);
    data = HTTP.post(url, body=JSON.json(params))
    return String(data.body);
end
function get_money_flow(token::String,code::String,date::String,end_date::String)
    params=Dict("method" => "get_money_flow","token" => token,"code"=>code,"date"=>date,"enddate"=>end_date);
    data = HTTP.post(url, body=JSON.json(params))
    return String(data.body);
end

function get_billboard_list(token::String,code::String,date::String,end_date::String)
    params=Dict("method" => "get_billboard_list ","token" => token,"code"=>code,"date"=>date,"enddate"=>end_date);
    data = HTTP.post(url, body=JSON.json(params))
    return String(data.body);
end


function get_future_contracts(token::String,code::String,date::String)
    params=Dict("method" => "get_future_contracts","token" => token,"code"=>code,"date"=>date);
    data = HTTP.post(url, body=JSON.json(params))
    return String(data.body);
end

function get_dominant_future(token::String,code::String,date::String)
    params=Dict("method" => "get_dominant_future","token" => token,"code"=>code,"date"=>date);
    data = HTTP.post(url, body=JSON.json(params))
    return String(data.body);
end

function get_fund_info(token::String,code::String,date::String)
    params=Dict("method" => "get_fund_info","token" => token,"code"=>code,"date"=>date);
    data = HTTP.post(url, body=JSON.json(params))
    return String(data.body);
end
function get_current_tick(token::String,code::String)
    params=Dict("method" => "get_current_tick","token" => token,"code"=>code);
    data = HTTP.post(url, body=JSON.json(params))
    return String(data.body);
end

function get_extras(token::String,code::String,date::String,end_date::String)
    params=Dict("method" => "get_extras","token" => token,"code"=>code,"date"=>date,"enddate"=>end_date);
    data = HTTP.post(url, body=JSON.json(params))
    return String(data.body);
end

function get_price(token::String,code::String,count::Int64,unit_type::String,end_date::String,fq_ref_date::String)
    params=Dict("method" => "get_price","token" => token,"code"=>code,"count"=>count,"unit"=>unit,"end_date"=>end_date,"fq_ref_date"=>fq_ref_date);
    data = HTTP.post(url, body=JSON.json(params))
    return String(data.body);
    # "method": "get_price",
    #    "token": "5b6a9ba7b0f572bb6c287e280ed",
    #    "code": "600000.XSHG",
    #    "count": 10,
    #    "unit": "1d",
    #    "end_date": "2018-07-21",
    #    "fq_ref_date": "2018-07-21"
end
function get_bar(token::String,code::String,count::Int64,unit_type::String,end_date::String,fq_ref_date::String)
    params=Dict("method" => "get_bar","token" => token,"code"=>code,"count"=>count,"unit"=>unit_type,"end_date"=>end_date,"fq_ref_date"=>fq_ref_date);
    data = HTTP.post(url, body=JSON.json(params))
    return String(data.body);
    # "method": "get_price",
    #    "token": "5b6a9ba7b0f572bb6c287e280ed",
    #    "code": "600000.XSHG",
    #    "count": 10,
    #    "unit": "1d",
    #    "end_date": "2018-07-21",
    #    "fq_ref_date": "2018-07-21"
end
function get_ticks(token::String,code::String,count::Int64,end_date::String)
    params=Dict("method" => "get_ticks","token" => token,"code"=>code,"count"=>count,"end_date"=>end_date);
    data = HTTP.post(url, body=JSON.json(params))
    return String(data.body);
end
end
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值