def plusPrepare(obj, start="2017/12/29"):
end = obj.DB["Amt"].index[-1]
obj.LR = getLR(obj, start, end)
obj.LR_MACD = (obj.LR.rolling(20).mean() - obj.LR.rolling(120).mean()).diff(10).rolling(10).mean().shift(1)
obj.LR_MACD_D = obj.LR_MACD.diff(1)
class strategyClasses(object):
u"""以obj即数据库变量、addr:保存策略结果的位置(默认为strategyClasses)、
start:默认2017/12/29、
dictStrategy:策略字典,key为名称,value为函数名称,或者一个modify变量"""
def __init__(self, obj=None, start="2017/12/29", dictStrategy=None):
self.ret = {}
self.navs = None
if obj is None:
obj = cb.cb_data()
self.obj = obj
self.start = start
self.end = self.obj.DB['Amt'].index[-1]
self.obj.credit = getCredit(self.obj._excludeSpecial())
self.dictStrategy = dictStrategy
def
readFromFile(self, ftype=".xlsx"):
self.ret = {}
for k in self.dictStrategy.keys():
try:
self.ret[k] = pd.read_excel(self.addr + k + ftype, index_col=0)
except IOError:
print(k + " Failed, now run it")
self.ret[k] = cb.frameStrategy(self.obj, self.start, roundMethod=21,
selMethod=self.dictStrategy[k])
def goInit(self):
plusPrepare(self.obj, self.start)
self.ret = {}
for k, v in self.dictStrategy.items():
print(k)
_s = cb.frameStrategy(self.obj, self.start, selMethod=v, roundMethod=21)
_s.to_excel(self.addr + k + ".xlsx")
self.ret[k] = _s
def display(self, plot=False):
if self.ret == {}:
strategyClasses.goInit(self)
df = pd.concat(self
.ret, axis=1)
self.navs = df.loc[:, (slice(None), 'NAV')]
if plot:
return self.navs.plot()
else:
return self.navs
def evaluate(self):
if self.navs is None:
strategyClasses.display(self)
return pd.concat(strategyEvaluation(self.navs), axis=1)