예제 #1
0
    def Travl(self, start_day='', end_day=''):
        """根据日期来遍历全部股票"""
        if 0: start_day = end_day = datetime
        if start_day == '':
            start_day = help.StrToDate("2011-10-11")
        if end_day == '':
            #今天
            end_day = datetime.date.today()
            
        gupiaos = ISimulator.getGupiaos(self.flag)
	
	account = stock.Account()
            
	#为了减少数据库操作, 还是先取出数据再判断日期
	guiders = []
        start_day = help.MyDate(start_day)
	for gupiao in gupiaos:
	    if not self.p.filter(gupiao):
		guider = stock.Guider(gupiao, start_day.ToStr())
		help.myprint("时间策略遍历", guider.code)
		guiders.append(guider)

	#start_day.Add(60)
        while start_day.Next() < end_day:
            day = start_day.ToStr()
            help.myprint(day)

	    for guider in guiders:
		#看当前日期是否存在
		if guider.DateToIndex(start_day.d) == -1:
		    continue
		
		new_guider = copy.deepcopy(guider)
		if 0: new_guider = stock.Guider
		new_guider.resize(start_day.d)
		
		fenshi = stock.Fenshi(guider.code, day)
		fenshi.mean()
		for order in fenshi.orders:
		    if 0: order = stock.Order
		    new_fenshi = copy.deepcopy(fenshi)
		    new_fenshi.resize(order.date)
		    #help.myprint(order.date, order.price)
		    self.p.OnTick(new_guider, new_fenshi, account)

	    
        account.myprint()
	return account
예제 #2
0
    def Process(self, code, start_day='', end_day=''):
        """"""
        help.myprint(self.p.__class__, code)
        guider = stock.Guider(code, start_day, end_day)
        account = stock.Account()

        for i in range(0, guider.getSize()):
            if 0: hisdat = stock.Hisdat
            hisdat = guider.getData(i)
            #new_guider = stock.Guider(code, end_day=str(hisdat.date))
            new_guider = copy.deepcopy(guider)
            if 0: new_guider = stock.Guider
            new_guider.hisdats = new_guider.hisdats[:i]
            #help.myprint("当前天为 ", str(hisdat.date))
            self.p.OnTick(new_guider, None, account)

        account.myprint()
        return account
예제 #3
0
def testShowTradeResult():
    import backtest

    code = '600100'
    bars = stock.Guider(code).ToDataFrame()
    bars = bars.ix['2014':]
    print(bars.head())
    #两均线穿越
    signals = pd.DataFrame(index=bars.index)
    signals['signal'] = 0.0
    signals['short_ma'] = stock.MA(closes=np.array(bars['c']), day=5)
    signals['long_ma'] = stock.MA(closes=np.array(bars['c']), day=20)
    signals['0'] = signals['short_ma']
    signals['1'] = signals['long_ma']
    signals['signal'] = np.where(signals['short_ma'] > signals['long_ma'], 1.0, 0.0)
    signals['positions'] = signals['signal'].diff()  
    print(signals)
    portfolio = backtest.MarketOnClosePortfolio(code, bars, signals, initial_capital=100000.0)
    returns = portfolio.backtest_portfolio()
    ShowTradeResult(pl, bars, signals, returns, 2)
예제 #4
0
 def getDataSource(code):
     import stock
     return stock.Guider(code).ToDataFrame()
예제 #5
0
 def Process(self, code, start_day='', end_day=''):
     guider = stock.Guider(code, start_day, end_day)
     self.p.OnTick(guider, None, None)
     return None
예제 #6
0
def ShowCode(pl, code):
    closes = stock.Guider(code).getCloses()
    DrawTs(pl, closes)