创建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,如需转载请自行联系原作者


目录
相关文章
|
存储 JSON 前端开发
前端下载文件以及上传图片预览,顺便了解arrayBuffer和blob
前端下载文件以及上传图片预览,顺便了解arrayBuffer和blob
1440 0
|
6月前
|
网络架构
配置BGP的MED属性控制路由选择
本文介绍了通过配置BGP的MED属性实现流量路径控制的需求与方法。网络中,AR1位于AS65008,AR2和AR3位于AS65009,AR1与AR2、AR3运行EBGP,AR2与AR3间运行IBGP。目标是使从AS65008到AS65009的流量优先通过AR3。配置思路为:通过增大AR2发送给AR1的MED值,使AR1选择AR3作为流量入口。操作步骤包括IP地址配置、BGP协议配置及MED属性设置,并通过路由表验证配置效果。最终实现流量按需优化路径选择。
配置BGP的MED属性控制路由选择
|
存储 机器学习/深度学习 应用服务中间件
阿里云倚天云服务器实例:计算型c8y、通用型g8y、内存型r8y实例介绍
阿里云倚天云服务器是基于阿里云自研的倚天710 ARM架构CPU打造的高性能计算产品系列,它依托先进的第四代神龙架构,旨在为用户提供稳定可预期的超高效能体验。倚天云服务器在存储、网络性能及计算稳定性方面实现了显著提升,主要得益于其芯片级的快速路径加速技术。本文将深度解析阿里云倚天云服务器的计算型c8y、通用型g8y、内存型r8y实例,探讨其优势及适用场景,以供选择参考。
|
搜索推荐 算法 UED
必应SEO优化步骤:提升网站在必应搜索引擎中的排名
本文深入剖析了必应(Bing)搜索引擎的优化策略,为网站管理员提供了一套完整的必应SEO优化步骤。文章内容兼具深度与独特见解,旨在帮助读者在激烈的网络竞争中脱颖而出。助力您的网站迈向更高的排名。
1026 3
必应SEO优化步骤:提升网站在必应搜索引擎中的排名
|
SQL 关系型数据库 MySQL
(七)MySQL事务篇:ACID原则、事务隔离级别及事务机制原理剖析
众所周知,MySQL数据库的核心功能就是存储数据,通常是整个业务系统中最重要的一层,可谓是整个系统的“大本营”,因此只要MySQL存在些许隐患问题,对于整个系统而言都是致命的。
536 2
|
机器学习/深度学习 人工智能 自然语言处理
|
数据可视化 Linux 程序员
仅需几步就可快速实现SFTP的免密传输
在程序员的日常工作中,通过FTP/SFTP等工具在服务器之间进行文件的交互是一个基操技能,无论是编码开发过程中的跨系统传输文件,还是生产部署过程中的数据索取,熟练掌握这一技能,可以大大的提高开发效率。当然,现在也有很多终端模拟器提供了可视化的文件传输功能,比如XFTP、WINSCP、MobaXterm、Finalshell等等。
325 2
|
SQL XML 弹性计算
【ECS生长万物之开源】搭建PostgreSQL主从架构
PostgreSQL被业界誉为最先进的开源数据库,支持NoSQL数据类型(JSON/XML/hstore)。本文档介绍在CentOS 7操作系统的ECS实例上搭建PostgreSQL主从架构的操作步骤。
|
分布式计算 Hadoop 开发工具
docker 部署 hadoop集群
docker 部署 hadoop集群
|
人工智能 物联网 Linux
使用aidlux进行模型迁移、部署、推理
使用aidlux进行模型迁移、部署、推理