En un principio, Math Mad escribió una versión de JS para la obtención de datos de terceros, y después le seguí y escribí una versión de Python para introducir mi propio paquete en el servidor en la nube, para que pueda utilizarlo en mi investigación. La actualización 12.01 y la interfaz de mensajería han cambiado más información de 60 minutos y líneas de circunferencia, la versión original seleccionando 1440 obtendría líneas de 60 minutos, aquí está la solución.
#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())
No hay nadaEsto es muy útil, y los datos de Yandex son más autorizados y apoyan el código abierto!!!