ফিউচার ডেটা সংগ্রহ এবং পাঠান (পাইথন সংস্করণ)

লেখক:এডওয়ার্ড জিউ, তারিখঃ ২০১৬-১১-২৮ 14:38:44
ট্যাগঃপাইথনএক্সটেন্ট-এপিআইকমোডিটি ফিউচার

গণ পাগল অনেক আগে তৃতীয় পক্ষের ডেটা সংগ্রহের জন্য একটি জেএস সংস্করণ লিখেছিল, আমি তার মতই একটি পাইথন সংস্করণ লিখেছিলাম, যা ক্লাউড সার্ভারে নিজের প্যাকেজটি ইনস্টল করতে পারে, যাতে এটি গবেষণার সময়ও ব্যবহার করা যায়। আপডেট 12.01 এবং মেসেজ ইন্টারফেসের পরিবর্তন হয়েছে 60 মিনিটের বেশি এবং আন্ডারলাইন তথ্য, মূল সংস্করণটি 1440 নির্বাচন করে 60 মিনিটের k লাইন পাবেন, এখানে ফিক্স


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


সম্পর্কিত

আরো

শূন্যএটি খুব দরকারী, তবে এই তথ্যগুলি আরও বেশি অনুমোদনযোগ্য এবং ওপেন সোর্স সমর্থন করে!