聚宽推了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);
endfunction 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);
endfunction 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);
endfunction 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);
endfunction 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);
endfunction 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);
endfunction 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);
endfunction 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);
endfunction 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);
endfunction 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);
endfunction 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);
endfunction 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

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

  1. python 实现对地图的点击_利用python和百度地图API实现数据地图标注的方法

    如题,先上效果图: 主要分为两大步骤 使用python语句,通过百度地图API,对已知的地名抓取经纬度 使用百度地图API官网的html例程,修改数据部分,实现呈现效果 一.使用python语句,通过 ...

  2. uni-app利用uniCloud获取微信步数并将数据写入数据库

    uni-app利用uniCloud获取微信步数并将数据写入数据库 本项目依赖了uni-id 只是毕业设计,想法不完善,没有对用户授权失败做处理,如果编写的时候需要注意 第一步:调用wx.login() ...

  3. 利用python获取微信企业号打卡数据,并生成windows计划任务

    利用python获取微信企业号打卡数据,并生成windows计划任务 安装python 安装第三方库 写主程序 设置Windows计划任务 由于公司的系统用的是Java版本,开通了企业号打卡之后又没有 ...

  4. python 收发微信之二:获取微信上行信息(利用 flask 框架实现 Web API,获取 WxPusher 上行微信)

    目 录 〇.摘要 一.前言 二.实操 1. 找一台可以给互联网提供服务的计算机 2. 实现一个 flask 最小服务并在互联网上访问到 3. 根据 WxPusher 上行信息接口实现 POST 命令的 ...

  5. Web Api 内部数据思考 和 利用http缓存优化 Api

    在上篇<Web Api 端点设计 与 Oauth>后,接着我们思考Web Api 的内部数据: 其他文章:<API接口安全加强设计方法> 第一  实际使用应该返回怎样的数据 ? ...

  6. ASP.NET Web Api 实现数据的分页

    前言 这篇文章我们将使用不同的方式实现手动分页(关于高端大气上档次的OData本文暂不涉及,但有可能会在系列的后期介绍,还没确定...),对于分页的结果,我们将采用2种不同的方式响应给客户端(1.将分 ...

  7. python调用百度地图实现导航pc_利用python和百度地图API实现数据地图标注

    如题,先上效果图: 主要分为两大步骤使用python语句,通过百度地图API,对已知的地名抓取经纬度 使用百度地图API官网的html例程,修改数据部分,实现呈现效果 一.使用python语句,通过百 ...

  8. python调用百度地图实现导航_利用python和百度地图API实现数据地图标注

    如题,先上效果图: image.png 主要分为两大步骤 使用python语句,通过百度地图API,对已知的地名抓取经纬度 使用百度地图API官网的html例程,修改数据部分,实现呈现效果 一.使用p ...

  9. 利用kettle获取企业微信打卡数据

    利用kettle创建转换,把转换根据顺序执行,生成作业,通过计划任务定时执行作业,把企业微信的打卡记录插入到本地数据库中. 一.先获取打卡应用和通讯录的access_token,由于access_to ...

  10. python百度地图标注_利用python和百度地图API实现数据地图标注

    如题,先上效果图: 主要分为两大步骤使用python语句,通过百度地图API,对已知的地名抓取经纬度 使用百度地图API官网的html例程,修改数据部分,实现呈现效果 一.使用python语句,通过百 ...

最新文章

  1. 从大象安全套到超级表格
  2. 【Spark 深入学习 04】再说Spark底层运行机制
  3. 拿下“[warn] (OS 64)指定的网络名不再可用”错误
  4. apache+tomcat配置
  5. 图管够!灌篮高手、女儿国…阿里日_这帮程序员太会玩了!
  6. java 内存 四_java最终化的内存保留问题(4)
  7. 如何考查自己的测试水平?
  8. jdk监控与故障处理工具
  9. iSCSI又称为IP-SAN
  10. 王道 —— 进程通信
  11. 新零售大潮下 联想与BHG Mall签约共建智慧商城
  12. 大数据之-Hadoop之HDFS_基于JAVA的开发_客户端环境测试---大数据之hadoop工作笔记0055
  13. DuiLib(一)——窗口及消息
  14. 应用程序到偏好设置跳转 以及 应用程序之间的跳转
  15. 阿里云王伟民:数据库的策略与思考
  16. 官方验证!雨林木风 Ghost XP SP3 装机版 ylmf_xp3_yn9.8 !!附:官方全部MD5!
  17. 微信公众开发 表情开发php,微信开发Emoji表情的实例教程
  18. java set for循环_详解Java中list,set,map的遍历与增强for循环
  19. 即时通信(二)--- 腾讯云IM接入具体实现
  20. 【easyui】combobox 静态数据时,设置默认值时,不触发onselect事件

热门文章

  1. 使用 Python 学习和破解古典密码
  2. xcode中使用正则表达式来搜索替换代码
  3. 微软消息队列MSMQ 传输异常的总结!
  4. 新手降NAT网络第十步曲,小编提供思路。
  5. 数据结构-阶段性理解
  6. effective c++ 跨编译单元之初始化次序 笔记
  7. 使用Quartz.Net定时删除Log
  8. 震惊,线程共享变量使用不当引发血案
  9. BZOJ4602: [Sdoi2016]齿轮(并查集 启发式合并)
  10. 将xml文件由格式化变为压缩字符串