Math Mad a écrit une version de la version de troisième partie de l'acquisition de données de JS très tôt, et j'ai écrit une version de Python qui peut être téléchargée sur un serveur cloud pour être utilisée lors de la recherche. update 12.01 et l'interface de messagerie ont changé plus de 60 minutes et de l'information de la ligne de contour, l'original sélectionne 1440 pour obtenir une ligne de 60 minutes k, ici fixé
#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())
NulC'est très utile, et les données de Yandex sont encore plus fiables, elles sont en faveur de l'open source!!!