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'全部数据加载完成')
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
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
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
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
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
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