Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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)

            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=60)
            data_frame.loc[i, COL_DAILY_AMPLITUDE] = api.amplitude(daily[:60])

            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('##### micro amplitude {i} #####'.format(i=i))

    data_frame = data_frame[(data_frame[COL_DAILY_BREAK] == True)
                            & (data_frame[COL_DAILY_AMPLITUDE] < 30)]

    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}@Micro_Amplitude.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/micro_amplitude/micro_amplitude')
    os.mkdir('../../buffer/micro_amplitude/micro_amplitude')
    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='micro_amplitude',
             file_prefix=i)
Ejemplo n.º 3
0
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_DRINK] = api.is_drink(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=60)

            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('##### drink break {i} #####'.format(i=i))

    data_frame = data_frame[
                            (data_frame[COL_DAILY_BREAK] == True)
                            & (data_frame[COL_IS_DRINK] == 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}@Drink_Break.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_gether(data_frame=data_frame, last_date=LAST_MARKET_DATE)