期货数据读取python从新浪财经

#-------------------------------------------------------------------------------
# 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')

猜你喜欢

转载自blog.csdn.net/tcy23456/article/details/80946838