自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 资源 (3)
  • 收藏
  • 关注

原创 微信小程序的学习五

学生掌握目前社会非常热门的技术——微信小程序,专业方向中的应用技术,可为学生毕业就业选择一线项目研发、设计、政务大数据设计与开发等专业方向提供有效的专业学习平台。线上线下的混合学习方法,学生每次上课前需要预习教材内容、练习相关操作、在课堂上做好笔记,课后练习等教学任务要求。线上线下学习需要配置手机或电脑,用于课堂上完成作业、测试等学习任务。通过课程学习,学生掌握混合编程技术中的微信小程序框架分...

2020-02-13 16:32:06 156

原创 微信小程序的学习四

微信小程序是目前混合编程技术中特火的技术,它只需要用户扫一扫或者搜一下就可以使用,不仅符合用户的使用习惯,还释放了用户手机的内存空间,同时给企业提供了宣传自己产品的渠道。因此学习此课程可以被更多用户找到自己通过微信小程序创建的产品中,更多地宣传自己的产品,为我们提供了很多的就业机会。线上线下的混合教学,线上课程要求学生完成网上视频的学习任务,线下教学要求学生完成面对面教学任务。课程采用理论教学与...

2020-02-13 16:30:11 137

原创 微信小程序的学习三

注重于微信小程序开发的Web前端教材,涉及微信小程序页面组件、应用接口API、事件机制、登录、获取用户信息、Node.js搭建服务器、第三方框架的使用等。通过对本课程的学习,能够理解微信小程序的实质,掌握微信小程序开发的基本技能,快速高效的开发微信小程序。...

2020-02-13 16:27:20 134

原创 微信小程序的学习二

通过具体的实践过程,将理论知识嵌入到实践应用中,使学生更深入的理解理论知识的基础性作用,熟练掌握构建实际应用的方法和思维模式。学生学习掌握基本理论、原理和实践方法后,设计多个学习情境。每个情境又结合知识体系和实践技能细化为若干个子学习情境,由浅入深,实用性强。本课程注重培养学生理解和掌握应用程序的基本开发设计技能,具有良好的分析系统和设计、开发实际应用项目的基本能力,为其今后在相关领域开展工作打下...

2020-02-13 16:23:30 192

原创 微信小程序的学习一

学生掌握混合编程技术中的微信小程序框架分析、组件构建UI界面、小程序APP的设计与开发综合案例应用技术等内容。课程采用线上线下的实验教学为主的混合教学模式,通过理论讲授、案例教学、课堂练习、课程大作业、线上测试等教学手段,加强教学的实践性环节,突出课程应用性。培养学生如何利用现代信息技术开发设计平台,加工处理、展示再现设计与制作创新能力。...

2020-02-13 16:21:54 130

原创 学习笔记:数据分析一

大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。大数据是时下较为热门的一个话题,本人最近一两年一直参与一款BI(商业智能)产品的前端开发工作,准备写一个系列的文章来阐述产品的需求场景以及与前端有关的技术实现方案,也算是对开发过程所做的一个总结。首先要谈...

2019-09-06 16:23:37 123

原创 学习笔记一

1.1  datafeed在一开始我们就讨论过datafeed,也就是cerebro的本源,数据。我们看一下上次我们的策略是怎么来的。dataframe = pd.read_csv(‘dfqc.csv’, index_col=0, parse_dates=True)    dataframe[‘openinterest’] = 0  ...

2019-09-06 16:17:32 634

原创 学习笔记二

SSA就是奇异谱分析。奇异谱分析是近年来兴起的一种研究非线性时间序列数据的强大的方法。它根据所观测到的时间序列构造出轨迹矩阵,并对轨迹矩阵进行分解、重构,从而提取出代表原时间序列不同成分的信号,如长期趋势信号、周期信号、噪声信号等,从而对时间序列的结构进行分析,并可进一步预测。说的通俗点,我们平时用均线,但是有一个问题,均线虽然算法本质上有平滑噪音的含义,但是有时候,也把重要的信息给平滑掉了。...

2019-09-06 16:15:37 369

原创 第一章学习笔记

第1章 SSA实践1.刹车停滞2.刹车困境3.对不可度量的东西进行度量4.测试前和测试后5.引擎发动——多亏有SSA

2019-09-06 15:37:22 151

DATA3.docx

大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。大数据是时下较为热门的一个话题,本人最近一两年一直参与一款BI(商业智能)产品的前端开发工作,准备写一个系列的文章来阐述产品的需求场景以及与前端有关的技术实现方案,也算是对开发过程所做的一个总结。 首先要谈的就是需求,所有的产品策划方案、技术实现细节,最终都是为了满足需求,抛开需求,一切的夸夸其谈都只是纸上谈兵。那么一款BI(商业智能)有哪些需求,它是如何服务业务方产品更好的成长的呢。 假设我是业务方淘宝网,在web、iPhone、Android三个端都有相应的产品。 需求场景一:日活用户量UV 我想看最近一周,我产品的日活用户量的变化趋势;我想看我的用户在各个国家、省份、城市的分布情况;我想看用户在web、iPhone、Android三个端的分布情况;如果发现某个城市的UV很高的话,就可以在选择在这个城市做线下活动推广等等; 为此,我们推出了事件分析功能

2019-09-06

DATA2.docx

SSA就是奇异谱分析。 奇异谱分析是近年来兴起的一种研究非线性时间序列数据的强大的方法。它根据所观测到的时间序列构造出轨迹矩阵,并对轨迹矩阵进行分解、重构,从而提取出代表原时间序列不同成分的信号,如长期趋势信号、周期信号、噪声信号等,从而对时间序列的结构进行分析,并可进一步预测。 说的通俗点,我们平时用均线,但是有一个问题,均线虽然算法本质上有平滑噪音的含义,但是有时候,也把重要的信息给平滑掉了。所以,我们是不是除了平滑这样的方法之外,要开拓新的方法来分离噪音和有用信息呢。 图像的压缩给我们一个很重要的启示,就是谱分解,如果不知道什么是谱分解的话,只要知道,这是一种先分解,然后获取重要信息的一种方法即可。 奇异谱分解的基本思想很简单,分成如下几个步骤: 2.1将时间序列转化为轨迹矩阵 假设有一个时间序列,当然,对于我们而言,就是股价:Y(T)=(y(1),⋯,y(T)) X=(y1,y2,y3,⋯ym; y2,y3,y4,⋯ym+1; .................................. .................................. yn,yn+1,yn+2,⋯,yT) 就变成了这样一个n*m的矩阵。 其中,m为选取的窗口长度,可以当做MA中的窗口长度一样理解。n=T-m+1。 2.2 SVD分解与矩阵重构 计算X.T*X并对其进行奇异值分解(SVD),从而得到其m个特征值 λ1≥λ2≥⋯≥λm≥0 然后按照从大到小的原则进行矩阵重构。笔者建议大家看一下SVD分解的相关内容,可以更好的理解这一部分。 假设重构后的矩阵为 X=(x1,1 x1,2 x1,3 ⋯ x1,m; x2,1 x2,2 x2,3 ⋯ x2,m+1 .......................... .......................... xn,1 xn,2 xn,3 ⋯ xn,n+m−1) 2.3序列重构 可是我们要的是像MA一样的线呀,现在这个显然不是,所以我们要再把矩阵变成时间序列。方法还是有很多的,比如最常用的有对角相加: y1=x1,1 y2=(x1,2 + x2,1)/2 y3=(x1,3 + x2,2 + x3,1)/3 ...... 2.4 接下来,我们就用代码实现上面的这些步骤。 def get_window_matrix(self, input_array, t, m): # 将时间序列变成矩阵 temp = [] n = t - m + 1 for i in range(n): temp.append(input_array[i:i + m]) window_matrix = np.array(temp) return window_matrix def svd_reduce(self, window_matrix): # svd分解 u, s, v = np.linalg.svd(window_matrix) m1, n1 = u.shape m2, n2 = v.shape index = s.argmax() # get the biggest index u1 = u[:, index] v1 = v[index] u1 = u1.reshape((m1, 1)) v1 = v1.reshape((1, n2)) value = s.max() new_matrix = value * (np.dot(u1, v1)) return new_matrix def recreate_array(self, new_matrix, t, m): # 时间序列重构 ret = [] n = t - m + 1 for p in range(1, t + 1): if p < m: alpha = p elif p > t - m + 1: alpha = t - p + 1 else: alpha = m sigma = 0 for j in range(1, m + 1): i = p - j + 1 if i > 0 and i < n + 1: sigma += new_matrix[i - 1][j - 1] ret.append(sigma / alpha) return ret def SSA(self, input_array, t, m): window_matrix = self.get_window_matrix(input_array, t, m) new_matrix = self.svd_reduce(window_matrix) new_array = self.recreate_array(new_matrix, t, m) return new_array 这里,我们调用SSA函数就可以获得重构后的时间序列。 那么按照逻辑,重构后的时间序列我们选取最后一个,就是我们要的当天的SSA了,然后就可以像趋势线一样使用。

2019-09-06

DATA1.docx

1.1 datafeed 在一开始我们就讨论过datafeed,也就是cerebro的本源,数据。我们看一下上次我们的策略是怎么来的。 dataframe = pd.read_csv('dfqc.csv', index_col=0, parse_dates=True) dataframe['openinterest'] = 0 data = bt.feeds.PandasData(dataname=dataframe, fromdate = datetime.datetime(2015, 1, 1), todate = datetime.datetime(2016, 12, 31) ) # Add the Data Feed to Cerebro cerebro.adddata(data) 我们的数据是从一个dfqc的csv文件里面来的,这里,可能大家没有这个数据,之前上传的csdn,不只是还没通过还是怎么的。今天就把他存到百度云,大家有需要的可以自行下载。这是东风汽车的股票数据,是从wind上获取的。大家没有wind也可以用tushare之类的免费api获得。 链接:http://pan.baidu.com/s/1slnULbv 密码:wi3k 文件里面的数据大概是这样的: 2014-03-13 00:00:00.005,1.425,1.434,1.449,1.418,457767208.02014-03-14 00:00:00.005,1.429,1.422,1.436,1.416,196209439.02014-03-17 00:00:00.005,1.433,1.434,1.437,1.422,250946201.02014-03-18 00:00:00.005,1.434,1.425,1.437,1.424,245516577.02014-03-19 00:00:00.005,1.423,1.419,1.423,1.406,331866195.02014-03-20 00:00:00.005,1.412,1.408,1.434,1.407,379443759.02014-03-21 00:00:00.005,1.406,1.463,1.468,1.403,825467935.0 dataframe = pd.read_csv('dfqc.csv', index_col=0, parse_dates=True) 大家注意我们把csv读入pandas的参数,index_col=0表示第一列时间数据是作为pandas 的index的,parse_dates=Ture是自动把数据中的符合日期的格式变成datetime类型。为什么要这样呢?其实读入后的pandas长怎么样都是由backtrader规定的。 1.2 strategy中的data 大家不知道有没有注意,strategy的初始化函数(init)中, self.dataclose = self.datas[0].close 有这样一句。在backtrader中,self.datas[0] 与self.data是等价的,换句话说,同一个东西不同的叫法罢了。为什么会有前面这种,笔者认为,backtrader应当可以支持多个datafeed,目前还没有使用到,先按下不表。 看看前面的pandas的要求的结构,我们就知道,不仅仅有self.datas[0].close,还会有self.datas[0].open。也确实如此。只是我们通常拿close作为一个价格基准罢了。这里, self.datas[0].close 返回的是一个lines。lines是backtrader一个很重要的概念,我们可以理解为时间序列流,这类数据,后面可以跟index,也就是说,可以有 self.datas[0].close[0] self.datas[0].close[1] self.datas[0].close[-1] 等等,但是这里的index是有意义的,0代表当前时刻,-1代表前一时刻,1代表后一时刻,一次类推。 所以在next中使用self.dataclose[0],self.dataclose[-1]就很好理解了。

2019-09-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除