def main(offset=0): daily001 = main_session.query(models.DailyPro).filter( models.DailyPro.ts_code == '000001.SZ').order_by( models.DailyPro.trade_date.desc()).all() LAST_MARKET_DATE = daily001[offset].trade_date data_frame = DataFrame() for i, stock_basic in enumerate( main_session.query(models.StockBasicPro).all()): try: for key in models.StockBasicPro.keys: data_frame.loc[i, key] = getattr(stock_basic, key) data_frame.loc[i, COL_IS_MEDICAL] = api.is_medical( stock_basic.industry) daily = main_session.query(models.DailyPro).filter( models.DailyPro.ts_code == stock_basic.ts_code, models.DailyPro.trade_date <= LAST_MARKET_DATE).order_by( models.DailyPro.trade_date.desc()).limit( sampling_count).all() data_frame.loc[i, COL_LASTPRICE] = daily[0].close data_frame.loc[i, COL_DAILY_PIT] = api.daily_pit(daily, local_scale=30) holders = main_session.query(models.FloatHolderPro).filter( models.FloatHolderPro.ts_code == stock_basic.ts_code).all() h_list = [] for item in holders: h_list.append(item.holder_name) data_frame.loc[i, COL_FLOAT_HOLDERS] = '\n'.join(h_list) except Exception as e: print('exception in index:{index} {code} {name}'.format( index=i, code=stock_basic.ts_code, name=stock_basic.name)) continue print('##### medical pit {i} #####'.format(i=i)) data_frame = data_frame[(data_frame[COL_DAILY_PIT] == True) & (data_frame[COL_IS_MEDICAL] == True)] data_frame = data_frame.sort_values(by=COL_LASTPRICE, ascending=True).reset_index(drop=True) # data_frame = data_frame.loc[:, ['ts_code', 'name', 'industry', COL_LASTPRICE, COL_FLOAT_HOLDERS]] file_name = '{logs_path}/{date}@Medical_Pit.csv'.format( date=LAST_MARKET_DATE, logs_path=env.logs_path) with open(file_name, 'w', encoding='utf8') as file: data_frame.to_csv(file) shutil.rmtree('../../buffer/medical_pit/medical_pit') os.mkdir('../../buffer/medical_pit/medical_pit') for i in range(len(data_frame)): ts_code = data_frame.loc[i, 'ts_code'] name = data_frame.loc[i, 'name'] plot(ts_code=ts_code, name=name, last_date=LAST_MARKET_DATE, doc='medical_pit', file_prefix=i)
def main(offset=0): daily001 = main_session.query(models.DailyPro).filter( models.DailyPro.ts_code == '000001.SZ').order_by( models.DailyPro.trade_date.desc()).all() LAST_MARKET_DATE = daily001[offset].trade_date data_frame = DataFrame() for i, stock_basic in enumerate( main_session.query(models.StockBasicPro).all()): try: for key in models.StockBasicPro.keys: data_frame.loc[i, key] = getattr(stock_basic, key) data_frame.loc[i, COL_IS_MEDICAL] = api.is_medical( stock_basic.industry) daily = main_session.query(models.DailyPro).filter( models.DailyPro.ts_code == stock_basic.ts_code, models.DailyPro.trade_date <= LAST_MARKET_DATE).order_by( models.DailyPro.trade_date.desc()).limit( sampling_count).all() data_frame.loc[i, COL_LASTPRICE] = daily[0].close data_frame.loc[i, COL_DAILY_BREAK] = api.daily_break(daily, local_scale=30) data_frame.loc[i, COL_RECENT_AGGRESSIVE] = api.recent_limit(daily) daily_local_min = api.daily_local_min(sequence=daily, local_scale=30) data_frame.loc[i, COL_UP_RANGE] = round( (daily[0].close / daily_local_min) - 1, 2) holders = main_session.query(models.FloatHolderPro).filter( models.FloatHolderPro.ts_code == stock_basic.ts_code).all() h_set = set() for item in holders: h_set.add(item.holder_name) data_frame.loc[i, COL_FLOAT_HOLDERS] = '\n'.join(h_set) data_frame.loc[i, COL_HOLDERS_COUNT] = len(h_set) except Exception as e: print('exception in index:{index} {code} {name}'.format( index=i, code=stock_basic.ts_code, name=stock_basic.name)) continue print('##### medical aggressive {i} #####'.format(i=i)) data_frame = data_frame[(data_frame[COL_DAILY_BREAK] == True) # & (data_frame[COL_RECENT_AGGRESSIVE] == True) & (data_frame[COL_IS_MEDICAL] == True)] data_frame = data_frame.sort_values(by=COL_UP_RANGE, ascending=True).reset_index(drop=True) # data_frame = data_frame.loc[:, ['ts_code', 'name', 'industry', COL_LASTPRICE, COL_FLOAT_HOLDERS]] file_name = '{logs_path}/{date}@Medical_Aggressive.csv'.format( date=LAST_MARKET_DATE, logs_path=env.logs_path) with open(file_name, 'w', encoding='utf8') as file: data_frame.to_csv(file) plot_candle_gather(data_frame=data_frame, last_date=LAST_MARKET_DATE)
def main(offset=0): daily001 = main_session.query(models.DailyPro).filter( models.DailyPro.ts_code == '000001.SZ').order_by( models.DailyPro.trade_date.desc()).all() LAST_MARKET_DATE = daily001[offset].trade_date data_frame = DataFrame() for i, stock_basic in enumerate( main_session.query(models.StockBasicPro).all()): try: for key in models.StockBasicPro.keys: data_frame.loc[i, key] = getattr(stock_basic, key) data_frame.loc[i, COL_IS_MEDICAL] = api.is_medical( stock_basic.industry) daily = main_session.query(models.DailyPro).filter( models.DailyPro.ts_code == stock_basic.ts_code, models.DailyPro.trade_date <= LAST_MARKET_DATE).order_by( models.DailyPro.trade_date.desc()).limit( sampling_count).all() data_frame.loc[i, COL_LASTPRICE] = daily[0].close data_frame.loc[i, COL_DAILY_BREAK_INDEX] = api.daily_break_index( daily, local_scale=60) data_frame.loc[i, COL_LOCAL_LIMIT_COUNT] = api.local_limit_count( daily, local_scale=3) daily_basic = main_session.query(models.DailyBasic).filter( models.DailyBasic.ts_code == stock_basic.ts_code).one() data_frame.loc[i, COL_CIRC_MV] = daily_basic.circ_mv holders = main_session.query(models.FloatHolderPro).filter( models.FloatHolderPro.ts_code == stock_basic.ts_code).all() h_set = set() for item in holders: h_set.add(item.holder_name) data_frame.loc[i, COL_FLOAT_HOLDERS] = '\n'.join(h_set) data_frame.loc[i, COL_HOLDERS_COUNT] = len(h_set) except Exception as e: print('exception in index:{index} {code} {name}'.format( index=i, code=stock_basic.ts_code, name=stock_basic.name)) continue print('##### medical_ambush {i} #####'.format(i=i)) data_frame = data_frame[(data_frame[COL_LOCAL_LIMIT_COUNT] > 0) & (data_frame[COL_DAILY_BREAK_INDEX] < 5) & (data_frame[COL_IS_MEDICAL] == True)] data_frame = data_frame.sort_values(by=COL_LASTPRICE, ascending=True).reset_index(drop=True) # data_frame = data_frame.loc[:, ['ts_code', 'name', 'industry', COL_LASTPRICE, COL_FLOAT_HOLDERS]] file_name = '{logs_path}/{date}@Medical_Ambush.csv'.format( date=LAST_MARKET_DATE, logs_path=env.logs_path) with open(file_name, 'w', encoding='utf8') as file: data_frame.to_csv(file) batch_size = 500 sub = 0 for i in range(0, len(data_frame), batch_size): sub_df = data_frame.iloc[i:i + batch_size, :] sub_df = sub_df.reset_index(drop=True) plot_candle_gather(data_frame=sub_df, last_date=LAST_MARKET_DATE, sub=sub) sub += 1