コード例 #1
0
    def query_from_mysql(self, code=None):
        df = None
        if (code == None):
            df = pm.query(DbCreator.share_base)
        else:
            df = pm.query(DbCreator.share_data_day,
                          where='code=\'' + code + '\'')

        df = df[df[Config.timeToMarket] != '0000-00-00']
        df = df.sort_values(by=[Config.code])
        df.index = np.arange(0, df.shape[0], 1)

        return df
コード例 #2
0
ファイル: TotalMarket.py プロジェクト: zhoupj/flwm
    def _process(self, df, start):
        code = df.loc[0, Config.code]
        basic_df = pm.query(DbCreator.share_base, where=' code="%s"' % (code))
        print(basic_df.loc[0, Config.totals])
        df[Config.totals] = df[Config.close] * basic_df.loc[0, Config.totals]

        return df[[Config.id, Config.totals]]
コード例 #3
0
ファイル: Base.py プロジェクト: zhoupj/flwm
 def query_test_data(self, code, tb_name=DbCreator.share_data_day):
     import numpy as np
     df = pm.query(tb_name, where='  code="%s"' % (code))
     df.sort_values(by=[Config.db_date], inplace=True)  # 按列进行排序
     df.index = np.arange(0, df.shape[0], 1)  # 保证索引排序
     df[Config.db_date] = df[Config.db_date].astype(np.str)  # 日期更改
     return df
コード例 #4
0
ファイル: Kmanager.py プロジェクト: zhoupj/flwm
    def kpi_month(code):

        import numpy as np

        df = pm.query(DbCreator.share_data_month,
                      where='code=\'' + code +
                      '\' and trade_date>=\'2015-01\'')

        logger.info('start to month reverse kpi:' + code + ' size:' +
                    str(df.shape[0]))

        if (df.shape[0] == 0):
            logger.info('no data to kpi:')
            return

        df.sort_values(by=[Config.db_date], inplace=True)  # 按列进行排序
        df.index = np.arange(0, df.shape[0], 1)  # 保证索引排序
        df[Config.db_date] = df[Config.db_date].astype(np.str)  # 日期更改

        mk = MonthReverse()
        succ = mk.run(code, df, start=0, to_mysql=True)

        logger.info('end to month kpi:' + code)

        return succ
コード例 #5
0
ファイル: Kmanager.py プロジェクト: zhoupj/flwm
    def kpi_s(code, start_date, pm, dict):

        df = pm.query(DbCreator.share_data_day,
                      where='code=\'' + code +
                      '\' and trade_date>=\'2011-01-01\'')

        logger.info('start to kpi:' + code + ' size:' + str(df.shape[0]))

        if (df.shape[0] == 0):
            logger.info('no data to kpi:')
            return

        #流水线
        succ = Pipeline.execute(PreProcess(), [
            TotalMarket(),
            CreateRecord(),
            DeviationsRatio(),
            FluctionRatio(),
            IncrementRatio(),
            Ma(),
            TurnRatio(),
            PeRank()
        ], code, df, start_date)

        logger.info('end to kpi:' + code)
        dict[code] = succ
コード例 #6
0
ファイル: Kmanager.py プロジェクト: zhoupj/flwm
 def kpi_m(start_date, pm):
     # 计算跨多只s的指标
     mdf = pm.query(DbCreator.share_data_day,
                    where='trade_date=\'' + start_date + '\'')
     mdf = mdf[[
         Config.id, Config.incOfOneYear, Config.incOfHalfYear,
         Config.incOf50d
     ]]
     mdf = mdf.dropna()
     rps = Rps()
     return rps.run(mdf, start_date, True)
コード例 #7
0
    def query_month_data_and_count_reverse(self, code, dt, close):

        dt = DateUtil.getLastMonthForShort(dt[0:7])

        mdf = self.month_data.get('' + code + '_' + dt)
        if (mdf is None):
            mdf = pm.query(DbCreator.share_data_month,
                           where=' code="%s" and trade_date="%s"' % (code, dt))
            self.month_data[code + '_' + dt] = mdf

        if (not mdf.empty):
            ha = mdf.loc[0, 'ha']
            hb = mdf.loc[0, 'hb']
            if (ha != 0 or hb != 0):
                #print(ha,hb,ha*12+hb,close)
                if (FactorUtil.is_reverse(ha, hb, close) == 1):
                    return 1

            la = mdf.loc[0, 'la']
            lb = mdf.loc[0, 'lb']
            if (la != 0 or lb != 0):
                if (FactorUtil.is_reverse(ha, hb, close, direct='l') == 1):
                    return 2
        return 0
コード例 #8
0
ファイル: TFinBase.py プロジェクト: zhoupj/flwm
 def __query(self, dt, type):
     df = pm.query(DbCreator.share_data_finance,
                   where=' fin_date=\'' + dt + '\' and fin_type=\'' +
                   str(type) + '\' order by fin_date')
     return df
コード例 #9
0
        for i in range(start, df.shape[0], 1):
            df.loc[i, Config.incOf50d] = self.__add_increment__(i, INC_50, df)
            df.loc[i, Config.incOfHalfYear] = self.__add_increment__(
                i, INC_120, df)
            df.loc[i, Config.incOfOneYear] = self.__add_increment__(
                i, INC_250, df)
            df.loc[i, Config.incOf2d] = self.__add_increment__(i, 2, df)

        return df[[
            Config.id, Config.incOfOneYear, Config.incOfHalfYear,
            Config.incOf50d, Config.incOf2d
        ]]

    def __add_increment__(self, i, freq, df):
        freq = freq - 1
        if (i >= freq):
            return (
                (df.loc[i, Config.close] - df.loc[i - freq, Config.close]) /
                df.loc[i - freq, Config.close]) * 100
        else:
            return self._default_value


#main
if (__name__ == '__main__'):
    df = pm.query(DbCreator.share_data_day,
                  where='code="000001" and trade_date>="2018-10-01"')
    ir = IncrementRatio()
    ir.run('000001', df, to_mysql=False)
    print(df[[Config.db_date, Config.incOf2d]])
コード例 #10
0
ファイル: TotalMarket.py プロジェクト: zhoupj/flwm
from k.algorithm.Base import Base
from k.Config import Config
import numpy as np
import pandas as pd
from k.util.PandasToMysql import pm
from k.util.DbCreator import DbCreator


class TotalMarket(Base):
    def _process(self, df, start):
        code = df.loc[0, Config.code]
        basic_df = pm.query(DbCreator.share_base, where=' code="%s"' % (code))
        print(basic_df.loc[0, Config.totals])
        df[Config.totals] = df[Config.close] * basic_df.loc[0, Config.totals]

        return df[[Config.id, Config.totals]]


#main
if (__name__ == '__main__'):
    df = pm.query(DbCreator.share_data_day,
                  where='code=\'000860\' and trade_date>=\'2018-10-10\'')
    print(df[[Config.id, Config.db_date, Config.totals, Config.close]])
    tm = TotalMarket()
    tm.run('000860', df)
    print(df[[Config.id, Config.totals, Config.close]])