def main(): pro = ts.pro_api() trade_dates = pro.daily(ts_code='000001.SZ').trade_date LAST_MARKET_DATE = trade_dates[0] stock_basic = pro.stock_basic(list_status='L', fields='ts_code,symbol,name,industry,fullname') data_frame = DataFrame() for key in ['ts_code', 'name', 'industry']: data_frame[key] = stock_basic[key] for key in [COL_CONTINUOUSLY_UP, COL_AVERAGE_TURNOVER, COL_LAST_5DAY_WEIGHT_P_CHANGE, COL_LAST_DAY_P_CHANGE]: data_frame[key] = np.nan for i, ts_code in enumerate(data_frame.ts_code): try: weekly = pro.weekly(ts_code=ts_code, #trade_date=LAST_MARKET_DATE start_date=trade_dates[sampling_count], end_date=LAST_MARKET_DATE) continuous_up = api.weekly_continuously_weight_up_count(weekly=weekly) data_frame.loc[i, COL_CONTINUOUSLY_UP] = continuous_up daily_basic = pro.daily_basic(ts_code=ts_code, # trade_date=LAST_MARKET_DATE start_date=trade_dates[10], end_date=LAST_MARKET_DATE) data_frame.loc[i, COL_AVERAGE_TURNOVER] = api.daily_basic_average_turnover_rate(daily_basic=daily_basic, begin=0, end=2) daily = pro.daily(ts_code=ts_code, start_date=trade_dates[sampling_count], end_date=LAST_MARKET_DATE) weight_0 = api.daily_period_weight(daily=daily, begin=0, end=period) weight_1 = api.daily_period_weight(daily=daily, begin=period, end=2 * period) data_frame.loc[i, COL_LAST_5DAY_WEIGHT_P_CHANGE] = round(((weight_0 / weight_1) - 1) * 100, 2) data_frame.loc[i, COL_LAST_DAY_P_CHANGE] = api.daily_accumulate_p_change(daily=daily, begin=0, end=1) except Exception as e: print('excetion in {}'.format(i)) continue print('##### {i} #####'.format(i=i)) time.sleep(0.1) data_frame = data_frame[ # (data_frame['circ_mv'] < 1000000) # & (data_frame[COL_CONTINUOUSLY_UP] > 1) (data_frame[COL_LAST_5DAY_WEIGHT_P_CHANGE] > 10) | (data_frame[COL_LAST_DAY_P_CHANGE] > 9.8) ] sorted_frame = data_frame.sort_values(by=COL_LAST_5DAY_WEIGHT_P_CHANGE, ascending=False) file_name = '../logs/{date}@WeeklyTrend.csv'.format(date=LAST_MARKET_DATE) # print(fileName) with open(file_name, 'w', encoding='utf8') as file: sorted_frame.to_csv(file)
def main(): pro = ts.pro_api() trade_dates = pro.daily(ts_code='000001.SZ').trade_date LAST_MARKET_DATE = trade_dates[0] stock_basic = pro.stock_basic( list_status='L', fields='ts_code,symbol,name,industry,fullname') data_frame = DataFrame() for key in ['ts_code', 'name', 'industry']: data_frame[key] = stock_basic[key] for key in [ COL_CONTINUOUS_FALL, COL_AVERAGE_P_CHANGE, COL_ACCUMULATE_P_CHANGE, 'circ_mv' ]: data_frame[key] = np.nan for i, ts_code in enumerate(data_frame.ts_code): try: daily_basic = pro.daily_basic( ts_code=ts_code, #trade_date=LAST_MARKET_DATE start_date=trade_dates[sampling_count], end_date=LAST_MARKET_DATE) for key in [ 'circ_mv', ]: data_frame.loc[i, key] = daily_basic.loc[0, key] daily = pro.daily(ts_code=ts_code, start_date=trade_dates[sampling_count], end_date=LAST_MARKET_DATE) continuous_fall = api.daily_converge_continuously_weight_fall_count( daily=daily) # continuous_up = api.daily_continuously_low_up_count(daily=daily) data_frame.loc[i, COL_CONTINUOUS_FALL] = continuous_fall data_frame.loc[i, COL_AVERAGE_P_CHANGE] = api.daily_average_p_change( daily=daily, begin=0, end=1 + continuous_fall) data_frame.loc[ i, COL_ACCUMULATE_P_CHANGE] = api.daily_accumulate_p_change( daily=daily, begin=0, end=1 + continuous_fall) except Exception as e: print('excetion in {}'.format(i)) continue print('##### {i} #####'.format(i=i)) time.sleep(0.1) data_frame = data_frame[ (data_frame[COL_CONTINUOUS_FALL] > 0) # & (data_frame[COL_AVERAGE_TURNOVER] < 5) # & (data_frame[COL_ACCUMULATE_P_CHANGE] > 5) # & (data_frame[COL_PRE_ACCUMULATE_P_CHANGE] < data_frame[COL_ACCUMULATE_P_CHANGE]) ] sorted_frame = data_frame.sort_values(by=COL_CONTINUOUS_FALL, ascending=False) file_name = '../logs/{date}@FallConverge.csv'.format(date=LAST_MARKET_DATE) # print(fileName) with open(file_name, 'w', encoding='utf8') as file: sorted_frame.to_csv(file)
def main(): pro = ts.pro_api() trade_dates = pro.daily(ts_code='000001.SZ').trade_date LAST_MARKET_DATE = trade_dates[0] stock_basic = pro.stock_basic( list_status='L', fields='ts_code,symbol,name,industry,fullname') data_frame = DataFrame() for key in ['ts_code', 'name', 'industry']: data_frame[key] = stock_basic[key] for key in [ COL_CONTINUOUSLY_UP, COL_AVERAGE_P_CHANGE, COL_ACCUMULATE_P_CHANGE, COL_PRE_ACCUMULATE_P_CHANGE, COL_LAST_MA20_GAP, 'circ_mv' ]: data_frame[key] = np.nan for i, ts_code in enumerate(data_frame.ts_code): # if ts_code.startswith('300'): # continue try: daily_basic = pro.daily_basic( ts_code=ts_code, #trade_date=LAST_MARKET_DATE start_date=trade_dates[sampling_count], end_date=LAST_MARKET_DATE) for key in [ 'circ_mv', ]: data_frame.loc[i, key] = daily_basic.loc[0, key] daily = pro.daily(ts_code=ts_code, start_date=trade_dates[sampling_count], end_date=LAST_MARKET_DATE) continuous_up = api.daily_continuously_low_up_count(daily=daily) data_frame.loc[i, COL_CONTINUOUSLY_UP] = continuous_up # data_frame.loc[i, COL_AVERAGE_TURNOVER] = api.daily_basic_average_turnover_rate(daily_basic=daily_basic, # begin=0, end=continuous_up) data_frame.loc[i, COL_AVERAGE_P_CHANGE] = api.daily_average_p_change( daily=daily, begin=0, end=continuous_up) data_frame.loc[ i, COL_ACCUMULATE_P_CHANGE] = api.daily_accumulate_p_change( daily=daily, begin=0, end=continuous_up) data_frame.loc[ i, COL_PRE_ACCUMULATE_P_CHANGE] = api.daily_accumulate_p_change( daily=daily, begin=continuous_up, end=continuous_up * 2) data_frame.loc[i, COL_LAST_MA20_GAP] = round( daily.close[0] - api.daily_ma(daily=daily, begin=0, end=1, step=20)[0], 2) except Exception as e: print('excetion in {}'.format(i)) continue print('##### {i} #####'.format(i=i)) time.sleep(0.1) data_frame = data_frame[(data_frame['circ_mv'] < 1000000) & (data_frame[COL_CONTINUOUSLY_UP] > 1) & (data_frame[COL_AVERAGE_P_CHANGE] > 5) # & (data_frame[COL_ACCUMULATE_P_CHANGE] > 5) & (data_frame[COL_PRE_ACCUMULATE_P_CHANGE] < data_frame[COL_ACCUMULATE_P_CHANGE]) & (data_frame[COL_LAST_MA20_GAP] > 0)] # industrys = dict() # for industry in data_frame.industry: # if industry in industrys: # industrys[industry] = industrys[industry] + 1 # else: # industrys[industry] = 1 # # industry_frame = DataFrame() # for i, industry in enumerate(industrys): # industry_frame.loc[i, 'industry'] = industry # industry_frame.loc[i, 'count'] = industrys[industry] sorted_frame = data_frame.sort_values(by=COL_CONTINUOUSLY_UP, ascending=False) file_name = '../logs/{date}@ContinuouslyUp.csv'.format( date=LAST_MARKET_DATE) # print(fileName) with open(file_name, 'w', encoding='utf8') as file: sorted_frame.to_csv(file)