创建widget

简介:

1. 定义方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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. 定义接口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 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接口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 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页面

1
2
<!-- widget-start -->
<!--  new  widget -->
 

行情走势预测

  使用说明

行情走势预测,输入股票代码,系统会根据回归算法对该股票走势进行预测。

 1天 2天 3天 
结果说明:这里显示未来1-3天的各种预测值:开盘价、收盘价、最高价、最低价。
1
2
<!-- end widget -->
<!-- widget-end -->

本文转自疯吻IT博客园博客,原文链接:http://www.cnblogs.com/fengwenit/p/6204433.html,如需转载请自行联系原作者


目录
相关文章
|
5月前
|
XML Java Android开发
Android RecyclerView用代码动态设置item的selector
Android RecyclerView用代码动态设置item的selector
43 0
|
容器
使用 AspectRatio Widget
使用 AspectRatio Widget
103 0
使用 AspectRatio Widget
|
XML Java Android开发
【Android】5.0RecyclerView列表组件
RecyclerView是Android推出的列表组件,例如QQ的消息列表,备忘录的条目列表等等都是可以使用RecyclerView来实现
291 0
|
Android开发
Android 动态添加View 并设置id
Android 动态添加View 并设置id
590 0
Android 动态添加View 并设置id
|
XML 开发工具 Android开发
Android 深入了解 Window 、Activity、 View 三者关系(上)
Window、Activity、View都经常用到,但三者关系还是没有系统的理清,今天咱们就开始整理整理这三者的关系: Window:顶级窗口外观和行为策略的 抽象基类 。唯一实现是 PhoneWindow类。 Activity:四大组件之一,它提供一个界面让用户点击和各种滑动操作。 View:代表用户界面组件的基本构建块,UI 组件。
294 0
Android 深入了解 Window 、Activity、 View 三者关系(上)
|
缓存 Dart
Flutter一切皆widget但是不要将所有东西放入一个widget
当我们在widgets目录中,我们可以看到很多小部件,如Padding,Align,SizedBox,等。我们通过组合它们来创建其他小部件,我发现这种方法可扩展、强大且易于理解。 但是当我阅读 一些我在互联网上找到的或由新采用者编写的源代码时,有一件让我震惊的事情:拥有大量build ` 方法的趋势,实例化很多小部件!我发现这很难阅读、理解和维护。
97 0
|
缓存 Android开发
Android 深入了解 Window 、Activity、 View 三者关系(下)
addView 成功有一个标志就是能够接收触屏事件,通过对 setContentView 流程的分析,可以看出添加 View 的操作实质上是 PhoneWindow 在全盘操作,背后负责人是 WMS,反之 Activity 自始至终没什么参与感。但是我们也知道当触屏事件发生之后,Touch 事件首先是被传入到 Activity,然后才被下发到布局中的 ViewGroup 或者 View(Touch事件分发 了解一下)。那么 Touch 事件是如何传递到 Activity 上的呢?
260 0
|
Android开发 容器 数据格式
Android--自定义toolbar(Fragment)
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/chaoyu168/article/details/79260181 public ...
1417 0