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')
Exemple #3
0
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)
Exemple #4
0
                    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)


Exemple #6
0
                                                                              '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)
Exemple #7
0

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()
Exemple #8
0
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')