创建widget
1. 定义方法
def predictAll(tickers, startdt='36', enddt = 'today', predictdays = 1): if enddt == 'today': enddt = datetime.date.today().strftime('%Y-%m-%d') if len(startdt) < 4: startdt = (datetime.date.today() - datetime.timedelta(int(startdt) * 365 / 12)).isoformat() result = [] for ticker in tickers: try: df = sdk.getHist([ticker], startdt, enddt) #.query("isopen==1") # print df except: msg = 'ticker ' + ticker # print msg else: dfochl = df[['open','close','high','low']].as_matrix() x = dfochl[:-predictdays] dfh = df[['high']].as_matrix() yh = dfh[predictdays :] dfl = df[['low']].as_matrix() yl = dfl[predictdays :] dfo = df[['open']].as_matrix() yo = dfo[predictdays :] dfc = df[['close']].as_matrix() yc = dfc[predictdays :] x2 = dfochl[-predictdays:] mh = LinearRegression() mh.fit(x, yh) yh2 = mh.predict(x2) ml = LinearRegression() ml.fit(x, yl) yl2 = ml.predict(x2) mo = LinearRegression() mo.fit(x, yo) yo2 = mo.predict(x2) mc = LinearRegression() mc.fit(x, yc) yc2 = mc.predict(x2) name = df['sec_short_name'][0] i = 0 while i < predictdays: ret = { 'Day': 'Day ' + str(i + 1), 'Ticker': ticker, 'Name': name, 'High': str(round(yh2[i],2)), 'Low': str(round(yl2[i],2)), 'Open': str(round(yo2[i],2)), 'Close': str(round(yc2[i],2)) } result.append(ret) i += 1 return result
2. 定义接口
# GET /sensitop/api/v1/analyzers/regression import RegessionAnalyzer as regession import logging # REQUEST = json.dumps({ # 'path' : {}, # 'args' : {'tickers':['000078,600048'], 'startdt':['2016-01-01'], 'enddt':['2016-12-30'], # 'predictdays':['2']} # }) def __0014__(request): logging.warning(request) tickers = getFirstParam(request, "tickers").strip().split(',') startdt = getFirstParam(request, "startdt") enddt = getFirstParam(request, "enddt") enddt = __notFuture__(enddt) predictdays = getFirstParam(request, "predictdays") # print tickers return json.dumps(regession.predictAll(tickers, startdt, enddt, int(predictdays))) print __0014__(json.loads(REQUEST))
3. 定义widget接口
# GET /sensitop/widgets/predict uid = __getUId__() template = open(__templateRootPath__ + "predict.html") try: html = template.read().format(endpoint = "waima.imwork.net:16301", tickers = "__tickers__%s" %uid, startdt = '__startdt__%s' %uid, enddt = '__enddt__%s' %uid, predictdays = '__predictdays__%s' %uid, btnSubmit = "__btnSubmit__%s" %uid, id = "__id__%s" %uid, btnHideOptions = "__btnHideOptions__%s" %uid, pnlOptions = "__pnlOptions__%s" %uid, dt_basic = "__dt_basic__%s" %uid, results = "__results__%s" %uid ) print html finally: template.close()
4. 定义widget页面