importreimportwarningswarnings.filterwarningsfromtqz_extern.json_operatorimportTQZJsonOperatorTIME_GAP=8*60*60*1000000000classTQZTianQinClient:"""天勤接口每次只能拉取单一合约的数据!"""__tq_futures=Nonedef__init__:self.api=TqApi)ifTQZTianQinClient.__tq_futuresisNone:TQZTianQinClient.__tq_futures=self.api.query_quotesdefquery_history_ticks:asserttq_futureinTQZTianQinClient.__tq_futures,f"badtq_future:{tq_future}"ticks=self.api.get_tick_serialself.api.closereturnticksdefquery_single_quote->dict:result=self.api.get_quoteself.api.closereturnresult#noqadefquery_history_bars:asserttq_futureinTQZTianQinClient.__tq_futures,f"badtq_future:{tq_future}"tq_result=self.api.get_kline_serialself.api.closetq_result["datetime"]=pandas.to_datetimetq_result["datetime"]=tq_result["datetime"].apply)#%f是毫秒returntq_resultdefload_all_tq_futures:self.api.closereturnTQZTianQinClient.__tq_futuresdefload_all_tq_main_futures:tq_main_contracts=self.api.query_quotesmain_vt_symbols=[][main_vt_symbols.append.underlying_symbol)formain_contractintq_main_contracts]self.api.closereturnmain_vt_symbols@staticmethoddefrecord_data:api=TqApi)instruments=["SHFcu2305","DCi2309"]quote_map={}data_map={}#之后考虑写共享内存里forinstrumentininstruments:quote_map[instrument]=api.get_quotedata_map[instrument]=pandas.DataFramewhileapi.wait_update:forinstrumentininstruments:ifapi.is_changing:#printdata_map[instrument].append,ignore_index=True)ifdatetime.datetime.now.hour==15:forinstrumentininstruments:data_map[instrument].to_csv}_{str).replace}.csv",index=False)breakif__name__=="__main__":#ret_df=TQZTianQinClient.query_history_bars#print)#map#ret_quote=TQZTianQinClient.query_quote#print)#df#ret_tick=TQZTianQinClient.query_history_ticks#print)TQZTianQinClient.record_data
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点