def main(): begin_time = time.clock() print("#################### Setup ####################") # ======================== Additional Parameters ============================ # start_date = "20160620" end_date = "20160620" use_freq_stk = True # ======================== Path ============================= # tick_data_path = Util.get_path_tickdata() output_path = Util.get_path_output() # ======================== Data ============================= # print("#################### Data ####################") data_framework = DataFramework(start_date_str=start_date,end_date_str=end_date,path_tickdata=tick_data_path) # ======================== Strategy ============================= # print("#################### Strategy:Wave ####################") define_wave = WaveByTick(Util.set_global_paras()) # ======================== Analysis ============================= # print("#################### Analysis ####################") analysis_all = AnalysisAll(data_framework,define_wave) analysis_all.loop_date_stk_plot(use_freq_stk=use_freq_stk,output_path=output_path) # ======================== End ============================= # print("Complete! Total Time Used:",time.clock()-begin_time)
def one_day_update(wave_record_file_name): start_date = "20160501" end_date = "20160601" wave_record_path = Util.get_wave_record_path() + 'wave_ret_record\\' output_path = Util.get_path_output() tick_data_path = Util.get_path_tickdata() transaction_data_path = Util.get_path_transaction_data() data_framework = DataFramework(start_date_str=start_date, end_date_str=end_date, path_tickdata=tick_data_path, path_transaction_data=transaction_data_path) output = [] date_str = wave_record_file_name.split('.')[0].split('_')[-1] wave_record_one_day_all_stock = pd.read_csv(wave_record_path + wave_record_file_name) total_num = len(wave_record_one_day_all_stock) num = 0 stock_str = '' for k, one_wave_row in wave_record_one_day_all_stock.iterrows(): num += 1 if one_wave_row['wave_tot'] == 0: one_wave_new = one_wave_row else: stock_str_new = str(one_wave_row['stock']).zfill(6) if stock_str == stock_str_new: pass else: stock_str = stock_str_new tick_data_one_day_one_stock = TickdataOneDayOneStk(date_str, stock_str, data_framework) one_wave_new = update_one_wave(one_wave_row, tick_data_one_day_one_stock) output.append(one_wave_new) print(date_str, one_wave_row['stock'], 'done', num/total_num, datetime.datetime.now()) output_df = pd.DataFrame(output) output_df.to_csv(output_path + wave_record_file_name, index=False) print(output_path+wave_record_file_name, 'done')
def main(start_date, end_date): logger = logging.getLogger() file_log = logging.FileHandler(Util.get_log_path()) logger.addHandler(file_log) formatter = logging.Formatter("%(asctime)s %(levelname)s %(message)s") file_log.setFormatter(formatter) logger.setLevel(logging.INFO) begin_time = time.clock() # ======================== Additional Parameters ============================ # # start_date = "20160516" # end_date = "20160601" use_freq_stk = False # ======================== Path ============================= # tick_data_path = Util.get_path_tickdata() transaction_data_path = Util.get_path_transaction_data() output_path = Util.get_path_output() # ======================== Data ============================= # data_framework = DataFramework( start_date_str=start_date, end_date_str=end_date, path_tickdata=tick_data_path, path_transaction_data=transaction_data_path, use_specific_stk=True, ) # ======================== Strategy ============================= # define_wave = WaveByTick(Util.set_global_paras()) # ======================== Analysis ============================= # analysis_all = AnalysisAll(data_framework, define_wave) # analysis_all.loop_date_stk_calret(use_freq_stk=use_freq_stk, output_path=output_path, logger=logger) analysis_all.loop_date_stk_plot(use_freq_stk=use_freq_stk, output_path=output_path, logger=logger) # ======================== End ============================= # print("Complete! Total Time Used:", time.clock() - begin_time)
wave_record = self.define_wave.tick_rolling(data_date_stk) assert isinstance(wave_record,WaveRecord) analysis_wave = AnalysisOneDayOneStk(data_date_stk.date_str,data_date_stk.stk_str,use_freq_stk,output_path) analysis_wave.analyze_ret(data_date_stk, wave_record, self.define_wave.paras, logger=logger) except Exception as e: print('============================Error:', one_date, one_stk, e, '=========================') logger.error('Error:' + str(one_date) + str(one_stk) + str(e)) # print(time.clock()-begin) if __name__ == "__main__": # begin=time.clock() # Step 1: test_data = DataFramework("20160620","20160620",Util.get_path_tickdata()) wave_calculation = WaveByTick(Util.set_global_paras()) record = test_data.get_intraday_record_from_csv_this_day("20160620","zx600564358") # Step 2: analysis = AnalysisAll(test_data,wave_calculation) analysis.loop_date_stk_plot(True,Util.get_path_output()) # print(time.clock()-begin)
close_prc,ret,vol_capacity) to_csv = open(self.output_path + "wave_ret_record\\" + "wave_ret_" + self.date_str + ".csv",'a') to_csv.write(to_append) to_csv.close() wave_num += 1 if __name__ == "__main__": begin=time.clock() tmp_date="20160603" tmp_code="002477" # Step 1: test_data = DataFramework(tmp_date,tmp_date,Util.get_path_tickdata()) wave_calculation = WaveByTick(Util.set_global_paras()) # Step 2: test_tickdata = TickdataOneDayOneStk(tmp_date,tmp_code,test_data) wave_record = wave_calculation.tick_rolling(test_tickdata) analysis_wave = AnalysisOneDayOneStk(tmp_date,tmp_code,False,Util.get_path_output()) analysis_wave.analyze_plot(test_tickdata,wave_record,Util.set_global_paras(),test_data.get_intraday_record_from_csv_this_day(tmp_date,"zx600564358")) plt.show() # analysis_wave.analyze_ret(test_tickdata,wave_record,Util.set_global_paras()) print(time.clock()-begin)
'asize3', 'asize2', 'asize1', 'bsize1', 'bsize2', 'bsize3']] # 20160622, MK px_mid_this_day_this_stk['ask1'] = px_mid_this_day_this_stk['ask1']/Util.px_multiplier px_mid_this_day_this_stk['bid1'] = px_mid_this_day_this_stk['bid1']/Util.px_multiplier px_mid_this_day_this_stk['mid_prc'] = (px_mid_this_day_this_stk['bid1'] + px_mid_this_day_this_stk['ask1'])/2 transaction_data_set_index = self.transaction_data_from_csv_filter_time volume_buy = transaction_data_set_index[transaction_data_set_index['bs_flag'] == 66][['trade_volume']] # 66 is ascii code for 'B' volume_sell = transaction_data_set_index[transaction_data_set_index['bs_flag'] == 83][['trade_volume']] # 83 is ascii code for 'S self.px_mid_this_day_this_stk = px_mid_this_day_this_stk.loc[px_mid_this_day_this_stk['mid_prc'] > 0] self.volume_buy = volume_buy self.volume_sell = volume_sell # px_mid_this_day_this_stk = (self.data_from_csv_filter_time['bid1'] + # self.data_from_csv_filter_time['ask1'])/2/10000 # self.px_mid_this_day_this_stk = px_mid_this_day_this_stk[px_mid_this_day_this_stk>0] except Exception as e: print('data_error, {}, {}, {}'.format(self.date_str, self.stk_str, e)) self.px_mid_this_day_this_stk = pd.DataFrame({"mid_prc": [], "ask1": [], "bid1": [], "asize3": [], "asize2": [], "asize1": [], "bsize1": [], "bsize2": [], "bsize3": [], 'volume_buy': [], 'volume_sell': []}) self.volume_buy = pd.Series() self.volume_sell = pd.Series() if __name__ == "__main__": test_data = DataFramework("20160401", "20160401", Util.get_path_tickdata()) test_tickdata = TickdataOneDayOneStk("20160401", "000005", test_data)
if __name__ == "__main__": multiprocessing_num = 5 pool = multiprocessing.Pool(processes=multiprocessing_num) start_date = '20160101' end_date = '20161101' tick_data_path = Util.get_path_tickdata() transaction_data_path = Util.get_path_transaction_data() output_path = Util.get_path_output() data_framework = DataFramework( start_date_str=start_date, end_date_str=end_date, path_tickdata=tick_data_path, path_transaction_data=transaction_data_path, use_specific_stk=True, ) data_framework.update_date_list() for date_str in data_framework.date_list: print(date_str) # main(date_str, date_str) pool.apply_async(main, args=( date_str, date_str, )) pool.close() pool.join()
def main(): start_date = "20160501" # end_date = "20160505" # start_date = "20160506" # end_date = "20160510" # start_date = "20160511" # end_date = "20160515" # start_date = "20160516" # end_date = "20160520" # start_date = "20160521" # end_date = "20160525" # start_date = "20160526" # end_date = "20160530" # start_date = "20160531" end_date = "20160601" # start_date = "20160509" # end_date = "20160609" tick_data_path = Util.get_path_tickdata() transaction_data_path = Util.get_path_transaction_data() data_framework = DataFramework(start_date_str=start_date, end_date_str=end_date, path_tickdata=tick_data_path, path_transaction_data=transaction_data_path) wave_record_path = Util.get_wave_record_path() + 'wave_ret_record\\' output_path = Util.get_path_output() file_exist = os.listdir(output_path) file_list = [file_name_ for file_name_ in os.listdir(wave_record_path) if start_date<=file_name_.split('.')[0].split('_')[-1]<=end_date] # file_list = [file_name_ for file_name_ in os.listdir(wave_record_path) if start_date<=file_name_.split('.')[0].split('_')[-1]<=end_date and file_name_ not in file_exist] pool = multiprocessing.Pool(processes=7) for wave_record_file_name in file_list: print(wave_record_file_name, 'start', datetime.datetime.now()) output = [] date_str = wave_record_file_name.split('.')[0].split('_')[-1] wave_record_one_day_all_stock = pd.read_csv(wave_record_path + wave_record_file_name) total_num = len(wave_record_one_day_all_stock) num = 0 stock_str = '' for k, one_wave_row in wave_record_one_day_all_stock.iterrows(): # if one_wave_row['stock'] != 570: # todo # continue num += 1 if one_wave_row['wave_tot'] == 0: one_wave_new = one_wave_row else: stock_str_new = str(one_wave_row['stock']).zfill(6) if stock_str == stock_str_new: pass else: stock_str = stock_str_new tick_data_one_day_one_stock = TickdataOneDayOneStk(date_str, stock_str, data_framework) one_wave_new = update_one_wave(one_wave_row, tick_data_one_day_one_stock) output.append(one_wave_new) print(date_str, one_wave_row['stock'], 'done', num/total_num, datetime.datetime.now()) output_df = pd.DataFrame(output) output_df.to_csv(output_path + wave_record_file_name, index=False) print(output_path+wave_record_file_name, 'done')