def getData2Show(codes, date, lag=128):
#用来取正股走势数据的辅助函数
if not w.isconnected(): w.start()
_, dfUnderlying = w.wss(','.join(codes), 'underlyingcode', usedf=True)
start_date = w.tdaysoffset(-lag, date, "").Data[0][0].strftime('%Y/%m/%d')
uniStock = set(dfUnderlying.UNDERLYINGCODE)
_, dfRaw = w.wsd(",".join(uniStock),
"close",
start_date, date, "Priceadj=True", usedf=True)
retDict = {}
for code in codes:
stock = dfUnderlying.loc[code, "underlyingcode"]
retDict[code] = dfRaw[stock]
return retDict
def close2premRank5(obj, codes, date, tempCodes, dfAssetBook):
#简单双低
srs = obj.DB['Close'].loc[date, tempCodes].rank(ascending=True)
srs += obj.DB['ConvPrem'].loc[date, tempCodes].rank(ascending=True)
t = srs < srs.quantile(0.5)
return t[t].index
def dwtSecUp2(obj, codes, date, tempCodes, dfAssetBook):
# 假设我们将tplUp中的几种模式定为上行趋势
date = _offset(obj, date)
t = close2premRank5(obj, codes, date, tempCodes, dfAssetBook)
rawData = getData(t, date)
tplUp = ([1,2,3,4], [1,2,4,3], [1,3
,2,4], [1,4,2,3], [2,1,3,4], [3,1,2,4])
ret = []
for code, df in rawData.iteritems():
dwt, _ = getDwt(df.CLOSE, rec=5)
if dwt[5].rank().astype(int).tolist() in tplUp: ret.append(code)
return ret
dfTest = frameStrategy(obj, start="2017/12/29", selMethod=dwtSecUp2, roundMethod=21)