当前位置: 首页 > Web前端 > HTML

量化现货合约跟单软件开发源码(二开)

时间:2023-03-28 17:32:27 HTML

量化交易机器人?从本质上讲,交易机器人是一种直接与财务交互的软件程序(通常使用API来获取和解释相关信息),并可以根据其对市场数据的解释发出买卖指令。他们通过监控市场价格变动并根据一组预设规则做出反应来做出这些决定。一般来说,交易机器人会分析市场中交易量、订单、价格和时间的行为,并根据您的喜好进行规划。策略设定后,机器人为每笔订单智能分配条件,严格执行交易策略,并根据当前行情,开发对接v+hkkf5566实时调整云端大数据。同时支持上百笔交易,同时执行交易策略。每个产品建立线程,自动管理报价深度,计算策略,实时查看交易状态,实时执行。//main.pyimportdatetimeimportosimportreimportshutilfromconstantimportExchangeimportpandasaspd#pd.set_option('display.max_columns',None)#pd.set_option('display.max_rows',None)frombase_dictimportdateToContract,clear_off_trading类HftDataPath:@classmethoddefdata_path(cls,date_str:str,exchange:Exchange)->str:path_str:str=''ifexchange==Exchange.DCE:path_str=f'{cls.source_data_dir()}/ht_dce_L2-{date_str}.log'elif交换==Exchange.SHFE:传递elif交换==Exchange.CZCE:传递elif交换==Exchange.CFFEX:传递else:传递returnpath_str@classmethoddefsource_data_dir(cls)->str:#return"C:/Users/tqz_trader/Desktop/hft_data_parser"return"E:\海通期货\大连L2\ITfuwu_dce_l2\ITfuwu_dce_l2_2021\ht_dce_L2-2021_05"@classmethoddefoutput_data_dir(cls)->str:#return"C:/Users/tqz_trader/Desktop/hft_data_parser/output_data"returnf'{cls.source_data_dir()}/output_data'@classmethoddefoutput_main_data_dir(cls)->str:#返回"C:/Users/tqz_trader/Desktop/hft_data_parser/output_main_data"返回f'{cls.source_data_dir()}/output_main_data'def__init__(self,date_str:str,exchange:Exchange,filter_option:bool=True):path=HftDataPath.data_path(date_str=date_str,exchange=exchange)#path=f'ht_dce_L2-{date_str}.log'#path=f'test_{path}'assertos.path.exists(path),f'{path}not存在。defsplit_by_symbol(self)->{str:pd.DataFrame()}:assertself.__dataisnotNone,f'__dataisNone'self.__rets_map:dict={}forsymbolinlist(set(self.__data.Symbol.tolist())):sub_data=self.__data[self.__data['Symbol']==symbol]sub_data.reset_index(inplace=True)delsub_data['index']self.__rets_map[symbol]=sub_datareturnselfdefdump_to_csv(self):assertself.__rets_mapisnotNone,f'__rets_mapisNone'#检查输出目标目录Existtarget_dir=HftDataPath.output_data_dir()ifos.path.exists(path=target_dir)isFalse:os.mkdir(target_dir)#检查品种&对应的日期目标目录是否存在symbol_dir_map:{str:str}={}date_str=self.__date_str.replace("_","")用于self.rets_map().keys()中的符号:symbol_dir=f'{target_dir}/data{re.match(r"^[a-zA-Z]{1,3}",symbol).group()}00'如果os.path.exists(path=symbol_dir)为假:os.mkdir(symbol_dir)symbol_date_dir=f'{symbol_dir}/{date_str}'如果os.path.exists(path=symbol_date_dir)为假:os.mkdir(symbol_date_dir)symbol_dir_map[symbol]=symbol_date_dir#将符号写入csv,self.rets_map().items()中的symbol_df:target_path=f'{symbol_dir_map[symbol]}/{symbol}_{date_str}.csv'symbol_df.to_csv(target_path,index=False)defdata(self)->pd.DataFrame():returnself.__datadefrets_map(self)->{str:pd.DataFrame()}:returnself.__rets_mapdef__reset_format(self):断言self.__data不是None,f'__data是None。#日期self.__data['Date']=self.__date_str.replace('_','')#时间、符号self.__data.rename(columns={'UpdateTime':'Time'},inplace=True)self.__data.rename(columns={'ContractID':'Symbol'},inplace=True)#HighLimit,LowLimitself.__data['HighLimit']=1000000self.__data['LowLimit']=0#LocalTime,时间戳self.__data['LocalTime']=self.__data.Timeself.__data['LocalTime']=self.__data.LocalTime.str.replace(':','',regex=True)self.__data['LocalTime']=self.__data.LocalTime.str.replace('.','',regex=True)self.__data['timestamp']=self.__data.LocalTime#LocalNSself.__data["LocalNS"]=pd.to_datetime(self.__date_str.replace('_','-')+''+self.__data['Time']).apply(lambdax:x.value)classHftDataManager:@classmethoddefparser(cls,start_date_str:str,end_date_str:str,exchange:Exchange):"""clearsourcehftdata:paramstart_date_str:开始日期源文件:paramend_date_str:源文件的结束日期:paramexchange:exchang"""start_date,end_date=datetime.datetime.strptime(start_date_str,'%Y_%m_%d').date(),datetime.datetime.strptime(end_date_str,'%Y_%m_%d').date()whileTrue:如果start_date>end_date:breakformat_date_str=str(start_date).replace("-","_")如果os.path.exists(path=HftDataPath.data_path(date_str=format_date_str,exchange=exchange)):HftDataOperator(date_str=format_date_str,exchange=exchange).split_by_symbol().dump_to_csv()print(f'date({start_date})解析器结束。')start_date+=datetime.timedelta(days=1)@classmethoddefrefresh_main_contracts_dir(cls,target_contracts:list,start_date_str:str,end_date_str:str):"""刷新主合约的目录:paramtarget_contracts:需要刷新的目标合约:paramstart_date_str:源文件的开始日期:paramend_date_str:源文件的结束日期"""source_dir=HftDataPath.output_data_dir()assertos.path.exists(path=source_dir),f'{source_dir}不存在。'target_dir=HftDataPath.output_main_data_dir()如果os.path.exists(path=target_dir)为真:shutil.rmtree(target_dir)os.mkdir(target_dir)forcontractintarget_contracts:start_date,end_date=datetime.datetime.strptime(start_date_str,'%Y_%m_%d').date(),datetime.datetime.strptime(end_date_str,'%Y_%m_%d').date()source_sub_dir=f'{source_dir}/data{contract}'target_sub_dir=f'{target_dir}/data{contract}'如果os.path.exists(path=target_sub_dir)为假:os.mkdir(target_sub_dir)而为真:如果start_date>end_date:breakformat_date_str=str(start_date).replace('-','')main_contract=dateToContract(instrument=contract,date=format_date_str)source_main_contract_dir=f'{source_sub_dir}/{format_date_str}'target_main_contract_dir=f'{target_sub_dir}/{format_date_str}'ifos.path。存在(路径=source_main_contract_dir):os.mkdir(target_main_contract_dir)os.path.exists(path=source_main_contract_path):shutil.copy(src=source_main_contract_path,dst=target_main_contract_path)#清除主合约数据。target_df=pd.read_csv(target_main_contract_path)clear_off_trading(target_df,“时间戳”)target_df=target_df.drop_duplicates(子集='timestamp',keep='first',inplace=False)to_csv(target_main_contract_path,index=False)开始日期+=datetime.timedelta(days=1)如果__name__=='__main__':_start_date_str="2021_05_14"_end_date_str="2021_05_24"['v00','eg00'],#start_date_str=_start_date_str,#end_date_str=_end_date_str#)