#-------------------------------------------------------------------------------
# Name: 新浪财经期货数据python读取
# Purpose:
#
# Author: tcy shanghai yexie
#
# Created: 05/07/2018
# Copyright: (c) tcy 2018
# 参考网址: https://www.aliyun.com/jiaocheng/433081.html
## http://blog.sina.com.cn/s/blog_7ed3ed3d0101gphj.html
#-------------------------------------------------------------------------------
#coding: utf-8
import requests
import sys
import numpy as np
#读实盘数据
#功能: 实时读取新浪财经期货数据
#参数: 请输入要读取的合约名称
#返回值:以数组的形式返回
def read_real_future_data(future_code):
## future_code ='M1809'
#从新浪财经读数据
url_str = ('http://hq.sinajs.cn/list=' +future_code)
r = requests.get(url_str)
#数据处理,保存在临时数组中
b=list(r)
str1=b[0].decode(encoding='gbk') +b[1].decode(encoding='gbk')
str2=str1.split(',')
str3=str2[0].split('_')[-1]
str4=str3.split('=')
##-------------------------------------------------------------------------
## 2018/7/5 shanghai tcy python版本
##f=[0,0,0,0,0,0,0,0]
##f[0]=str4[0] #code
##f[1]=str4[1].strip('"') #name
##f[2]=str2[17] #date
##f[3]=str2[2] #open
##f[4]=str2[3] #high
##f[5]=str2[4] #low
##f[6]=str2[6] #close
##f[7]=str2[14] #vol
##--------------------------------------------------------------------------
## numpy版本运行速度快
dt=np.dtype([('code','S10'),('name','U10'),('date','datetime64[D]'),('open',np.float32),
('high',np.float32),('low',np.float32),('close',np.float32),('vol',np.float32)])
f=np.array([("","",'1970-01-01',0.0,0.0,0.0,0.0,0.0)],dtype=dt)
f[0]['code']=str4[0] #code
f[0]['name']=str2[16] #name
f[0]['date']=str2[17] #date
f[0]['open']=str2[2] #open
f[0]['high']=str2[3] #high
f[0]['low']=str2[4] #low
f[0]['close']=str2[6] #close
f[0]['vol']=str2[14] #vol
#测试程序
## print('code name date,open,high,low,close,vol')
## print(f)
return f
##测试程序:
##-----------------------------------------------------------------
f= read_real_future_data('M1809')
print(f)
"""
****************************************************************************
****************************************************************************
一。新浪实时数据读取
例子
http://hq.sinajs.cn/list=M0 #豆粕连续 M0
返回值如下:
var hq_str_M0="豆粕连续,145958,3170,3190,3145,3178,3153,3154,3154,3162,3169,
1325,223,1371608,1611074,连,豆粕,2013-06-28"...;
----------------------------------------------------------
1.数据读出顺序
0:豆粕连续,名字
1:145958,数据读取时间
2:3170,开盘价
3:3190,最高价
4:3145,最低价
5:3178,昨日收盘价 (2018年6月27日)
6:3153,买价,即“买一”报价
7:3154,卖价,即“卖一”报价
8:3154,最新价,即收盘价
9:3162,结算价
10:3169,昨结算
11:1325,买 量
12:223,卖 量
13:1371608,持仓量
14:1611074,成交量
15:连,大连商品交易所简称
16:豆粕,品种名简称
17:2018-06-28,日期
----------------------------------------------
2.新浪期货数据各品种代码(商品连续)如下
RB0 螺纹钢
AG0 白银
AU0 黄金
CU0 沪铜
AL0 沪铝
ZN0 沪锌
PB0 沪铅
RU0 橡胶
FU0 燃油
WR0 线材
A0 大豆
M0 豆粕
Y0 豆油
J0 焦炭
C0 玉米
L0 乙烯
P0 棕油
V0 PVC
RS0 菜籽
RM0 菜粕
FG0 玻璃
CF0 棉花
WS0 强麦
ER0 籼稻
ME0 甲醇
RO0 菜油
TA0 甲酸
CFF_RE_IF1307 股指期货
3.使用方法
3.1.品种名 + 0 (数字0),代表品种连续,如果是其他月份,请使用品种名 + YYYMM
例如
豆粕 2013年09月,M1309
http://hq.sinajs.cn/list=M1309
3.2.一次可以请求多个品种,例如
http://hq.sinajs.cn/list=CFF_RE_IF1307,TA0,M0,CFF_RE_IF1306,RB1309,M1309,SR1309
********************************************************************************************
二。历史数据读取
商品期货
http://stock2.finance.sina.com.cn/futures/api/json.php/
IndexService.getInnerFuturesMiniKLineXm?symbol=CODE
例子:
http://stock2.finance.sina.com.cn/futures/api/json.php/
IndexService.getInnerFuturesMiniKLine5m?symbol=M0
5分钟
http://stock2.finance.sina.com.cn/futures/api/json.php/
IndexService.getInnerFuturesMiniKLine5m?symbol=M0
15分钟
http://stock2.finance.sina.com.cn/futures/api/json.php/
IndexService.getInnerFuturesMiniKLine15m?symbol=M0
30分钟
http://stock2.finance.sina.com.cn/futures/api/json.php/
IndexService.getInnerFuturesMiniKLine30m?symbol=M0
60分钟
http://stock2.finance.sina.com.cn/futures/api/json.php/
IndexService.getInnerFuturesMiniKLine60m?symbol=M0
日K线
http://stock2.finance.sina.com.cn/futures/api/json.php/
IndexService.getInnerFuturesDailyKLine?symbol=M0
股指期货
5分钟
http://stock2.finance.sina.com.cn/futures/api/json.php/
CffexFuturesService.getCffexFuturesMiniKLine5m?symbol=IF1306
15
http://stock2.finance.sina.com.cn/futures/api/json.php/
CffexFuturesService.getCffexFuturesMiniKLine15m?symbol=IF1306
30分钟
http://stock2.finance.sina.com.cn/futures/api/json.php/
CffexFuturesService.getCffexFuturesMiniKLine30m?symbol=IF1306
60分钟
http://stock2.finance.sina.com.cn/futures/api/json.php/
CffexFuturesService.getCffexFuturesMiniKLine60m?symbol=IF1306
日线
http://stock2.finance.sina.com.cn/futures/api/json.php/
CffexFuturesService.getCffexFuturesDailyKLine?symbol=IF1306
********************************************************************************************
********************************************************************************************
"""
import requests
import sys
future_code = 'M1809'
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('future_code,date,open,high,low,close,vol')
for r_list in r_lists:
for v in r_list:
print(v + ',',end='')
print('\n')