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
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
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)
def getDataSource(code): import stock return stock.Guider(code).ToDataFrame()
def Process(self, code, start_day='', end_day=''): guider = stock.Guider(code, start_day, end_day) self.p.OnTick(guider, None, None) return None
def ShowCode(pl, code): closes = stock.Guider(code).getCloses() DrawTs(pl, closes)