因为自己最近在学习做期货交易,想要下载期货的行情数据来做分析。有一些交易软件是可以导出数据的,但是导出的过程还是需要很多的手工操作,自己在想能不能通过Python程序来实现呢。
新浪期货数据接口介绍
通过在网上搜索找到了新浪财经的期货数据API用法,详细可以参考这个链接: http://blog.sina.com.cn/s/blog_7ed3ed3d0101gphj.html
我主要使用的是日线图周期的历史数据接口: http://stock2.finance.sina.com.cn/futures/api/json.php/IndexService.getInnerFuturesDailyKLine?symbol=C0
上面的例子是请求玉米连续(代码为C0)的所有日线图的行情数据。
利用Python来获取数据
下面是详细的代码:
import requests
import sys
future_code = sys.argv[1]
url_str = ('http://stock2.finance.sina.com.cn/futures/api/json.php/IndexService.getInnerFuturesDailyKLine?symbol=' +
future_code)
r = requests.get(url_str)
r_json = r.json()
r_lists = list(r_json)
print('date,open,high,low,close,vol,code')
for r_list in r_lists:
for v in r_list:
print(v + ',',end='')
print(future_code)
代码说明:使用python的第三方模块requests可以很方便的对api发送请求,将返回的json格式数据转换为列表格式,并且通过for循环来打印出来。 脚本的使用方法,将上面的代码保存为get_sina_api_data.py。在命令行中通过下面命令来调用程序。
#参数中输入期货代码C0
$ python3 get_sina_api_data.py C0 > C0.csv # 将程序输出的数据保存到C0.csv文件中
程序执行成功后可以通过下面命令来查看结果:
#查看文件的前10行
$ head C0.csv
date,open,high,low,close,vol,code
2005-01-04,1150.000,1154.000,1143.000,1145.000,101322,C0
2005-01-05,1141.000,1152.000,1141.000,1151.000,115404,C0
2005-01-06,1151.000,1157.000,1151.000,1154.000,116530,C0
2005-01-07,1162.000,1164.000,1156.000,1158.000,142096,C0
2005-01-10,1158.000,1159.000,1152.000,1155.000,125086,C0
2005-01-11,1156.000,1158.000,1154.000,1155.000,126812,C0
2005-01-12,1153.000,1158.000,1153.000,1157.000,153368,C0
2005-01-13,1150.000,1156.000,1149.000,1155.000,139970,C0
2005-01-14,1155.000,1157.000,1154.000,1156.000,130966,C0
#先将文件转换为csv表格格式再查看文件的前10行
$ csvlook C0.csv | head
|-------------+----------+----------+----------+----------+---------+-------|
| date | open | high | low | close | vol | code |
|-------------+----------+----------+----------+----------+---------+-------|
| 2005-01-04 | 1150.000 | 1154.000 | 1143.000 | 1145.000 | 101322 | C0 |
| 2005-01-05 | 1141.000 | 1152.000 | 1141.000 | 1151.000 | 115404 | C0 |
| 2005-01-06 | 1151.000 | 1157.000 | 1151.000 | 1154.000 | 116530 | C0 |
| 2005-01-07 | 1162.000 | 1164.000 | 1156.000 | 1158.000 | 142096 | C0 |
| 2005-01-10 | 1158.000 | 1159.000 | 1152.000 | 1155.000 | 125086 | C0 |
| 2005-01-11 | 1156.000 | 1158.000 | 1154.000 | 1155.000 | 126812 | C0 |
| 2005-01-12 | 1153.000 | 1158.000 | 1153.000 | 1157.000 | 153368 | C0 |
参考文献:
http://blog.sina.com.cn/s/blog_7ed3ed3d0101gphj.html