Mengambil dan menghantar data niaga hadapan (versi Python)

Penulis:Edwardgyw, Tarikh: 2016-11-28 14:38:44
Tag:PythonExtent-APIMasa hadapan barangan

Saya telah menulis versi Python seperti beliau, yang boleh dimasukkan ke dalam pakej sendiri di pelayan awan, supaya ia boleh digunakan untuk penyelidikan. update 12.01 dan antara muka mesej mempunyai perubahan lebih 60 minit dan maklumat garis pusingan, versi asal memilih 1440 akan mendapatkan 60 minit garis k, di sini betulkan


#coding: utf-8
import urllib2 as url
import json
import time

def hxRecords(instrument,timeFrame=1,size=1,includeLastBar=True,to_df=True):
    ##从和讯获取期货实时数据
    pInst=instrument.lower()
    if pInst[-4]!='1':
        pInst=pInst[:-3]+'1'+pInst[-3:]
    xchg=None
    for i in instList:
        if pInst[:-4] in i['inst']:
            xchg=i['xchg']
    if xchg is None:
        print ("获取K线时发生错误: 找不到合约")
        return None
    tfs=[1,5,15,30,60,'D','W']
    tf=None
    for i in range(len(tfs)):
        if timeFrame==tfs[i]:
            tf=i
    if tf is None:
        print("获取K线时发生错误: K线周期不正确")
        return None
    now=time.localtime()
    timestr=str(now.tm_year+1)+str(12)+str(31)+'000000'
    resp='http://webftcn.hermes.hexun.com/shf/kline?code=' + xchg + pInst + '&start=' + timestr + '&number=-' + str(size) + '&type=' + str(tf)
    try:
        resp=url.urlopen(resp)
        resp=resp.read()[1:-2]
        resp=json.loads(resp)['Data']
    except:
        print '获取K线时发生错误: 不完整的JSON数据'
        return None
    re=[]
    pw=float(resp[4])
    for i in resp[0]:
        res=dict(Time=time.mktime(time.strptime(str(i[0]),'%Y%m%d%H%M%S'))*1000,Open=i[2]/pw,High=i[4]/pw
                ,Low=i[5]/pw,Close=i[3]/pw,Volume=i[6])
        re.append(res)
    if to_df:
        re=pd.DataFrame(re)
        col=[]
        for i in re.columns:
            if i is 'Time':
                i='Date'
            col.append(i.lower())
        re.columns=col
        re['date']=re['date'].map(ts_dt64)
    return re
        

instList = [{
    "xchg": "SHFE",
    "inst": ["fu", "ru", "wr"]
}, {
    "xchg": "SHFE2",
    "inst": ["ag", "au"]
}, {
    "xchg": "SHFE3",
    "inst": ["al", "bu", "cu", "hc", "ni", "pb", "rb", "sn", "zn"]
}, {
    "xchg": "CZCE",
    "inst": ["cf", "fg", "lr", "ma", "oi", "pm", "ri", "rm", "rs", "sf", "sm", "sr", "ta", "wh", "zc"]
}, {
    "xchg": "DCE",
    "inst": ["a", "b", "bb", "c", "cs", "fb", "i", "j", "jd", "jm", "l", "m", "p", "pp", "v", "y"]
}]

def main():
    Log(exchange.GetAccount())


Berkaitan

Lebih lanjut

SifarIni sangat berguna, dan data yang ada di sini adalah lebih berwibawa, menyokong sumber terbuka!!!