コード例 #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)
コード例 #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:
            if 'ST' in stock_basic.name \
                    or stock_basic.symbol.startswith('688'):
                continue

            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_VOL] = daily[0].vol

            aggressive_rate = get_aggressive_rate(stock_basic.symbol)
            limit_rate = get_limit_rate(stock_basic.symbol)
            data_frame.loc[
                i,
                COL_ADJACENT_AGGRESSIVE_INDEX] = get_adjacent_aggressive_index(
                    daily,
                    local_scale=5,
                    aggressive_rate=aggressive_rate,
                    limit_rate=limit_rate)

            # data_frame.loc[i, COL_DAILY_LOCAL_MAX] = api.daily_local_max(daily, local_scale=10)
        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('##### relimit ones {i} #####'.format(i=i))

    data_frame = data_frame[
        (data_frame[COL_ADJACENT_AGGRESSIVE_INDEX] > 0)
        # & (data_frame[COL_DAILY_LOCAL_MAX] < data_frame[COL_LASTPRICE] * 1.1)
    ]

    data_frame = data_frame.reset_index(drop=True)
    # data_frame = data_frame.loc[:, ['ts_code', 'name', 'industry', COL_LASTPRICE, COL_FLOAT_HOLDERS]]

    file_name = '{data_path}/relimit_ones.csv'.format(date=LAST_MARKET_DATE,
                                                      data_path=env.data_path)
    with open(file_name, 'w', encoding='utf8') as file:
        data_frame.to_csv(file)

    file_name = '{logs_path}/{date}@Relimit_Ones.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)
コード例 #3
0
ファイル: _0x18Atmosphere.py プロジェクト: vidalicious/midas
def main(offset=0):
    limit_up = 0
    limit_down = 0
    positive = 0
    negative = 0
    more_than_5 = 0
    less_than_minus_5 = 0
    total = 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:
            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).first()
            if daily:
                if daily.pct_chg > 9.9:
                    limit_up = limit_up + 1
                if daily.pct_chg < -9.9:
                    limit_down = limit_down + 1
                if daily.pct_chg >= 0:
                    positive = positive + 1
                if daily.pct_chg < 0:
                    negative = negative + 1
                if daily.pct_chg > 5:
                    more_than_5 = more_than_5 + 1
                if daily.pct_chg < -5:
                    less_than_minus_5 = less_than_minus_5 + 1

                total = total + 1

        except Exception as e:
            print('excetion in index:{index} {code} {name}'.format(
                index=i, code=stock_basic.ts_code, name=stock_basic.name))
            continue
        print('##### {i} #####'.format(i=i))

    data_frame.loc[0, '涨停'] = limit_up
    data_frame.loc[0, '跌停'] = limit_down
    data_frame.loc[0, '涨'] = round(positive / total, 2)
    data_frame.loc[0, '跌'] = round(negative / total, 2)
    data_frame.loc[0, '> 5%'] = round(more_than_5 / total, 2)
    data_frame.loc[0, '< -5%'] = round(less_than_minus_5 / total, 2)

    file_name = '../../logs/{date}@Atmosphere.csv'.format(
        date=LAST_MARKET_DATE)
    # print(fileName)
    with open(file_name, 'w', encoding='utf8') as file:
        data_frame.to_csv(file)
コード例 #4
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_WEIGHT_RISE_EFFICIENCY],
             data_frame.loc[i, COL_WEIGHT_MIN_INDEX],
             data_frame.loc[i, COL_WEIGHT_MAX_INDEX]
             ) = api.daily_weight_rise_efficiency(daily=daily, begin=0, end=10)

            data_frame.loc[i, COL_LASTPRICE] = daily[0].close

            cons = main_session.query(models.ConceptPro).join(
                models.ConceptDetailPro,
                models.ConceptPro.code == models.ConceptDetailPro.code).filter(
                    models.ConceptDetailPro.ts_code ==
                    stock_basic.ts_code).all()
            concept_value = ''
            for con in cons:
                concept_value = concept_value + '{c}, '.format(c=con.name)
            data_frame.loc[i, 'concept'] = concept_value
        except Exception as e:
            print('excetion in index:{index} {code} {name}'.format(
                index=i, code=stock_basic.ts_code, name=stock_basic.name))
            continue
        print('##### {i} #####'.format(i=i))

    data_frame = data_frame[(data_frame[COL_WEIGHT_RISE_EFFICIENCY] > 2)
                            & (data_frame[COL_WEIGHT_MAX_INDEX] < 2)]

    sorted_frame = data_frame.sort_values(
        by=COL_WEIGHT_RISE_EFFICIENCY, ascending=False).reset_index(drop=True)

    file_name = '../../logs/{date}@RiseTempo.csv'.format(date=LAST_MARKET_DATE)
    # print(fileName)
    with open(file_name, 'w', encoding='utf8') as file:
        sorted_frame.to_csv(file)
    return sorted_frame
コード例 #5
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_RECENT_LIMIT_COUNT] = api.local_limit_count(
                daily, local_scale=10)

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

    data_frame = data_frame[
        # (data_frame[COL_RECENT_LIMIT_COUNT_15] > 1)
        # | ((data_frame[COL_RECENT_LIMIT_COUNT_15] == 1) & (data_frame[COL_RECENT_LIMIT_COUNT_3] > 0))
        (data_frame[COL_RECENT_LIMIT_COUNT] > 0)]

    data_frame = data_frame.sort_values(by=COL_RECENT_LIMIT_COUNT,
                                        ascending=False).reset_index(drop=True)
    # data_frame = data_frame.loc[:, ['ts_code', 'name', 'industry', COL_LASTPRICE, COL_FLOAT_HOLDERS]]

    file_name = '{logs_path}/{date}@Ergodic_Graph.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 = 200
    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
コード例 #6
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

    outputs = []

    data_frame = DataFrame()
    for i, stock_basic in enumerate(
            main_session.query(models.StockBasicPro).all()):
        try:
            if 'ST' in stock_basic.name or stock_basic.symbol.startswith(
                    '688'):
                continue

            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()

            aggressive_rate = get_aggressive_rate(stock_basic.symbol)

            res = parse(daily, aggressive_rate)
            if res:
                daily_basic = main_session.query(models.DailyBasic).filter(
                    models.DailyBasic.ts_code == stock_basic.ts_code).one()
                outputs.append('{name} {symbol} {cir_mv}亿\n{res}'.format(
                    name=stock_basic.name,
                    symbol=stock_basic.ts_code,
                    cir_mv=int(daily_basic.circ_mv),
                    res=res))

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

    file_name = '{logs_path}/{date}@9_continuous_2_limits.txt'.format(
        date=LAST_MARKET_DATE, logs_path=env.logs_path)
    with open(file_name, 'w', encoding='utf8') as file:
        for item in outputs:
            file.write(item)
            file.write('\n\n')