def recog_history_boll(pl, x, p, code): """在历史数据中找到相似的曲线 x : np.ndarray 基准曲线 p : float pearson相似度 """ df = stock.getFiveHisdatDf(code, method='local') upper, middle, lower = stock.TDX_BOLL(df['c'].values) df['upper'] = upper df = df[-1000:] #upper = upper[np.isnan(upper) == False] upper = df['upper'].values n = 30 report_list = [] x = stock.GuiYiHua(x - np.min(x)) for i in range(0, len(upper) - 30, 2): y = upper[i:i + n] assert (len(y) == 30) y = stock.GuiYiHua(y - np.min(y)) pearson_v = pearson(x, y) if pearson_v > p: df2 = pd.DataFrame(x) df2['2'] = y df2.plot() pl.show() pl.close() fimg = pl.get_CurImgFname() report_list.append([code, pearson_v, df.index[i], fimg]) return report_list
def run(): fpath = env.get_root_path() for code in stock.get_codes(): fname = '/datasources/%s.csv' % (code) fname = fpath + fname df = stock.getFiveHisdatDf(code) df.to_csv(fname)
def watch_four(): """观察当前数据源的four情况""" from autoxd.pinyin import stock_pinyin3 as jx code = jx.ZXJT df = stock.getFiveHisdatDf(code, method='tdx') #print(df) four = stock.FOUR(df['c'].values) print(four) from autoxd import ui from autoxd.pypublish import publish pl = publish.Publish() ui.DrawTs(pl, four)
def get_boll_up_base(): """获取一个用来作为标准的曲线 return : np.ndarray """ code = jx.HCGD华灿光电 t = '2018-12-3 10:30:00' t = '2018-11-30 10:00:00' key = myredis.gen_keyname(__file__, get_boll_up_base) df = myredis.createRedisVal( key, lambda: stock.getFiveHisdatDf(code, method='tdx')).get() upper, middle, lower = stock.TDX_BOLL(df['c'].values) df['upper'] = upper df = df[t:] df = df[df.index[20]:] df = df[:df.index[29]] #ui.DrawTs(pl, df['upper'].values) #pl.show() return df['upper'].values
def example2(): """测试排版输出, 让单元数据在一行内""" from autoxd import stock import pandas as pd print(example2.__doc__) pl = Publish(explicit=True) codes = stock.get_codes(flag=stock.myenum.randn, n=6) result = [] for code in codes: df_five = stock.getFiveHisdatDf(code, method='tdx') df_five.plot() pl.show() pl.close() img_name = pl.get_CurImgFname() result.append([code, img_name, img_name]) df = pd.DataFrame(result) pl.reset(df_to_html_table(df, df_img_col_indexs=[-2, -1])) pl.publish()
def _test_horizontal(self): code = jx.THS df = stock.getFiveHisdatDf(code) df = df['2017-5-1':] df = df['2017-11-1':] rects = [] bHit = False for i in range(100, len(df), 5): cur_df = df[:i] #bFind, (h,l,left,right) = horizontal(cur_df) bFind, (h, l, left, right) = Combo(cur_df) if bFind: bHit = True print(cur_df.index[-1], bFind, (h, l, left, right)) left = i + left right = i rects.append((h, l, left, right)) if bHit: ui.drawKlineUseDf(pl, df, rects)
def load_data(code): df = stock.getFiveHisdatDf(code, method='tdx') upper, middle, lower = stock.TDX_BOLL(df['c'].values) df['upper'] = upper df['middle'] = middle df['lower'] = lower highs = pd.Series(df[colname.high]).values lows = pd.Series(df[colname.low]).values closes = pd.Series(df[colname.close]).values adx, pdi, mdi = stock.TDX_ADX2(highs, lows, closes) df[colname.adx] = adx df[colname.pdi] = pdi df[colname.mdi] = mdi rsi = stock.RSI(closes) df[colname.rsi] = rsi return df
def test_AsynDrawKline(self): from autoxd import stock code = jx.ZCKJ.b start_day = '2017-8-25' #df = stock.getHisdatDataFrameFromRedis(code, start_day) df = stock.getFiveHisdatDf(code, start_day=start_day, method='tdx') import account account = account.LocalAcount(account.BackTesting()) #随机找三个交易点 indexs = agl.GenRandomArray(len(df), 3) trade_bSell = [0,1,0] df_trades = df[df.index.map(lambda x: x in df.index[indexs])] df_trades = df_trades.copy() df_trades[AsynDrawKline.enum.trade_bSell] = trade_bSell plt.ion() for i in range(10): AsynDrawKline.drawKline(df[i*10:], df_trades) plt.ioff()
def _test_drawKline2(self): code = jx.CYJM start_day = '2017-8-25' df = stock.getFiveHisdatDf(code, start_day=start_day) drawKlineUseDf(pl, df)
def _test_DrawZZ(self): code = '300033' df_five_hisdat = stock.getFiveHisdatDf(code) closes = df_five_hisdat['c'][-500:] zz = stock.ZigZag(closes,percent=1) DrawDvsAndZZ(pl, closes, zz)
def loadData(self, code): """ return: df five hisdat""" data_path = self._getPath() return stock.getFiveHisdatDf(code, method='path', path=data_path)