Exemple #1
0
    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
Exemple #3
0
    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()
Exemple #4
0
 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()
Exemple #5
0
    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])
Exemple #7
0
 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()
Exemple #8
0
    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()