def Report(self, start_day, end_day): """回測报告""" self._getAccount().Report(end_day) #return #绘制图形 #end_day = help.MyDate.s_Dec(end_day, 1) bars = stock.CreateFenshiPd(self.code, start_day, end_day) if len(bars) == 0: return bars = bars.resample('1min').mean() bars['positions'] = 0 bars['c'] = bars['p'] bars = bars.dropna() df = self._getAccount().ChengJiao() df_zhijing = self._getAccount().ZhiJing() df_zhijing = df_zhijing[bars.index[0]:] df_changwei = self._getAccount().ChengJiao() cols = ['买卖标志','委托数量'] df_flag = df_changwei[cols[0]].map(lambda x: agl.where(int(x), -1, 1)) df_changwei[cols[1]] *= df_flag changwei = stock.GuiYiHua(df_changwei[cols[1]].cumsum()) for i in range(len(df)): index = df.index[i] bSell = bool(df.iloc[i]['买卖标志']=='1') if index in bars.index: #bars.ix[index]['positions'] = agl.where(bSell, -1, 1) bars.set_value(index, 'positions', agl.where(bSell, -1, 1)) trade_positions = np.array(bars['positions']) ui.TradeResult_Boll(self.code, bars, trade_positions, \ stock.GuiYiHua(df_zhijing['资产']), changwei)
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 _Report(self, policy, start_day, end_day): policy._getAccount().Report(end_day, True) #绘制图形 if hasattr(policy, 'Report'): policy.Report() #end_day = help.MyDate.s_Dec(end_day, 1) #bars = stock.CreateFenshiPd(self.code, start_day, end_day) if self.mode == 0: bars = self.dict_fenshi[self.codes[0]] if len(bars) == 0: return bars = bars.resample('1min').mean() bars['c'] = bars['p'] else: #日线 bars = self.panel_hisdat[self.codes[0]] bars['positions'] = 0 bars = bars.dropna() df = policy._getAccount().ChengJiao() df_zhijing = policy._getAccount().ZhiJing() init_money = df_zhijing.iloc[0]['资产'] df_zhijing = df_zhijing[bars.index[0]:] df_changwei = policy._getAccount().ChengJiao() cols = ['买卖标志', '委托数量'] df_flag = df_changwei[cols[0]].map(lambda x: x == '证券卖出' and -1 or 1) df_changwei[cols[1]] *= df_flag changwei = df_changwei[cols[1]].cumsum() if self.mode == 1: df.index = df.index.map(lambda x: agl.datetime_to_date(x)) bars.is_copy = False for i in range(len(df)): index = df.index[i] bSell = bool(df.iloc[i]['买卖标志'] == '证券卖出') if index in bars.index: bars.at[index, 'positions'] = agl.where(bSell, -1, 1) #同步资金到bar df_zhijing.is_copy = False df_zhijing['changwei'] = changwei if self.mode == 1: df_zhijing.index = df_zhijing.index.map( lambda x: agl.datetime_to_date(x)) bars = bars.join(df_zhijing) bars = bars.fillna(method='pad') #同步价格的动态总资产 bars['资产'] = bars['可用'] + bars['changwei'] * bars['c'] zhican = (bars['资产'] - init_money) / init_money * 100 zhican = zhican.fillna(0) title = '%s %s' % (self.codes[0], stock.GetCodeName( self.codes[0]).decode('utf8')) ui.TradeResult_Boll(agl.where(policy.pl, policy.pl, pl), bars, \ stock.GuiYiHua(zhican),\ stock.GuiYiHua(bars['changwei']), title=title) if policy.pl is not None: if policy.pl.explicit: #有成交才发布 if len(df) > 0: policy.pl.publish()
def Report(self): """报告技术指标""" if not hasattr(self, 'tech'): return closes, four, adx = self.tech assert (len(closes) == len(four)) cur_pl = self.pl #adx = stock.GuiYiHua(adx) df = pd.DataFrame(adx, columns=['adx']) #df['adx'] = adx df = stock.GuiYiHua(df) df['four'] = four * 10 df['close'] = stock.GuiYiHua(closes - np.min(closes)) #df.index = pd.DatetimeIndex(df.index) df.plot() cur_pl.show() cur_pl.close()
def Report(self): """报告技术指标""" closes, four, boll_up, boll_mid, boll_low ,boll_w, adx = self.tech assert(len(closes) == len(four)) df = pd.DataFrame(closes) df['boll_w'] = boll_w df = stock.GuiYiHua(df) df['four'] = four df[df.columns[0]] = (df[df.columns[0]]-1)*2 df.plot() self.pl.show()
def recog_boll(pl, report_list): import stock_pinyin as jx codes = [jx.HCGD, jx.HYGY] codes = stock.get_codes(stock.myenum.randn, 2) #import tushare_handle as th up1 = get_upper(codes[0]) up2 = get_upper(codes[1]) #print(len(up1), len(up2)) n = 30 a = up1[-n:] b = up2[-n:] a = stock.GuiYiHua(a - np.min(a)) b = stock.GuiYiHua(b - np.min(b)) v = pearson(a, b) df = pd.DataFrame(a) df['2'] = b df.plot() pl.show() fimg = pl.get_CurImgFname() report_list.append([v, fimg])
def Report(self): """报告技术指标""" if not hasattr(self, 'tech'): return closes, four, boll_up, boll_mid, boll_low ,boll_w, adx = self.tech assert(len(closes) == len(four)) cur_pl = agl.where(self.pl, self.pl, pl) df = pd.DataFrame(closes) df['boll_w'] = boll_w df = stock.GuiYiHua(df) df['four'] = four #df[df.columns[0]] = (df[df.columns[0]]-1)*2 #index转日期 df.index = pd.DatetimeIndex(df.index) df.plot() cur_pl.show() cur_pl.close()
def Report(self): """报告技术指标""" if not hasattr(self, 'tech'): return closes, four, boll_up, boll_mid, boll_low ,boll_w, adx = self.tech assert(len(closes) == len(four)) cur_pl = agl.where(self.pl, self.pl, pl) if hasattr(self, 'jbm'): syl = self.jbm df = pd.DataFrame(syl) df.columns = ['市盈率'] df.plot() cur_pl.show() cur_pl.close() df = pd.DataFrame(closes) df['boll_w'] = boll_w df = stock.GuiYiHua(df) df['four'] = four #df[df.columns[0]] = (df[df.columns[0]]-1)*2 df.plot() cur_pl.show() cur_pl.close()