Beispiel #1
0
    def loadData(self, dbName):
        """加载数据"""

        for vtSymbol in self.vtSymbolList:
            df = get_stk_hfq(dss, vtSymbol)
            df = df.sort_values(['date'])
            for i, d in df.iterrows():
                #print(d)
                #set_trace()

                bar = VtBarData()
                bar.vtSymbol = vtSymbol
                bar.symbol = vtSymbol
                bar.open = float(d['open'])
                bar.high = float(d['high'])
                bar.low = float(d['low'])
                bar.close = float(d['close'])
                date = d['date'].split('-')
                date = ''.join(date)
                bar.date = date
                bar.time = '00:00:00'
                bar.datetime = datetime.strptime(bar.date + ' ' + bar.time,
                                                 '%Y%m%d %H:%M:%S')
                bar.volume = d['volume']

                barDict = self.dataDict.setdefault(bar.datetime, OrderedDict())
                barDict[bar.vtSymbol] = bar

        self.output(u'全部数据加载完成')
Beispiel #2
0
def signal_k_pattern(dss, codes, _date):
    r = []
    for code in codes:
        df = get_stk_hfq(dss, code, None, _date)
        item_list = k_pattern(df)
        r += [x + code for x in item_list]
    return r
Beispiel #3
0
    def _bc_loadInitBar(self, vtSymbol, initBars):
        """读取Bar数据,"""
        r = []
        #df = get_stk_hfq(self.dss, vtSymbol, begin_date=None, end_date='2019-07-18')
        df = get_stk_hfq(self.dss, vtSymbol, begin_date=None, end_date=None)
        if df is not None:
            df = df.iloc[:initBars]
            df = df.sort_values('date')
            for i, row in df.iterrows():
                d = dict(row)
                #print(d)
                bar = VtBarData()
                bar.vtSymbol = vtSymbol
                bar.symbol = vtSymbol
                bar.open = float(d['open'])
                bar.high = float(d['high'])
                bar.low = float(d['low'])
                bar.close = float(d['close'])
                date = d['date'].split('-')  #去掉字符串中间的'-'
                date = ''.join(date)
                bar.date = date
                bar.time = '00:00:00'
                bar.datetime = datetime.strptime(bar.date + ' ' + bar.time,
                                                 '%Y%m%d %H:%M:%S')
                bar.volume = float(d['volume'])

                r.append(bar)

        return r
Beispiel #4
0
def hit_ma(dss,date):
    r = []

    codes = get_stk_codes(dss)
    for code in codes:
        df = get_stk_hfq(dss,code,'2018-01-08')
        if df is None:
            continue

        df1 = df[df.date==date]
        if df1.empty:
            continue

        df = df[df.date<=date]
        df = df.sort_values(by=['date'])

        if len(df) < 60:  # 新股,数据长度不够
            continue
        df['10d'] = df['close'].rolling(10).mean()
        #df['20d'] = df['close'].rolling(20).mean()
        df['30d'] = df['close'].rolling(30).mean()
        df['60d'] = df['close'].rolling(60).mean()

        df = df.loc[:,['date','close','10d','30d','60d']]
        df = df.sort_values(by=['date'], ascending=False)
        #print(df.head())

        # 10日线高于30日线,30日线高于60日线
        # 长均线已转向上趋势
        if df.iat[0,1] > df.iat[0,2] and df.iat[0,2] > df.iat[0,3] and df.iat[0,3] > df.iat[0,4]:
            if df.iat[0,4] > df.iat[3,4]:
                #if df.iat[5,4] > df.iat[5,3] :
                    r.append(code)

    return r
Beispiel #5
0
def be_bottom(code, day):
    df = get_stk_hfq(get_dss(), code, end_date=day)
    if df is None:
        return False

    if len(df) <= 360:
        return False

    df30 = df.loc[:30]
    df360 = df.loc[:360]
    if df30.low.min() <= df360.low.min():
        return True
    else:
        return False
Beispiel #6
0
def signal_k_pattern(dss, codes, begin_date, end_date):
    r = []
    for code in codes:
        df = get_stk_hfq(dss, code, None, end_date)
        if df is not None:
            dates = list(df['date'])
            #print(dates)
            for date in dates:
                if date >= begin_date:
                    df1 = df[df.date <= date]
                    if k_pattern(df1):
                        expire_date = (datetime.now() +
                                       timedelta(days=3)).strftime('%Y-%m-%d')
                        r.append([date, code, 'up_overlap_up', expire_date])
                else:
                    break
    #print(r)
    return r
Beispiel #7
0
def init_signal_macd(dss, codes):
    df_signal = pd.DataFrame(
        columns=['code', 'date', 'close', 'MACD', 'DIFF', 'DEA'])

    for code in codes:
        df1 = df_signal[df_signal.code == code]
        if len(df1) == 0:
            df1 = get_stk_hfq(dss, code)
            df1 = df1[['date', 'close']]
            df1 = df1.sort_values(by='date')
            #print(df1)
            if len(df1) >= 30:
                df1 = MACD(df1)
                #print(df1)
                df1['code'] = code
                df_signal = df_signal.append(df1, sort=False)
                #print(df_signal)
                #ipdb.set_trace()

    return df_signal