def sys_risk_analyse(is_realtime_update=False): """ when less then -ultimate_coefficient*sys_risk_range, will be zero position; when greater then ultimate_coefficient*sys_risk_range, will be max position; others, will be linearly increased by sys_score """ """ :param max_position: float type, :param ultimate_coefficient: float type, :return: position,sys_score,is_sys_risk """ shzh_weight=0.65 #is_sys_risk=False shz_code_str='999999' print(shz_code_str,'----------------------------------') shz_stock=tds.Stockhistory(shz_code_str,'D') #print(shz_stock.h_df.tail(10)) if is_realtime_update: k_data=get_real_stock_k(shz_code_str='999999') k_data=['2016/04/21',2954.38,2990.69,2935.05,3062.58,189000000,2.1115e+11] shz_stock.update_realtime_hist_df(k_data) #print(shz_stock.h_df.tail(10)) #shangzheng_ma_score,shangzheng_score,k_position=shz_stock.get_market_score() shz_stock.form_temp_df(shz_code_str) #print(shangzheng_ma_score,shangzheng_score,k_position) scz_code_str='399001' zxb_code_str='399005' chy_code_str='399006' chy_code_str='300044' print(chy_code_str,'----------------------------------') chy_stock=tds.Stockhistory(chy_code_str,'D') if is_realtime_update: k_data=get_real_stock_k(shz_code_str='399006') #k_data=['2016/04/21',2954.38,2990.69,2935.05,3062.58,189000000,2.1115e+11] shz_stock.update_realtime_hist_df(k_data) #chuangye_ma_score,chuangye_score,k_position=chy_stock.get_market_score() chy_stock.form_temp_df(chy_code_str) #print(chuangye_ma_score,chuangye_score,k_position) #sys_score=round(0.65*shangzheng_score+0.35*chuangye_score,2) #-5 ~5 chy_first_date=chy_stock.temp_hist_df.head(1).iloc[0].date shz_temp_df=shz_stock.temp_hist_df.set_index('date') chy_temp_df=chy_stock.temp_hist_df.set_index('date') #shz_temp_df=shz_stock.temp_hist_df.tail(1000).set_index('date') #chy_temp_df=chy_stock.temp_hist_df.tail(1000).set_index('date') shz_temp_df=shz_temp_df.fillna(0) chy_temp_df=chy_temp_df.fillna(0) shz_temp_df['sys_score']=shzh_weight*shz_temp_df['k_score']+(1-shzh_weight)*chy_temp_df['k_score'] shz_temp_df['position']=shzh_weight*shz_temp_df['position']+(1-shzh_weight)*chy_temp_df['position'] shz_temp_df['operation']=shz_temp_df['position']-shz_temp_df['position'].shift(1) shz_temp_df.to_csv('shz_temp_df.csv') sys_df=shz_temp_df[['sys_score','position','operation']].round(3) sys_df.to_csv('sys.csv') return sys_df
def back_test_one_stock(stock_symbol, rate_to_confirm=0.0001, temp_dir=fc.ALL_TEMP_DIR, bs_temp_dir=fc.ALL_BACKTEST_DIR): if stock_symbol == '000029' and source == 'easyhistory': return s_stock = tds.Stockhistory(stock_symbol, 'D', test_num=0, source='yh', rate_to_confirm=0.01) if s_stock.h_df.empty: print('New stock %s and no history data' % stock_symbol) return result_df = s_stock.form_temp_df(stock_symbol) s_stock.form_regression_result(save_dir=bs_temp_dir, rate_to_confirm=0.0001) #recent_trend = s_stock.get_recent_trend(num=20,column='close') s_stock.diff_ma_score(ma=[10, 30, 60, 120, 250], target_column='close', win_num=5) temp_hist_df = s_stock.temp_hist_df.set_index('date') try: temp_hist_df.to_csv(temp_dir + '%s.csv' % stock_symbol) except: pass """ temp_hist_df_tail = temp_hist_df.tail(1) temp_hist_df_tail['code'] = stock_symbol """ return
def filter(self, filter_type, symbols=None): target_symbols = [] if symbols and isinstance(symbols, str): target_symboles = [symbols] elif symbols and isinstance(symbols, str): target_symboles = symbols else: target_symboles = self.get_all_symbols() stock_hist_anlyse = tds.Stockhistory(code_str='000001', ktype='D') for symbol in target_symboles: pass return
def back_test_dapan(test_codes, k_num=0, source='yh', rate_to_confirm=0.01, processor_id=0): i = 0 for stock_symbol in test_codes: if stock_symbol == '000029' and source == 'easyhistory': continue print(i, stock_symbol) s_stock = tds.Stockhistory(stock_symbol, 'D', test_num=k_num, source=source, rate_to_confirm=rate_to_confirm) if s_stock.h_df.empty: print('New stock %s and no history data' % stock_symbol) continue if True: if dapan_stocks and (stock_symbol in dapan_stocks): dapan_criteria = ( (s_stock.temp_hist_df['o_change'] > 0.30) & (s_stock.temp_hist_df['pos20'].shift(1) <= 1.0)) dapan_regress_column_type = 'open' dapan_high_o_df, dapan_high_open_columns = s_stock.regress_common( dapan_criteria, post_days=[0, -1, -2, -3, -4, -5, -10, -20, -60], regress_column=dapan_regress_column_type, base_column='open', fix_columns=[ 'date', 'close', 'p_change', 'o_change', 'position', 'pos20', 'oo_chg', 'oh_chg', 'ol_chg', 'oc_chg' ]) dapan_high_o_df['code'] = stock_symbol dapan_high_o_df['ho_index'] = np.where( dapan_high_o_df['pos20'] <= 0, 0, (dapan_high_o_df['o_change'] / dapan_high_o_df['pos20']).round(2)) dapan_ho_df = dapan_ho_df.append(dapan_high_o_df) else: pass
def get_all_regress_summary(given_stocks=[], confirm=0.01, dest_file=fc.ALL_SUMMARY_FILE): all_result_df = tds.pd.DataFrame({}) """ latest_temp_df = tds.pd.read_csv( fc.ALL_TEMP_FILE) latest_temp_df['code'] = latest_temp_df['code'].apply(lambda x: pds.format_code(x)) stock_codes = latest_temp_df['code'].values.tolist() latest_temp_df = latest_temp_df.set_index('code') #print(latest_temp_df.ix['000014'].date) """ #given_stocks = ['000001','000002'] for stock_symbol in given_stocks: s_stock = tds.Stockhistory(stock_symbol, 'D', test_num=0, source='yh', rate_to_confirm=confirm) result_series = s_stock.get_regression_result( rate_to_confirm=confirm, refresh_regression=False, from_csv=True, bs_csv_dir=fc.ALL_BACKTEST_DIR, temp_csv_dir=fc.ALL_TEMP_DIR) if not result_series.empty: test_result_df = tds.pd.DataFrame({stock_symbol: result_series}).T all_result_df = all_result_df.append(test_result_df, ignore_index=False) if dest_file: try: all_result_df['code'] = all_result_df.index all_result_df['name'] = all_result_df['code'].apply( lambda x: pds.format_name_by_code(x, CHINESE_DICT)) del all_result_df['code'] #dest_file = 'D:/work/result/all_summary1.csv' all_result_df.to_csv(dest_file, encoding='utf-8') except: pass return all_result_df
def get_stock_position(stock_synbol='399006',is_realtime_update=False,index_weight=0.65): """ when less then -ultimate_coefficient*sys_risk_range, will be zero position; when greater then ultimate_coefficient*sys_risk_range, will be max position; others, will be linearly increased by sys_score """ """ :param stock_synbol: str type, 个股指数 :param is_realtime_update: bool type, 是否实时更新仓位 :param index_weight: float type, 指数仓位占的比重 :return: position,sys_score,is_sys_risk """ refer_index='999999' #参考指数 if stock_synbol<'000999':#深证指数 refer_index = '399001' elif stock_synbol>'002000' and stock_synbol<'002999':#中小板指数 refer_index ='399005' elif stock_synbol>'300000' and stock_synbol<'309999':#创业板指数 refer_index = '399006' elif stock_synbol > '600000' and stock_synbol<'609999':#上证指数 refer_index = '999999' else:#返回系统仓位 stock_synbol='399006' pass #index_weight=0.65#指数占的比重 #is_sys_risk=False print('refer_index=%s' % refer_index,'----------------------------------') index_stock=tds.Stockhistory(refer_index,'D') #print(shz_stock.h_df.tail(10)) if is_realtime_update: k_data=get_real_stock_k(code_str=refer_index) k_data=['2016/04/21',2954.38,2990.69,2935.05,3062.58,189000000,2.1115e+11] index_stock.update_realtime_hist_df() #print(shz_stock.h_df.tail(10)) #shangzheng_ma_score,shangzheng_score,k_position=index_stock.get_market_score() index_stock.form_temp_df(refer_index) max_series,max_value,min_series,min_value=index_stock.get_max(column_name='close',latest_num=10) #print(max_series,max_value,min_series,min_value) max_series,max_value,min_series,min_value=index_stock.get_max(column_name='close',latest_num=20) #print(max_series,max_value,min_series,min_value) max_series,max_value,min_series,min_value=index_stock.get_max(column_name='close',latest_num=30) #index_stock.boduan_analyze() #print(max_series,max_value,min_series,min_value) #print(shangzheng_ma_score,shangzheng_score,k_position) print(stock_synbol,'----------------------------------') s_stock=tds.Stockhistory(stock_synbol,'D') if is_realtime_update: k_data=get_real_stock_k(code_str=stock_synbol) #k_data=['2016/04/21',2954.38,2990.69,2935.05,3062.58,189000000,2.1115e+11] s_stock.update_realtime_hist_df() #chuangye_ma_score,chuangye_score,k_position=s_stock.get_market_score() s_stock.is_island_reverse_up() s_stock.form_temp_df(stock_synbol) index_temp_df=index_stock.temp_hist_df.set_index('date') if s_stock.temp_hist_df.empty: index_temp_df['sys_score']=index_temp_df['k_score'] index_temp_df['position']=index_temp_df['position'] index_temp_df['operation']=index_temp_df['position']-index_temp_df['position'].shift(1) return index_temp_df[['sys_score','position','operation']].round(3) #print(chuangye_ma_score,chuangye_score,k_position) #sys_score=round(0.65*shangzheng_score+0.35*chuangye_score,2) #-5 ~5 #stock_first_date=stock.temp_hist_df.head(1).iloc[0].date stock_temp_df=s_stock.temp_hist_df.set_index('date') #shz_temp_df=shz_stock.temp_hist_df.tail(1000).set_index('date') #chy_temp_df=chy_stock.temp_hist_df.tail(1000).set_index('date') i_temp_df=index_temp_df.fillna(0) s_temp_df=stock_temp_df.fillna(0) s_temp_df['sys_score']=index_weight*i_temp_df['k_score']+(1-index_weight)*s_temp_df['k_score'] s_temp_df['pos']=index_weight*i_temp_df['position']+(1-index_weight)*s_temp_df['position'] s_temp_df['oper']=i_temp_df['position']-i_temp_df['position'].shift(1) s_temp_df.to_csv('%s.csv'%stock_synbol) select_columns=['close','p_change','gap','star','star_chg','ma5_chg','ma10_chg','k_rate','p_rate','island','atr_in','reverse','cross1','cross2','cross3','sys_score','pos','oper','std','tangle_p'] stock_df=s_temp_df[select_columns].round(3) stock_df.to_csv('stock_%s.csv' % stock_synbol) print(stock_df.tail(80)) return stock_df
def back_test_stocks(test_codes, k_num=0, source='yh', rate_to_confirm=0.01, processor_id=0, save_type='', all_result_columns=[], trend_columns=[], all_temp_columns=[], deep_star_columns=[]): i = 0 ma_num = 20 regress_column_type = 'close' all_result_df = tds.pd.DataFrame({}, columns=all_result_columns) all_trend_result_df = tds.pd.DataFrame({}, columns=trend_columns) all_temp_hist_df = tds.pd.DataFrame({}, columns=all_temp_columns) #deep_star_columns = ['date','close','p_change','o_change','position','low_high_open','high_o_day0','high_o_day1','high_o_day3', # 'high_o_day5','high_o_day10','high_o_day20','high_o_day50'] #deep_star_columns = [] deep_star_df = tds.pd.DataFrame({}, columns=deep_star_columns) print('processor_id=%s : %s' % (processor_id, test_codes)) for stock_symbol in test_codes: if stock_symbol == '000029' and source == 'easyhistory': continue print('processor_id=%s :%s,%s' % (processor_id, i, stock_symbol)) s_stock = tds.Stockhistory(stock_symbol, 'D', test_num=k_num, source=source, rate_to_confirm=rate_to_confirm) if s_stock.h_df.empty: print('New stock %s and no history data' % stock_symbol) continue if True: #try: result_df = s_stock.form_temp_df(stock_symbol) test_result = s_stock.regression_test(rate_to_confirm) recent_trend = s_stock.get_recent_trend(num=ma_num, column='close') s_stock.diff_ma(ma=[10, 30], target_column='close', win_num=5) temp_hist_df = s_stock.temp_hist_df.set_index('date') #temp_hist_df.to_csv('C:/hist/day/temp/%s.csv' % stock_symbol) temp_hist_df_tail = temp_hist_df.tail(1) temp_hist_df_tail['code'] = stock_symbol all_temp_hist_df = all_temp_hist_df.append(temp_hist_df_tail) #columns = ['close','p_change','o_change','position','low_high_open','high_o_day0','high_o_day1','high_o_day3','high_o_day5','high_o_day10','high_o_day20'] #high_o_df,high_open_columns = s_stock.regress_high_open(regress_column = regress_column_type,base_column='open') #criteria = s_stock.temp_hist_df['low_high_open']!= 0 criteria = ((s_stock.temp_hist_df['star_l'] > 0.50) & (s_stock.temp_hist_df['l_change'] < -3.0) & (s_stock.temp_hist_df['pos20'].shift(1) < 0.2)) high_o_df, high_open_columns = s_stock.regress_common( criteria, post_days=[0, -1, -2, -3, -4, -5, -10, -20, -60], regress_column=regress_column_type, base_column='close', fix_columns=[ 'date', 'close', 'p_change', 'o_change', 'position', 'pos20', 'MAX20high', 'star_l' ]) high_o_df['code'] = stock_symbol high_o_df['star_index'] = np.where( high_o_df['pos20'] <= 0, 0, (high_o_df['star_l'] / high_o_df['pos20'] * ((high_o_df['MAX20high'] - high_o_df['close']) / high_o_df['MAX20high'])).round(2)) deep_star_df = deep_star_df.append(high_o_df) i = i + 1 if test_result.empty: pass else: test_result_df = tds.pd.DataFrame(test_result.to_dict(), columns=all_result_columns, index=[stock_symbol]) all_result_df = all_result_df.append(test_result_df, ignore_index=False) if recent_trend.empty: pass else: trend_result_df = tds.pd.DataFrame(recent_trend.to_dict(), columns=trend_columns, index=[stock_symbol]) all_trend_result_df = all_trend_result_df.append( trend_result_df, ignore_index=False) #except: # print('Regression test exception for stock: %s' % stock_symbol) if save_type == 'csv': #write to csv all_temp_hist_df_file_name = 'C:/work/temp1/all_temp_hist_%s' % processor_id + '.csv' all_result_df_file_name = 'C:/work/temp1/all_result_%s' % processor_id + '.csv' deep_star_df_file_name = 'C:/work/temp1/deep_star_%s' % processor_id + '.csv' all_trend_result_df_file_name = 'C:/work/temp1/all_trend_result_%s' % processor_id + '.csv' all_temp_hist_df.to_csv(all_temp_hist_df_file_name) all_result_df.to_csv(all_result_df_file_name) deep_star_df.to_csv(deep_star_df_file_name) all_trend_result_df.to_csv(all_trend_result_df_file_name) return all_temp_hist_df, all_result_df, deep_star_df, all_trend_result_df
def back_test(k_num=0,given_codes=[],except_stocks=['000029'], type='stock', source='easyhistory',rate_to_confirm = 0.01,dapan_stocks=['000001','000002']): """ 高于三天收盘最大值时买入,低于三天最低价的最小值时卖出: 33策略 """ """ :param k_num: string type or int type: mean counts of history if int type; mean start date of history if date str :param given_codes: str type, :param except_stocks: list type, :param type: str type, force update K data from YH :return: source: history data from web if 'easyhistory', history data from YH if 'YH' """ #addition_name = '' #if type == 'index': addition_name = type all_codes = [] all_stop_codes = [] all_stocks = [] all_trade_codes = [] #print('source=',source) if source =='yh' or source=='YH': hist_dir='C:/中国银河证券海王星/T0002/export/' #print(given_codes,except_stocks) all_stop_codes,all_stocks1 = get_stopped_stocks(given_codes,except_stocks,hist_dir) #print('all_stocks1=',('150251' in all_stocks1)) all_trade_codes = list(set(all_stocks1).difference(set(all_stop_codes))) else: hist_dir='C:/hist/day/data/' all_stop_codes,all_stocks = get_stopped_stocks(given_codes,except_stocks,hist_dir) #print('all_stocks2=',('150251' in all_stocks)) all_trade_codes = list(set(all_stocks).difference(set(all_stop_codes))) #print('all_trade_codes=',('150251' in all_trade_codes)) #all_codes = ['300128', '002288', '002156', '300126','300162','002717','002799','300515','300516','600519', # '000418','002673','600060','600887','000810','600115','600567','600199','000596','000538','002274','600036','600030','601398'] column_list = ['count', 'mean', 'std', 'max', 'min', '25%','50%','75%','cum_prf', 'fuli_prf','yearly_prf','last_trade_date','last_trade_price','min_hold_count', 'max_hold_count','avrg_hold_count','this_hold_count','exit','enter', 'position','max_amount_rate','max_amount_distance','break_in', 'break_in_count','break_in_date', 'break_in_distance','success_rate','days'] all_result_df = tds.pd.DataFrame({}, columns=column_list) i=0 trend_column_list = ['count', 'mean','chg_fuli', 'std', 'min', '25%', '50%', '75%', 'max', 'c_state', 'c_mean', 'pos_mean', 'ft_rate', 'presure', 'holding', 'close','cont_num','amount_rate','ma_amount_rate'] all_trend_result_df = tds.pd.DataFrame({}, columns=trend_column_list) all_temp_hist_df = tds.pd.DataFrame({}, columns=[]) ma_num = 20 stock_basic_df=ts.get_stock_basics() basic_code = stock_basic_df['name'].to_dict() basic_code_keys = basic_code.keys() #print('all_trade_codes=',all_trade_codes) #high_open_columns = ['date','close','p_change','o_change','position','low_high_open','high_o_day0','high_o_day1','high_o_day3', # 'high_o_day5','high_o_day10','high_o_day20','high_o_day50'] high_open_columns = [] deep_star_df = tds.pd.DataFrame({}, columns=high_open_columns) dapan_ho_df = tds.pd.DataFrame({}, columns=high_open_columns) regress_column_type = 'close' for stock_symbol in all_trade_codes: if stock_symbol=='000029' and source=='easyhistory': continue print(i,stock_symbol) s_stock=tds.Stockhistory(stock_symbol,'D',test_num=k_num,source=source,rate_to_confirm=rate_to_confirm) if True: #try: result_df = s_stock.form_temp_df(stock_symbol) test_result = s_stock.regression_test(rate_to_confirm) recent_trend = s_stock.get_recent_trend(num=ma_num,column='close') s_stock.diff_ma(ma=[10,30],target_column='close',win_num=5) temp_hist_df = s_stock.temp_hist_df.set_index('date') #temp_hist_df.to_csv('C:/hist/day/temp/%s.csv' % stock_symbol) temp_hist_df_tail = temp_hist_df.tail(1) temp_hist_df_tail['code'] = stock_symbol all_temp_hist_df= all_temp_hist_df.append(temp_hist_df_tail) #columns = ['close','p_change','o_change','position','low_high_open','high_o_day0','high_o_day1','high_o_day3','high_o_day5','high_o_day10','high_o_day20'] #high_o_df,high_open_columns = s_stock.regress_high_open(regress_column = regress_column_type,base_column='open') #criteria = s_stock.temp_hist_df['low_high_open']!= 0 criteria = ((s_stock.temp_hist_df['star_l']> 0.50) & (s_stock.temp_hist_df['l_change']<-3.0) & (s_stock.temp_hist_df['pos20'].shift(1)<0.2)) high_o_df,high_open_columns = s_stock.regress_common(criteria,post_days=[0,-1,-2,-3,-4,-5,-10,-20,-60],regress_column = regress_column_type, base_column='close',fix_columns=['date','close','p_change','o_change','position','pos20','MAX20high','star_l']) high_o_df['code'] = stock_symbol high_o_df['star_index'] = np.where(high_o_df['pos20']<=0,0,(high_o_df['star_l']/high_o_df['pos20']*((high_o_df['MAX20high']-high_o_df['close'])/high_o_df['MAX20high'])).round(2)) deep_star_df= deep_star_df.append(high_o_df) if dapan_stocks and (stock_symbol in dapan_stocks): dapan_criteria = ((s_stock.temp_hist_df['o_change']> 0.30) & (s_stock.temp_hist_df['pos20'].shift(1)<=1.0)) dapan_regress_column_type = 'open' dapan_high_o_df,dapan_high_open_columns = s_stock.regress_common(dapan_criteria,post_days=[0,-1,-2,-3,-4,-5,-10,-20,-60],regress_column = dapan_regress_column_type, base_column='open',fix_columns=['date','close','p_change','o_change','position','pos20','oo_chg','oh_chg','ol_chg','oc_chg']) dapan_high_o_df['code'] = stock_symbol dapan_high_o_df['ho_index'] = np.where(dapan_high_o_df['pos20']<=0,0,(dapan_high_o_df['o_change']/dapan_high_o_df['pos20']).round(2)) dapan_ho_df= dapan_ho_df.append(dapan_high_o_df) else: pass #print(test_result) #print(recent_trend) i = i+1 if test_result.empty: pass else: test_result_df = tds.pd.DataFrame(test_result.to_dict(), columns=column_list, index=[stock_symbol]) all_result_df = all_result_df.append(test_result_df,ignore_index=False) if recent_trend.empty: pass else: trend_result_df = tds.pd.DataFrame(recent_trend.to_dict(), columns=trend_column_list, index=[stock_symbol]) all_trend_result_df = all_trend_result_df.append(trend_result_df,ignore_index=False) #except: # print('Regression test exception for stock: %s' % stock_symbol) #print(result_df.tail(20)) #all_result_df = all_result_df.sort_index(axis=0, by='sum', ascending=False) all_result_df = all_result_df.sort_values(axis=0, by='cum_prf', ascending=False) all_trend_result_df = all_trend_result_df.sort_values(axis=0, by='chg_fuli', ascending=False) result_summary = all_result_df.describe() result_codes = all_result_df.index.values.tolist() result_codes_dict = {} on_trade_dict = {} valid_dict = {} for code in result_codes: if code in basic_code_keys: result_codes_dict[code] = basic_code[code] else: result_codes_dict[code] = 'NA' if code in all_stop_codes: on_trade_dict[code] = 1 else: on_trade_dict[code] = 0 if code in except_stocks: valid_dict[code] = 1 else: valid_dict[code] = 0 """ all_temp_dict = {} all_temp_codes = all_temp_hist_df.index.values.tolist() for code in result_codes: if code in all_temp_codes: all_temp_dict[code]= basic_code[code] else: result_codes_dict[code] = 'NA' all_temp_hist_df['name'] = tds.Series(result_codes_dict,index=all_result_df.index) """ #print(result_codes_dict) #print(tds.pd.DataFrame(result_codes_dict, columns=['name'], index=list(result_codes_dict.keys()))) #all_result_df['name'] = result_codes_dict all_result_df['name'] = tds.Series(result_codes_dict,index=all_result_df.index) deep_star_df['name'] = tds.Series(result_codes_dict,index=deep_star_df.index) deep_star_df = deep_star_df[['code','name','star_index']+high_open_columns] dapan_codes_dict = {} if dapan_ho_df.empty: pass else: for code in dapan_stocks: if code in basic_code_keys: dapan_codes_dict[code] = basic_code[code] else: dapan_codes_dict[code] = 'NA' dapan_ho_df['name'] = tds.Series(dapan_codes_dict,index=dapan_ho_df.index) dapan_ho_df = dapan_ho_df[['code','name','ho_index']+dapan_high_open_columns] all_trend_result_df['name'] = tds.Series(result_codes_dict,index=all_trend_result_df.index) all_result_df['stopped'] = tds.Series(on_trade_dict,index=all_result_df.index) all_trend_result_df['stopped'] = tds.Series(on_trade_dict,index=all_trend_result_df.index) all_result_df['invalid'] = tds.Series(valid_dict, index=all_result_df.index) all_trend_result_df['invalid'] = tds.Series(valid_dict, index=all_trend_result_df.index) all_result_df['max_r'] = all_result_df['max']/all_result_df['cum_prf'] ma_c_name = '%s日趋势数' % ma_num trend_column_chiness = {'count':ma_c_name, 'mean': '平均涨幅','chg_fuli': '复利涨幅', 'std': '标准差', 'min': '最小涨幅', '25%': '25%', '50%': '50%', '75%': '75%', 'max': '最大涨幅', 'c_state': '收盘价状态', 'c_mean': '平均收盘价', 'pos_mean': '平均仓位', 'ft_rate': '低点反弹率', 'presure': '压力', 'holding': '支撑', 'close': '收盘价','cont_num': '连涨天数', 'name': '名字', 'stopped': '停牌','invalid': '除外', 'amount_rate':'量比','ma_amount_rate':'短长量比'} print(all_trend_result_df) all_trend_result_df_chinese = all_trend_result_df.rename(index=str, columns=trend_column_chiness) print(all_result_df) print(all_result_df.describe()) if isinstance(k_num, str): k_num = k_num.replace('/','').replace('-','') latest_date_str = pds.tt.get_latest_trade_date(date_format='%Y/%m/%d') latest_date_str = latest_date_str.replace('/','').replace('-','') rate_to_confirm_str = '%s' % rate_to_confirm rate_to_confirm_str = 'rate' + rate_to_confirm_str.replace('.', '_') #print('latest_date_str=',latest_date_str) tail_name = '%s_from_%s_%s.csv' % (latest_date_str,k_num,rate_to_confirm_str) #all_result_df['yearly_prf'] = all_result_df['fuli_prf']**(1.0/(all_result_df['days']/365.0)) result_column_list = ['count','name', 'mean', 'std', 'max', 'min', 'cum_prf', 'fuli_prf','yearly_prf','success_rate','last_trade_date','last_trade_price','min_hold_count', 'max_hold_count','avrg_hold_count','this_hold_count','exit','enter', 'position','max_amount_rate','max_amount_distance','break_in', 'break_in_count','break_in_date', 'break_in_distance', 'stopped','invalid','max_r','25%','50%','75%',] all_result_df = all_result_df[result_column_list] all_result_df.to_csv('./temp/regression_test_' + addition_name +tail_name) deep_star_df.to_csv('./temp/pos20_star_%s'% regress_column_type + addition_name +tail_name) dapan_ho_df.to_csv('./temp/dapan_high_open_%s'% regress_column_type + addition_name +tail_name) if all_result_df.empty: pass else: consider_df = all_result_df[(all_result_df['max_amount_rate']>2.0) & (all_result_df['position']>0.35) & (all_result_df['stopped']==0) & (all_result_df['invalid']==0)]# & (all_result_df['last_trade_price'] ==0)] consider_df.to_csv('./temp/consider_' + addition_name +tail_name) active_df = all_result_df[(all_result_df['max_r']<0.4) & (all_result_df['name']!='NA') & # (all_result_df['min']>-0.08) & (all_result_df['position']>0.35) & (all_result_df['max']>(3.9 *all_result_df['min'].abs())) & (all_result_df['invalid']==0) &(all_result_df['stopped']==0)] active_df['active_score'] = active_df['fuli_prf']/active_df['max_r']/active_df['std']*active_df['fuli_prf']/active_df['cum_prf'] active_df = active_df.sort_values(axis=0, by='active_score', ascending=False) active_df.to_csv('./temp/active_' + addition_name +tail_name) tupo_df = all_result_df[(all_result_df['break_in_distance']!=0) &(all_result_df['break_in_distance']<=20) & (all_result_df['position']>0.35) & (all_result_df['stopped']==0) & (all_result_df['invalid']==0) & (all_result_df['name']!='NA') & (all_result_df['last_trade_price']!=0)]# & (all_result_df['last_trade_price'] ==0)] tupo_df.to_csv('./temp/tupo_' + addition_name +tail_name) result_summary.to_csv('./temp/result_summary_' + addition_name +tail_name) all_trend_result_df_chinese.to_csv('./temp/trend_result_%s' % ma_num + addition_name +'%s_to_%s_%s.csv' % (k_num,latest_date_str,rate_to_confirm_str)) if not all_temp_hist_df.empty: #all_temp_hist_df = all_temp_hist_df[column_list] all_temp_hist_df = all_temp_hist_df.set_index('code') all_temp_hist_df.to_csv('./temp/all_temp_' + addition_name +tail_name) reverse_df = all_temp_hist_df[(all_temp_hist_df['reverse']>0) & (all_temp_hist_df['LINEARREG_ANGLE8']<-2.0) & (all_temp_hist_df['position']>0.35)]# #reverse_df['r_sort'] = reverse_df['star_chg']/reverse_df['pos20'] reverse_df.to_csv('./temp/reverse_df_' + addition_name +tail_name) long_turn_min_angle = -0.5 short_turn_min_angle = 0.2 ma30_df = all_temp_hist_df[(all_temp_hist_df['LINEARREG_ANGLE14MA120']>long_turn_min_angle) & (all_temp_hist_df['LINEARREG_ANGLE14MA250']>long_turn_min_angle) & (all_temp_hist_df['LINEARREG_ANGLE14MA60']>long_turn_min_angle) & (all_temp_hist_df['LINEARREG_ANGLE14MA30']<1.0) & (all_temp_hist_df['LINEARREG_ANGLE5MA5']>short_turn_min_angle) & (all_temp_hist_df['LINEARREG_ANGLE6MA10']>short_turn_min_angle) & (all_temp_hist_df['LINEARREG_ANGLE5MA5']>=all_temp_hist_df['LINEARREG_ANGLE6MA10']) & (all_temp_hist_df['LINEARREG_ANGLE8ROC1']>0.0) & (all_temp_hist_df['close']>all_temp_hist_df['ma30']) & (all_temp_hist_df['position']>0.35)]# ma30_df.to_csv('./temp/ma30_df_' + addition_name +tail_name) return all_result_df #back_test(k_num='2015/08/30',given_codes=['000004','000005'],except_stocks=['000029'], type='stock', source='YH')
def get_latest_temp_df(today_df_high_open=[]): all_trade_code = [ '600460', '002075', '600367', '002797', '002224', '600393', '002523', '300201', '600262', '600671', '002796', '603029', '603101', '300509', '300511', '603822', '603528', '603799', '603399', '300340', '300510', '600891', '600639', '002165', '600540', '600392', '600012', '300341', '300493', '000518', '300014', '601000', '300395', '002670', '600438', '002771', '002155', '000005', '603188', '000890', '000570', '002070', '002297', '300481', '600975', '300307', '603901', '000910', '000799', '002038', '002010', '300267', '300483', '300394', '300100', '002509', '002364', '002173', '600715', '002279', '601958', '300507', '002340', '600507', '300449', '002108', '002631', '600335', '002512', '002567', '000421', '300373', '002722', '002237', '300258', '000037', '300389', '300278', '002709', '300409', '000066', '600330', '300004', '600160', '002696', '002082', '002204', '600733', '600156', '600547', '600382', '300438', '600021', '002076', '000425', '002676', '300508', '600623', '300327', '300131', '300040', '000611', '002006', '600767', '600490', '601199', '600352', '002100', '300134', '600057', '300068', '002750', '000526', '600869', '300318', '002335', '600883', '002713', '600359', '002379', '002057', '300219', '300351', '300088', '300429', '002309', '002049', '000606', '002715', '000099', '300037', '300342', '000055', '000988', '002273', '002466', '603368', '603678', '000586', '600522', '002132', '002341', '002245', '600370', '600836', '300376', '300143', '603117', '000839', '600745', '000813', '600425', '002041', '002147', '600575', '002136', '002440', '600258', '002716', '002664', '002646', '002422', '002514', '600489', '000504', '002234', '002196', '002215', '002601', '600260', '600250', '000838', '002222', '600885', '002249', '603338', '002674', '600590', '300123', '600117', '603726', '603398', '601700', '603011', '300073', '002299', '600054', '600201', '000683', '002752', '000810', '000936', '000533', '002589', '002217', '002229', '600137', '300273', '603026', '600693', '002153', '002015', '000796', '600619', '600366', '002124', '002074', '002596', '600562', '600641', '002580', '601113', '600053', '600785', '600493', '300118', '300266', '603198', '600992', '300474', '603589', '002312', '000597', '002545', '300360', '000782', '002350', '000008', '000516', '600505', '601069', '000545', '000880', '300012', '002135', '002023', '300207', '600305', '603729', '002756', '600615', '002460', '000046', '002296', '603969', '600083', '300250', '000567', '603006', '300283', '002103', '002056', '603778', '600313', '002532', '002307', '002730', '002571', '002557', '002508', '002473', '002672', '002418', '600882', '300420', '300393', '300017', '300243', '600006', '000078', '600529', '600467', '600183', '600232', '002758', '300427', '002271', '600782', '600620', '002590', '002708', '002706', '601003', '600829', '600198', '002489', '300132', '002628', '600987', '002548', '300485', '600311', '002091', '002793', '300008', '002534', '002684', '000679', '600399', '002463', '002395', '002324', '300280', '000856', '600961', '002541', '002648', '600309', '000831', '002111', '600990', '002387', '600896', '002125', '002652', '002115', '000150', '600821', '300137', '603568', '603828', '002597', '000061', '601689', '600386', '603919', '603899', '300116', '600797', '002456', '000733', '002043', '002725', '300330', '002189', '000715', '300048', '002367', '600423', '600582', '603309', '600241', '300034', '300223', '600618', '300198', '000748', '600712', '600568', '600068', '600834', '002605', '000937', '601311', '300178', '002419', '000888', '600594', '300402', '300237', '000686', '300398', '000848', '603128', '000852', '000677', '603333', '600080', '600593', '600862', '600702', '000420', '600967', '601880', '002639', '600703', '002625', '600543', '600076', '000678', '600444', '600559', '000797', '600605', '600638', '300505', '000780', '600272', '300056', '600395', '300156', '600796', '002772', '600112', '600617', '600343', '300107', '600275', '002088', '600790', '000158', '000665', '002470', '603798', '300080', '600293', '000688', '002381', '000595', '300259', '600694', '601222', '600249', '600461', '002094', '300498', '600988', '600722', '600480', '002318', '601398', '603308', '002538', '002231', '600207', '600552', '300133', '600680', '300148', '300326', '002685', '002726', '600558', '300261', '300170', '000998', '600267', '002468', '002479', '002518', '600180', '603600', '002721', '300444', '300375', '600317', '300421', '300268', '601008', '300407', '603355', '002477', '600270', '000922', '002531', '002099', '002579', '600086', '002020', '002635', '603588', '002643', '000815', '002186', '002086', '600401', '000705', '600436', '600872', '601006', '300368', '603868', '002360', '601388', '002163', '002391', '600685', '600854', '000096', '000708', '600219', '600648', '600973', '300482', '603023', '000430', '000557', '002087', '300235', '600976', '002667', '600486', '600778', '002614', '300195', '600809', '600055', '603718', '600758', '600545', '300274', '000619', '600662', '002282', '002496', '300035', '300128', '002200', '002408', '300334', '002502', '002443', '002167', '002436', '300227', '300269', '000426', '000969', '002411', '601226', '600165', '600825', '600815', '300305', '000912', '300425', '000762', '002346', '000534', '603366', '600845', '000973', '600791', '600036', '002656', '000862', '002310', '000820', '002465', '600336', '002275', '002775', '603223', '601872', '002256', '603567', '000029', '300321', '600580', '600833', '002382', '002574', '600478', '600610', '300328', '603099', '000673', '002003', '600521', '002723', '002438', '002521', '002277', '601886', '002384', '002116', '300026', '000019', '600331', '600810', '600735', '600064', '600284', '002434', '600766', '002671', '000050', '000546', '603315', '600398', '000596', '000886', '600476', '600770', '601798', '300058', '600560', '000584', '603028', '300359', '000498', '000697', '002174', '300440', '603997', '300119', '002079', '002678', '600128', '002254', '600622', '603456', '000010', '600146', '002738', '002537', '600841', '600589', '000661', '000833', '000738', '000423', '002742', '002618', '300193', '600200', '002458', '002166', '000712', '300271', '601233', '600897', '600687', '300403', '600288', '300371', '603701', '600028', '300066', '002516', '300101', '300159', '002033', '600210', '600133', '600387', '002292', '300091', '603077', '600354', '000065', '000058', '600356', '601566', '002641', '600186', '600650', '300329', '600634', '002334', '600706', '300234', '600082', '300325', '000062', '002113', '300196', '002097', '600500', '600235', '603300', '000011', '002561', '600678', '000895', '600088', '601899', '600819', '000927', '002252', '300072', '603518', '603116', '000825', '000981', '300108', '002790', '000735', '000903', '002677', '002464', '000967', '002146', '002118', '600221', '300350', '601789', '002024', '002311', '002454', '002592', '300031', '600851', '600114', '600531', '600261', '000532', '601336', '002689', '600895', '600776', '300365', '002484', '600039', '600418', '600369', '300408', '300054', '002779', '300145', '600138', '600130', '600333', '300463', '002327', '000157', '300106', '600327', '600017', '002578', '300182', '002151', '000809', '000659', '600993', '002185', '601890', '002258', '601877', '002724', '600372', '600020', '000819', '603018', '002753', '002747', '600121', '600572', '002121', '002504', '002130', '000822', '300344', '600748', '600246', '002494', '002714', '600105', '000561', '601166', '601668', '600225', '600677', '601800', '000926', '002317', '603979', '600865', '002322', '002718', '300475', '000626', '603088', '603806', '600812', '002276', '300491', '300129', '300357', '000039', '600135', '300296', '000999', '002270', '300506', '002760', '600071', '600587', '603508', '000042', '600816', '002455', '603066', '000976', '002208', '000021', '300304', '600742', '603686', '002080', '002453', '603616', '600195', '600131', '600391', '000023', '600717', '600316', '300249', '002300', '300199', '601155', '002178', '600095', '600389', '601777', '000881', '002042', '300114', '600890', '002637', '600101', '002026', '000777', '002045', '600893', '000798', '600242', '600238', '000710', '601012', '002662', '300281', '600405', '002161', '300070', '002361', '603369', '300297', '002182', '600613', '002081', '300415', '300239', '603939', '600523', '000669', '300293', '002485', '600421', '601021', '300165', '000049', '002140', '603703', '600859', '000869', '300374', '000566', '300049', '600107', '600211', '600506', '002588', '300397', '300358', '002370', '601318', '300489', '600005', '600008', '600031', '600035', '600048', '600097', '600113', '600120', '600122', '600123', '600129', '600139', '600149', '600153', '600168', '600170', '600173', '600178', '600182', '600189', '600209', '600215', '600218', '600226', '600228', '600231', '600298', '600315', '600318', '600321', '600326', '600355', '600358', '600363', '600365', '600381', '600385', '600397', '600408', '600409', '600455', '600468', '600469', '600470', '600485', '600488', '600509', '600511', '600533', '600539', '600556', '600565', '600571', '600576', '600577', '600592', '600609', '600614', '600630', '600636', '600640', '600644', '600645', '600653', '600663', '600676', '600679', '600683', '600688', '600696', '600714', '600728', '600734', '600738', '600749', '600751', '600753', '600768', '600777', '600792', '600808', '600822', '600843', '600848', '600856', '600857', '600868', '600870', '600873', '600877', '600898', '600966', '600999', '601001', '601005', '601018', '601058', '601088', '601101', '601168', '601179', '601288', '601333', '601599', '601601', '601666', '601939', '601988', '603008', '603268', '603318', '603519', '603611', '603808', '603838', '603869', '603918', '603993', '000002', '000004', '000007', '000038', '000070', '000089', '000159', '000166', '000401', '000409', '000415', '000416', '000505', '000509', '000511', '000524', '000525', '000537', '000540', '000547', '000553', '000555', '000565', '000568', '000571', '000581', '000582', '000598', '000608', '000610', '000612', '000617', '000628', '000629', '000633', '000635', '000636', '000638', '000651', '000667', '000670', '000693', '000717', '000718', '000720', '000729', '000732', '000736', '000752', '000755', '000757', '000766', '000790', '000806', '000818', '000835', '000836', '000883', '000887', '000893', '000901', '000911', '000917', '000920', '000923', '000925', '000932', '000950', '000953', '000955', '000962', '000968', '000975', '000997', '002012', '002044', '002046', '002052', '002065', '002069', '002072', '002089', '002101', '002110', '002112', '002129', '002131', '002133', '002134', '002145', '002154', '002159', '002164', '002175', '002190', '002199', '002201', '002203', '002207', '002209', '002210', '002211', '002212', '002219', '002230', '002246', '002250', '002264', '002272', '002278', '002280', '002283', '002288', '002289', '002291', '002306', '002314', '002319', '002331', '002347', '002349', '002352', '002354', '002355', '002371', '002373', '002386', '002389', '002405', '002429', '002439', '002447', '002469', '002482', '002491', '002492', '002499', '002505', '002507', '002515', '002517', '002524', '002540', '002542', '002547', '002554', '002555', '002569', '002570', '002573', '002587', '002591', '002599', '002608', '002611', '002612', '002617', '002619', '002630', '002647', '002654', '002655', '002663', '002675', '002682', '002686', '002691', '002694', '002700', '002703', '002712', '002735', '002739', '002759', '002762', '002766', '300005', '300019', '300025', '300038', '300039', '300043', '300044', '300045', '300046', '300053', '300057', '300061', '300062', '300067', '300069', '300071', '300104', '300110', '300113', '300121', '300125', '300142', '300152', '300158', '300163', '300173', '300176', '300180', '300184', '300185', '300217', '300220', '300221', '300225', '300226', '300242', '300251', '300265', '300276', '300282', '300285', '300290', '300292', '300295', '300298', '300299', '300300', '300308', '300323', '300331', '300332', '300335', '300338', '300339', '300362', '300366', '300370', '300391', '300405', '300410', '300411', '300416', '300423', '300426', '300428', '300432', '300434', '300437', '300441', '300450', '300457', '300462', '300464', '300465', '300472', '300488', '300495', '002791', '600754', '002761', '002695', '600184', '000014', '603085', '000028', '002002', '600482', '000958', '002609', '600525', '002171', '002527', '002014', '002441', '000722', '300144', '300210', '002137', '002168', '600628', '300492', '000756', '600611', '300486', '300029', '000685', '600658', '002734', '000520', '600152', '600960', '601766', '002444', '603599', '600188', '600508', '601015', '300007', '600736', '600661', '002372', '002021', '600273', '600664', '000036', '000691', '002581', '000837', '002651', '300490', '000607', '601727', '601857', '603108', '002263', '002128', '603199', '002751', '600236', '600268', '603608', '300211', '002506', '600280', '600828', '603818', '600125', '600148', '600463', '000800', '300233', '600379', '600026', '000422', '000739', '300042', '600750', '300141', '000913', '002150', '002301', '300456', '600555', '600655', '300314', '002550', '300169', '002692', '600066', '300424', '300294', '300494', '601328', '000850', '601010', '601106', '000737', '600798', '002025', '600396', '002549', '600340', '002393', '600368', '000572', '002615', '002749', '000889', '601567', '600794', '000902', '600187', '600276', '000560', '002139', '300448', '002428', '002559', '600965', '000821', '300473', '600308', '002417', '600449', '600063', '600746', '002358', '600900', '600400', '000151', '300115', '002493', '603169', '300127', '000933', '002363', '002187', '002226', '000035', '000939', '601888', '300090', '000538', '600255', '002792', '600118', '600561', '600802', '600986', '000723', '300153', '300286', '002600', '300417', '600755', '600150', '600325', '002067', '002259', '600716', '000012', '002423', '600106', '601818', '000001', '601169', '603311', '600495', '601985', '000100', '300404', '002623', '600875', '000034', '600616', '601116', '002497', '600033', '300167', '300442', '600237', '002085', '300102', '000698', '601801', '000905', '002528', '002658', '600827', '600917', '000541', '601808', '601007', '600126', '600824', '601989', '002227', '600084', '603861', '600513', '600078', '002788', '002036', '300310', '000709', '002633', '300363', '600459', '300228', '300194', '600197', '600708', '601933', '002450', '600892', '000576', '300364', '002098', '002144', '601258', '000726', '300253', '601118', '600350', '600548', '601608', '600332', '002181', '600971', '601919', '002170', '603989', '600019', '000931', '300136', '300311', '600784', '600879', '000630', '600997', '300175', '300317', '603017', '600222', '000861', '600569', '300111', '002148', '600307', '603100', '601186', '002698', '600781', '000680', '600199', '600022', '603168', '603898', '600282', '601898', '600823', '600175', '002486', '600861', '600077', '002092', '000040', '600668', '002039', '000731', '601901', '000590', '300433', '600515', '002255', '300459', '000632', '002034', '600252', '600290', '000652', '000793', '000916', '002260', '600269', '002247', '002780', '000792', '002027', '000428', '000753', '002071', '002375', '600081', '000528', '600884', '600433', '002737', '000985', '600586', '600196', '300316', '002690', '000795', '600099', '600637', '002510', '601588', '600876', '002058', '601188', '000877', '000897', '600015', '600151', '600765', '000882', '600361', '601992', '600428', '002741', '300479', '600050', '600731', '601965', '000982', '600894', '002406', '000876', '600248', '002732', '000898', '002344', '601717', '000045', '600295', '002767', '002198', '600855', '300200', '002195', '002126', '000906', '600682', '002449', '002778', '300396', '600193', '601616', '600537', '002681', '600837', '000826', '603883', '002442', '300303', '002645', '600380', '601216', '601928', '002281', '601390', '300064', '300399', '002397', '300447', '600707', '600660', '002404', '002657', '002253', '000989', '002594', '002054', '601968', '300097', '002487', '600959', '002446', '603158', '600166', '002765', '002028', '300179', '600323', '600351', '600089', '002376', '300181', '000900', '600223', '000707', '601158', '000963', '000928', '002392', '000419', '002315', '600278', '600835', '000529', '002598', '600475', '002047', '300124', '002284', '000682', '002152', '600362', '600838', '600720', '000069', '002238', '300353', '600067', '601636', '000713', '000952', '600783', '603520', '601126', '000868', '601969', '300478', '600881', '000060', '300255', '600759', '300430', '300312', '600978', '603606', '000828', '002529', '300206', '600051', '600579', '600635', '600498', '300414', '600739', '002402', '002179', '002223', '300151', '000408', '000600', '300461', '600239', '002728', '300126', '600143', '600322', '600100', '000929', '002236', '002390', '000022', '600787', '000536', '300023', '300496', '601788', '000783', '002035', '600517', '300154', '002736', '600769', '600429', '002558', '002083', '600185', '601211', '002336', '600376', '600567', '300471', '600277', '002066', '002622', '600814', '601009', '600256', '600481', '002269', '600377', '002342', '002740', '000517', '000970', '300262', '600266', '002533', '600127', '001979', '002009', '600583', '002228', '002316', '000429', '600096', '002437', '300011', '600388', '000858', '002638', '000666', '300096', '600004', '601558', '300218', '600649', '002501', '002117', '002420', '000609', '300079', '601117', '000601', '002062', '002603', '600871', '601929', '000603', '000563', '002235', '603010', '300455', '000543', '002433', '603167', '002763', '600177', '600698', '002016', '002060', '002746', '000506', '002693', '600119', '600704', '600573', '603288', '002022', '600958', '600741', '601908', '002295', '603118', '000591', '000523', '300087', '600535', '000776', '600302', '300092', '600466', '603027', '002004', '600141', '601618', '000779', '600681', '600724', '600108', '601999', '002424', '600329', '300147', '600038', '300160', '601519', '000656', '000514', '300103', '600056', '300446', '002120', '603789', '000006', '002193', '300161', '600353', '601518', '601678', '600085', '002162', '002457', '000671', '300212', '300500', '603012', '300214', '300468', '000935', '002194', '300452', '002365', '000018', '600684', '601368', '601900', '300388', '002308', '000655', '000663', '600624', '000701', '600665', '000816', '603698', '600328', '002585', '300024', '600844', '000863', '603766', '002522', '600016', '002329', '600858', '000725', '600596', '300120', '300086', '002244', '601555', '000063', '000400', '002339', '300002', '002467', '300502', '002755', '002595', '300487', '300197', '002666', '002233', '600600', '600867', '600984', '000156', '002785', '002781', '002748', '000605', '000020', '600805', '002345', '002498', '603669', '002214', '002239', '000592', '300451', '000672', '000948', '002399', '600756', '601718', '600510', '601002', '600243', '601225', '002064', '002415', '603126', '300172', '000544', '002526', '603558', '002562', '300445', '600757', '600874', '300146', '600774', '600251', '002795', '603688', '600980', '600477', '603598', '002398', '603030', '000507', '000759', '300291', '002068', '002707', '600320', '600518', '300319', '601107', '600803', '600190', '600846', '603166', '000801', '002013', '002286', '000681', '002368', '600070', '600446', '000589', '600420', '600110', '300139', '300084', '300347', '002109', '300032', '600730', '600000', '002225', '600109', '600516', '600062', '000768', '300315', '000921', '002472', '600439', '601669', '600690', '601208', '300377', '600711', '002176', '600729', '002362', '600435', '600073', '000959', '300254', '600820', '603328', '000623', '002451', '600503', '600795', '300503', '600979', '002261', '300385', '600606', '300348', '600079', '002650', '000949', '600483', '300208', '002789', '601231', '300240', '600864', '600551', '000501', '000957', '002285', '000338', '600501', '603618', '000056', '600850', '600167', '000859', '002773', '600642', '603001', '600415', '600880', '603696', '002333', '000778', '002409', '600403', '002141', '300301', '000411', '002157', '002337', '601998', '002513', '002426', '600291', '002727', '000625', '600723', '300287', '300443', '000153', '600718', '002380', '002711', '600773', '600213', '603555', '002019', '600292', '002184', '000559', '002266', '002030', '600998', '000088', '000788', '000908', '600360', '600578', '002556', '000930', '600830', '600191', '002448', '600626', '002564', '300077', '300117', '600963', '002500', '600526', '002328', '002156', '600761', '002705', '600345', '000918', '600652', '002343', '600227', '000031', '000719', '002604', '300309', '601377', '601866', '002471', '300075', '603999', '600487', '300343', '601633', '000407', '600496', '002332', '000301', '000965', '600074', '002338', '000668', '002172', '002632', '300372', '000899', '600499', '600601', '002330', '300166', '600643', '603111', '000548', '300400', '000919', '001696', '600657', '000009', '300059', '300001', '600279', '000620', '300256', '600557', '300003', '600779', '002687', '600069', '600030', '600426', '300333', '600299', '300222', '601218', '300098', '300289', '002073', '300231', '000413', '002421', '002503', '300183', '000987', '300284', '600416', '002218', '002119', '600889', '600982', '002474', '603866', '601991', '002293', '300149', '300174', '300155', '600743', '002197', '603566', '002017', '002410', '600220', '600818', '600527', '300205', '002461', '601600', '000700', '600203', '600667', '000573', '300099', '002377', '002325', '300422', '600563', '300229', '600536', '002142', '002583', '002452', '002535', '600104', '600528', '600705', '002008', '002432', '000488', '000539', '002096', '300387', '600651', '600023', '603299', '002575', '300168', '300216', '600764', '002084', '600621', '601515', '002321', '300244', '000502', '002077', '300190', '600027', '600647', '000811', '600061', '000980', '002183', '600727', '600283', '002078', '603123', '300413', '300412', '000564', '002149', '600747', '000786', '600697', '300324', '002313', '600737', '600629', '002051', '600826', '601016', '002188', '600060', '000027', '000531', '300055', '002553', '600970', '002107', '600259', '600018', '002268', '601688', '002192', '000519', '600233', '002511', '002326', '600549', '600158', '300013', '002414', '600532', '000716', '600699', '601677', '002191', '601011', '000728', '300082', '600406', '002320', '002673', '000403', '002029', '002490', '002357', '000650', '002011', '600789', '000851', '002478', '002102', '000979', '300089', '000966', '300105', '000977', '600157', '000909', '002063', '002530', '000513', '000803', '002566', '002719', '300074', '300162', '300439', '000616', '002572', '000613', '002697', '600458', '000960', '002061', '002495', '601628', '002205', '300028', '300109', '601198', '002262', '600348', '000690', '002095', '600011', '000830', '300279', '600410', '600801', '600422', '000550', '300484', '600208', '000878', '603015', '002776', '002221', '601100', '000758', '600162', '601996', '600037', '002104', '300453', '600847', '000692', '600691', '600831', '002394', '000554', '002232', '600159', '300436', '600780', '300238', '000032', '000938', '600059', '002680', '002602', '002653', '000090', '002305', '600303', '300392', '300171', '000030', '002629', '600887', '002031', '600072', '002546', '002475', '600338', '600337', '300022', '300095', '600289', '600116', '603885', '002520', '300016', '002180', '300245', '000791', '300047', '600588', '600612', '002627', '600811', '002769', '300224', '600373', '300352', '601099', '300320', '600007', '600863', '002374', '600479', '600029', '000043', '603021', '000750', '001896', '000915', '002274', '300027', '002177', '002582', '600497', '600689', '600538', '300247', '000068', '002243', '600566', '000627', '002396', '002053', '300470', '002783', '002430', '601020', '000026', '002298', '600090', '300337', '600094', '600257', '600075', '002661', '600962', '002782', '002400', '600530', '601028', '002544', '002240', '600217', '603800', '600132', '600740', '600674', '002251', '300009', '601313', '000812', '300213', '300188', '002660', '600155', '002616', '300302', '002768', '600985', '002304', '601369', '300345', '300349', '000503', '600456', '600172', '600010', '300135', '000789', '002206', '002294', '300230', '002621', '600585', '603222', '002640', '603003', '601038', '600595', '600886', '600169', '002216', '000721', '000333', '603005', '600202', '300085', '300020', '002093', '300204', '300112', '000978', '000727', '000761', '603998', '002568', '002138', '000530', '600462', '002733', '000785', '603025', '002551', '002202', '000823', '600888', '300236', '000599', '300497', '002552', '002586', '300418', '002610', '300209', '000807', '300015', '600673', '600695', '000587', '300030', '300094', '002037', '300263', '300499', '000760', '603636', '600111', '600807', '002403', '002401', '300480', '600692', '002613', '600995', '002351', '002158', '000558', '002476', '000551', '600519', '300177', '002539', '600804', '300093', '002665', '002302', '002644', '000510', '300257', '002303', '000417', '002383', '000639', '000703', '600297', '002624', '300306', '603227', '300322', '300006', '300150', '002050', '300010', '603009', '600271', '300052', '000961', '002483', '002090', '002659', '002359', '300036', '600491', '002105', '300380', '601339', '002353', '603377', '300050', '601607', '000860', '600448', '300460', '600171', '600860', '600058', '603020', '002435', '300076', '300275', '002565', '002607', '002005', '300379', '600604', '603609', '300248', '300354', '600666', '600192', '600686', '000751', '300382', '300272', '300390', '600176', '600654', '600853', '000016', '600229', '002248', '600312', '002369', '002445', '002018', '002385', '002563', '300041', '000676', '600009', '002481', '002040', '002462', '002220', '600771', '002683', '002122', '000875', '300313', '300469', '600093', '600584', '002407', '002160', '002114', '002743', '002480', '600287', '002267', '601699', '000402', '002378', '300431', '603002', '603788', '300406', '300386', '002626', '000996', '002593', '601098', '002543', '600216', '000017', '600969', '601177', '002348', '300202', '600983', '002242', '300260', '600310', '603699', '600240', '600052', '300501', '300065', '600206', '002701', '002001', '600713', '002584', '601579', '300164', '600775', '000410', '002729', '600800', '600599', '601111', '000552', '000702', '600285', '002576', '300467', '600098', '002127', '600378', '000767', '300336', '002032', '000885', '600163', '300021', '300384', '300051', '600383', '002106', '002169', '300383', '000615', '300401', '002241', '601139', '600598', '002636', '002649', '002699', '002366', '600726', '002560', '300346', '300252', '600744', '300138', '000048', '002620', '603306', '002770', '000983', '000622', '300288', '600115', '600633', '601137', '000059', '002787', '002642', '300466', '300078', '300246', '002287', '300355', '000993', '600161', '300203', '002777', '300369', '300241', '002519', '300033', '600103', '300191', '002786', '002669', '603968', '300270', '603019', '600602', '601238', '000802', '300130', '300232', '600502', '002265', '002143', '002290', '002745', '300140', '002702', '002536', '002388', '000657', '002055', '002059', '600281', '002688', '002679', '000951', '600839', '002668', '300187', '002123', '002427', '000404', '002416', '300018', '300477', '000995', '000025', '000711', '000631', '002007', '300081', '600512', '002356', '601799', '300367', '300458', '002606', '002731', '002459', '603000', '600719', '002577', '603601', '600371', '600763', '000521', '002717', '000971', '000695', '000662', '002488', '600300', '000990', '600597', '300157', '600419', '002757', '002048', '002425', '300277', '300476', '000829', '300083', '000418', '600981', '002412', '002431', '000892', '600570', '000593', '603889', '300356', '300378', '300435', '300381', '000687', '300419', '000637', '000585', '300215', '300264', '600136', '002634', '300122', '603996', '002413', '600452', '300189', '603022', '002323', '300192', '002213', '603988', '000972', '300063', '603936', '600550' ] today_df_high_open = [ '002797', '002224', '300201', '600671', '002796', '603029', '603101', '300511', '603822', '603528', '603799', '300340', '300510', '300341', '300493', '601000', '600438', '000005', '002070', '300483', '300100', '002509', '600715', '601958', '300507', '002631', '002709', '300004', '600733', '600021', '000425', '600623', '002006', '600767', '000606', '002273', '002132', '600836', '002136', '000504', '002601', '603011', '000533', '002015', '600562', '600493', '002545', '000516', '000545', '002023', '000046', '002672', '300420', '300393', '600198', '002489', '002534', '600990', '600896', '603828', '002189', '603309', '300198', '002605', '000420', '002639', '600543', '600076', '300505', '300056', '600343', '600694', '603308', '300261', '000815', '300368', '002391', '600758', '000619', '300227', '000973', '002465', '002003', '002384', '600735', '002671', '000697', '600146', '002537', '600841', '000738', '600133', '600356', '300234', '603300', '000011', '000981', '002311', '002454', '002779', '300145', '600372', '002504', '600246', '000561', '600677', '300475', '600071', '002453', '600316', '002300', '600095', '300070', '600107', '600189', '000628', '300276', '600184', '002137', '300486', '600960', '300007', '600661', '300233', '002150', '600066', '000560', '600118', '603861', '002170', '300433', '002260', '002247', '600765', '600361', '000906', '002681', '000963', '000529', '002598', '300126', '000601', '000563', '601908', '000523', '600724', '300147', '300160', '300002', '600984', '000020', '600420', '002338', '300333', '603866', '300155', '600667', '603299', '002575', '000980', '000786', '002107', '002268', '300162', '002305', '002475', '600094', '601028', '300188', '002640', '300085', '000978', '300257', '002624', '300306', '002359', '300275', '002565', '300390', '002445', '300313', '002560', '601238', '000802', '000662', '002757', '300381', '002323' ] all_stop_code = [ '002507', '300019', '300163', '600468', '000887', '600645', '002766', '600732', '000555', '000693', '300472', '000568', '600091', '300423', '002207', '002499', '000537', '002175', '002554', '600614', '600153', '002675', '600355', '600873', '000911', '300405', '300220', '600806', '600234', '000968', '000524', '300488', '002352', '600701', '002129', '603779', '600265', '002209', '600571', '399106', '600321', '002439', '300366', '600113', '601599', '002291', '300282', '000033', '300057', '300176', '002264', '000962', '002491', '600209', '600817', '002131', '600636', '600546', '000004', '000755', '300044', '600182', '600866', '002349', '002599', '600485', '300265', '000582', '000818', '000553', '000732', '600656', '002203', '002219', '002319', '300432', '600898', '002739', '000836', '000932', '000155', '000617', '399006', '600592', '600577', '300071', '300025', '002686', '002798', '002112', '002354', '601018', '600129', '399001', '000007', '002145', '002630', '600035', '002110', '600230', '600539', '300434', '002212', '300285', '300457', '000790', '002663', '000635', '002735', '000571', '600469', '300298', '300104', '000505', '300339', '603918', '600375', '603318', '300038', '002608', '300338', '000415', '000923', '600228', '002555', '300437', '600346', '600738', '002591', '600734', '300391', '002272', '600358', '002373', '600768', '600509', '603519', '000511', '000401', '000509', '600751', '600247', '300495', '002347', '600339', '002762', '002246', '600556', '300441', '000636', '300184', '300512', '002405', '300299', '002190', '300465', '002386', '300125', '300362', '002306', '600653', '300462', '300142', '600533', '002046', '600120', '300061', '600149', '000002', '600728', '002012', '002044', '002505', '399008', '300332', '002691', '300067', '000608', '002617', '600603', '300450', '600363', '000720', '002759', '000038', '002164', '600870', '600215', '600488', '000670', '300046', '603808', '002089', '300308', '600714', '300045', '002612', '600749', '603611', '002230', '000159', '601001', '002611', '603993', '002469', '000717', '000547', '002524', '002134', '002647', '000752', '002371', '600777', '300300', '002065', '600640', '300251', '300225', '000950', '300062', '600301', '300242', '000651', '600520', '000565', '000917', '002288', '300185', '000920', '600576', '600581', '002199', '002694', '600097', '600675', '300292', '300428', '300323', '399005', '002072', '002587', '300053', '002331', '601168', '002547', '002492', '601918', '600408', '300426', '300226', '002482', '002654', '000953', '600318', '600753', '603339', '000610', '300290', '300113', '000409', '300043', '000975', '600877', '300331', '000757', '600857', '600721', '600760', '002101', '603838', '300411', '600843', '000893', '002283', '002703', '600696', '600822', '300464', '000612', '002389', '600306', '000300', '600145', '600319', '600511', '000806', '000736', '000997', '600139', '600122', '002569', '600212', '999999', '399007', '000955', '002069', '000718', '603268', '000766', '600226', '300005', '002211', '002515', '300335', '002289', '600793', '002429', '002712', '002355', '600455', '600608', '002447', '600725', '600390', '002542', '600663', '600173', '300410', '300173', '600856', '600710', '603959', '002201', '600432', '399004', '603869', '002278', '600381', '000835', '000638', '002052', '002655', '300221', '300110', '300180', '000633', '600848', '600385', '600179', '600365', '002314', '300295', '002573', '002280', '000925', '002682', '002619' ] today_df_high_open = all_trade_code today_df_high_open = list( set(today_df_high_open).difference(set(all_stop_code))) if today_df_high_open: first_code = today_df_high_open[0] stock_hist_anlyse = tds.Stockhistory(code_str=first_code, ktype='D') result_df = stock_hist_anlyse.form_temp_df(first_code) result_df = result_df.tail(1) #temp_df['code'] = pd.Series({'code':[first_code]}) result_df.insert(2, 'code', pd.Series([first_code], index=result_df.index.values)) #temp_df['code'] = pd.Series([first_code],index=temp_df.index.values) result_df = result_df.set_index('code') if len(today_df_high_open) == 1: return result_df today_df_high_open.pop(0) column_list = result_df.columns.values.tolist() atr_in_data = {} atr_in_df = pd.DataFrame(data=atr_in_data, columns=column_list) for high_open_code in today_df_high_open: temp_df = stock_hist_anlyse.form_temp_df(high_open_code) temp_df = temp_df.tail(1) temp_df.insert( 2, 'code', pd.Series([high_open_code], index=temp_df.index.values)) temp_df = temp_df.set_index('code') if temp_df.loc[high_open_code, 'atr_in'] > 0: atr_in_df = atr_in_df.append(temp_df, ignore_index=False) #print(temp_df) result_df = result_df.append(temp_df, ignore_index=False) print(result_df) print('atr in df :') print(atr_in_df) island_df = result_df[result_df.island > 0] reverse_df = result_df[result_df.reverse > 0] atr_in_df = result_df[(result_df.atr_in > 0) & (result_df.position > 0.5)] tangle_p_df = result_df[result_df.tangle_p > 0] gt2_rmb_df = result_df[result_df.gt2_rmb > 0] gt3_rmb_df = result_df[result_df.gt3_rmb > 0] island_df.to_csv('island.csv') reverse_df.to_csv('reverse.csv') atr_in_df.to_csv('atr_in.csv') tangle_p_df.to_csv('tangle_p.csv') gt2_rmb_df.to_csv('gt2_rmb.csv') gt2_rmb_df.to_csv('gt3_rmb.csv') print(island_df) print(reverse_df) print(atr_in_df) result_df.to_csv('result.csv') return result_df else: column_list = [ 'close', 'p_change', 'rmb_rate', 'gap', 'star', 'star_h', 'star_chg', 'ma5_chg', 'ma10_chg', 'k_rate', 'p_rate', 'island', 'atr_in', 'reverse', 'cross1', 'cross2', 'cross3', 'k_score', 'position', 'operation', 'std', 'tangle_p', 'tangle_p1', 'gt2_rmb', 'gt3_rmb' ] empty_data = {} empty_df = pd.DataFrame(data=empty_data, columns=column_list) return empty_df
import tradeStrategy as tds import pandas as pd import file_config as fc stock_symbol = '600742' """ import pandas as pd file_name = 'C:/work/temp/bs_%s.csv' % stock_symbol temp_hist_df = pd.read_csv(file_name,index_col=0) print(temp_hist_df) """ s_stock = tds.Stockhistory(stock_symbol, 'D', test_num=0, source='yh', rate_to_confirm=0.01) result_df = s_stock.form_temp_df(stock_symbol) test_result = s_stock.regression_test0(0.01) s_stock.form_regression_temp_df(rate_to_confirm=0.0001) s_stock.form_regression_result(save_dir='C:/work/temp/') test_result = s_stock.get_regression_result(refresh_regression=False, rate_to_confirm=0.0001, from_csv=True, temp_csv_dir='C:/work/temp/') test_result = s_stock.get_and_save_regression_result() test_result = s_stock.get_regression_result_from_csv() ALL_BACKTEST_DIR = 'D:/work/backtest/'