MATLAB金融算法分析实战:基于机器学习的股票量化分析(txt+pdf+epub+mobi电子书下载)


发布时间:2020-07-17 04:02:59

点击下载

作者:吴婷,余胜威

出版社:机械工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

MATLAB金融算法分析实战:基于机器学习的股票量化分析

MATLAB金融算法分析实战:基于机器学习的股票量化分析试读:

前言

2015年6月15日,上证指数达到近7年新高,吸引了大批的投资者将更多的资金投入股市,由此使得股票优化预测成为广大投资者关注的焦点。投资者较多地查看炒股软件提供的QACD曲线、KDJ曲线、交易量柱状(bar)图等指标,而这些指标的指示作用早已褪去了往日的光鲜,本书正是基于此背景而编写。本书以MATLAB 2015b为工具,采用机器学习算法研究股票趋势,可以给投资者和研究投资的人员提供强有力的量化投资支撑。

算法是大数据分析的灵魂,好的算法能够简化问题的求解,并且能够从大数据的海洋里找到最有价值的信息,以提高用户的工作效率。本书使用的算法区别于常用的群智能算法。群智能算法较多地应用于优化求解问题方面,学术味浓。而本书则是通过大数据,采用机器学习算法对数据内在规律进行学习,用户根本无须知道机器学习算法的黑匣子,就能得到90%的有用信息,从而给投资者提供最有价值的信息。因此金融大数据算法具有较大的实际应用价值。

市场上的金融量化投资分析方法,很少分析与应用BP神经网络、RBF神经网络、Hopfield神经网络、马尔可夫(Markov)链、灰色理论、指数平滑、支持向量机SVM、贝叶斯(Bayes)网络等方法。本书正是基于这样一个出发点,从机器学习算法出发,采用MATLAB仿真软件,对金融大数据进行仿真分析,并且给出了全部的可执行代码,极大地丰富了MATLAB算法应用,并且可以让读者了解不同的算法原理及求解流程,从而真正掌握MATLAB金融算法分析。

本书所有案例均采用MATLAB进行设计,针对不同的工程背景,采用了不同的算法对涉及案例进行求解,让读者真正理解算法实质,从而将这些算法思想更好地应用于实际的金融分析与投资中。本书以机器学习算法应用为主,做到了理论和算法相结合,详解设计思路和设计步骤,向读者展示了如何运用MATLAB进行算法开发和设计。

值得说明的是,很多读者可能并不关注算法本身的原理,只需要采用该算法解决自己的课题即可,那么本书也是很好的选择。本书将核心算法代码全部写成了可调用的子函数脚本文件,读者只需要查看主程序代码,进行数据更改和参数设置等即可运行、求解。本书有着最精华、最通俗易懂的算法剖析过程,希望广大读者能够学有所成。本书特色1.内容讲解不枯燥

本书结合相关理论实际,抽出和算法相关的理论作为支撑,通过求解流程及算法迭代过程,让读者容易理解并且掌握。2.全书覆盖面广

本书涵盖了MATLAB基础知识、高级应用、时间序列数据处理、量化投资趋向指标、量化投资反趋向指标、BP神经网络、RBF神经网络、Hopfield神经网络、马尔可夫(Markov)链、灰色理论、指数平滑、支持向量机SVM、贝叶斯(Bayes)网络、Pareto多目标优化分析等内容。针对分类预测和优化等问题,本书采用了不同的算法进行设计,初学者通过阅读本书,可以开发出适用于解决自己问题的程序。3.循序渐进,由浅入深

本书从算法原理与求解流程出发,辅以程序验证,通过算法代码,可以反过来去理解算法原理中所涉及的公式,做到逐步地引导读者去认识和掌握算法的思想。4.真实案例,随学随用

本书是一本注重实践的书,书中有大量篇幅用在了MATLAB算法解决实际问题的案例中。读者只需要稍加修改这些案列,即可用于自己的项目或课题上,从而实现问题的求解。5.语言通俗易懂

本书选择了历年的上证指数数据进行分析,并且对于趋势量化投资指标和反趋势量化投资指标均给出了最底层的可执行代码。另外,本书还绘制了每个指标随上证指数的变化图,以加深读者的理解。6.图示丰富,容易理解

本书所有案例中的配图相当丰富,通过前后的对比图,读者能很快地掌握知识点。本书内容及体系结构

第1篇 MATLAB常用算法应用设计(第1~5章)

本篇介绍了MATLAB常用算法,包括MATLAB入门与提高、MATLAB高级应用、时间序列数据处理、量化投资趋向指标、量化投资反趋向指标等案例,通过该类较为常用的算法引入,读者可以应用这些案例解决一些常见问题,如函数优化预测、拟合回归、分类、股票投资趋向指标、量化投资反趋向指标等,经过这些内容的学习,既适应了不同的读者,也为第2篇的引入打下了坚实的算法基础。

第2篇 MATLAB机器学习算法应用设计(第6~15章)

本篇涉及面较广,列举了BP神经网络工具箱上证指数预测、BP神经网络多指标预测、RBF神经网络多指标预测、Hopfield神经网络多指标预测、马尔可夫(Markov)链上证指数预测、灰色理论下的上证指数预测、指数平滑下的上证指数预测、支持向量机SVM下的涨跌预测、贝叶斯(Bayes)网络多指标预测、Pareto多目标优化分析等,通过案例分析,结合算法理论和程序代码,真正地适合广大师生的需要。MATALB高级算法应用,向更加广泛、更加具体、更多应用发展,让读者真正掌握算法核心,开发和设计出自己的可移植性代码。本书读者对象

·MATLAB量化投资开发人员;

·MATLAB金融算法爱好者;

·刚入职的初中级程序员;

·大、中专院校师生;

·相关培训学校的学员;

·MATLAB爱好者;

·MATALB相关从业人员。本书配套资源及获取方式

本书涉及的源代码文件等配套学习资源需要读者自行下载。请读者登录机械工业出版社华章公司的网站www.hzbook.com,然后搜索到本书页面,按照页面上的说明进行下载即可。读者也可以在http://halcom.cn社区的“量化投资指标”版块下载。本书作者

本书由吴婷和余胜威主笔编写。其他参与编写的人员有李小妹、周晨、桂凤林、李然、李莹、李玉青、倪欣欣、魏健蓝、夏雨晴、萧万安、余慧利、袁欢、占俊、周艳梅、杨松梅、余月、张广龙、张亮、张晓辉、张雪华、赵海波、赵伟、周成、朱森。

笔者结合自己在工作和学习期间掌握的各类算法,以及出于对股票投资和MATLAB的爱好,通过参阅大量的相关资料,精心准备,编写了本书。本书在写作过程中参考了一些笔者平时积累的资料,部分资料来自于前辈们的著作,在此向这些前辈们表示深深的敬意和感谢!由于无法联系到原作者,所以写作时也无法一一征求意见。如果有不当之处,请联系笔者或者本书编辑。

读者在阅读本书的过程中若有疑问,可以在MATLAB中文论坛的本书交流版块提问,也可以发邮件到hzbook2017@163.com,我们会及时答复。编者篇第1MATLAB常用算法应用设计

·第1章 MATLAB入门与提高

·第2章 MATLAB高级应用

·第3章 时间序列数据处理

·第4章 量化投资趋向指标

·第5章 量化投资反趋向指标第1章MATLAB入门与提高

本书所有程序以及软件界面均以MATLAB 2015b为数据处理分析软件,MATLAB 2015b用户界面如图1-1所示。图1-1 MATLAB 2016b用户界面

建议读者将MATLAB界面调整到如图1-1所示的布局界面,将有助于提高用户程序设计调试效率。左侧上面为工作区,方便用户进行查看数组的类型及数值大小;左侧下面为命令行窗口,用户可以写代码,或者直接在脚本文件中写好再运行;右侧为用户当前文件夹,即程序放置的文件夹,用户可以选择不同路径下的程序文件。

MATLAB 2015b是最后一款支持Windows 32位的软件。更高版本的MATLAB将更多地应用于Windows的64位操作系统上。本书所涉及程序均基于MATLAB 2015b软件开发,笔者的笔记本电脑为32位Microsoft Windows 7旗舰版操作系统。

随着MATLAB工具箱的不断增强,下面来看看MATLAB 2015b的工具箱版本,具体如下:

>> ver ----------------------------------------------------------------------- MATLAB 版本: 8.6.0.267246 (R2015b) MATLAB 许可证编号: 123456 操作系统: Microsoft Windows 7 旗舰版 Version 6.1 (Build 7600) Java 版本: Java 1.7.0_60-b19 with Oracle Corporation Java HotSpot(TM) Client VM mixed mode ----------------------------------------------------------------------- MATLAB   版本 8.6   (R2015b) Simulink       版本 8.6   (R2015b) Aerospace Blockset       版本 3.16     (R2015b) Aerospace Toolbox       版本 2.16   (R2015b) Antenna Toolbox       版本 1.1   (R2015b) Bioinformatics Toolbox     版本 4.5.2     (R2015b) Communications System Toolbox   版本 6.1   (R2015b) Computer Vision System Toolbox   版本 7.0   (R2015b) Control System Toolbox   版本 9.10   (R2015b) Curve Fitting Toolbox   版本 3.5.2   (R2015b) DO Qualification Kit   版本 3.0   (R2015b) DSP System Toolbox     版本 9.1   (R2015b) Data Acquisition Toolbox   版本 3.8   (R2015b) Database Toolbox   版本 6.0   (R2015b) Datafeed Toolbox     版本 5.2  (R2015b) Econometrics Toolbox     版本 3.3  (R2015b) Embedded Coder     版本 6.9  (R2015b) Filter Design HDL Coder   版本 2.10   (R2015b) Financial Instruments Toolbox   版本 2.2  (R2015b) Financial Toolbox     版本 5.6  (R2015b) Fixed-Point Designer   版本 5.1  (R2015b) Fuzzy Logic Toolbox   版本 2.2.22   (R2015b) Gauges Blockset     版本 2.0.9   (R2015b) Global Optimization Toolbox   版本 3.3.2   (R2015b) HDL Coder     版本 3.7   (R2015b) HDL Verifier     版本 4.7   (R2015b) IEC Certification Kit   版本 3.6  (R2015b) Image Acquisition Toolbox   版本 4.10   (R2015b) Image Processing  版本 9.3  (R2015b) Instrument Control Toolbox   版本 3.8  (R2015b) LTE System Toolbox     版本 2.1  (R2015b) MATLAB Coder      版本 3.0  (R2015b) MATLAB Compiler     版本 6.1  (R2015b) MATLAB Compiler SDK     版本 6.1  (R2015b) MATLAB Report Generator   版本 4.2  (R2015b) Mapping Toolbox     版本 4.2  (R2015b) Model Predictive Control Toolbox   版本 5.1  (R2015b) Model-Based Calibration Toolbox   版本 5.0  (R2015b) Neural Network Toolbox   版本 8.4  (R2015b) OPC Toolbox     版本 4.0  (R2015b) Optimization Toolbox   版本 7.3  (R2015b) Partial Differential Equation Toolbox     版本 2.1     (R2015b) Phased Array System Toolbox   版本 3.1   (R2015b) Polyspace Bug Finder   版本 2.0  (R2015b) Polyspace Code Prover   版本 9.4  (R2015b) RF Toolbox     版本 2.17   (R2015b) Robotics System Toolbox   版本 1.1  (R2015b) Robust Control Toolbox   版本 6.0  (R2015b) Signal Processing Toolbox   版本 7.1  (R2015b) SimBiology     版本 5.3  (R2015b) SimDriveline   版本 2.9  (R2015b) SimElectronics   版本 2.8  (R2015b) SimEvents     版本 4.4.1   (R2015b) SimHydraulics     版本 1.17   (R2015b) SimMechanics     版本 4.7  (R2015b) SimPowerSystems     版本 6.4  (R2015b) SimRF     版本 4.5  (R2015b) Simscape   版本 3.14   (R2015b) Simulink 3D Animation     版本 7.4  (R2015b) Simulink Code Inspector   版本 2.4  (R2015b) Simulink Coder     版本 8.9  (R2015b) Simulink Control Design   版本 4.2.1   (R2015b) Simulink Design Optimization     版本 2.8  (R2015b) Simulink Design Verifier     版本 3.0  (R2015b) Simulink Desktop Real-Time     版本 5.1  (R2015b) Simulink PLC Coder     版本 2.0  (R2015b) Simulink Real-Time   版本 6.3  (R2015b) Simulink Report Generator     版本 4.2  (R2015b) Simulink Test     版本 1.1  (R2015b) Simulink Verification and Validation   版本 3.10   (R2015b) Spreadsheet Link EX     版本 3.2.4   (R2015b) Stateflow     版本 8.6  (R2015b) Statistics and Machine Learning Toolbox   版本 10.1   (R2015b) Symbolic Math Toolbox   版本 6.3  (R2015b) System Identification Toolbox     版本 9.3  (R2015b) SystemTest     版本 2.6.10   (R2015b) Trading Toolbox     版本 2.2.1   (R2015b) Vehicle Network Toolbox   版本 3.0  (R2015b) Vision HDL Toolbox   版本 1.1  (R2015b) Wavelet Toolbox   版本 4.15   (R2015b)

其中金融工具箱版本如下:

Financial Instruments Toolbox     版本 2.2  (R2015b) Financial Toolbox   版本 5.6  (R2015b)

这也是最后一个支持Windows 32位操作系统的最高MATLAB工具箱版本。1.1 矩阵运算

MATLAB俗称矩阵实验室,其矩阵运算功能简单易用,且执行效率颇高。具体的MATLAB矩阵运算如下。(1)矩阵的加减法

具体的MATLAB程序代码如下:

clc,clear,close all   % 清理命令区、清理工作区、关闭显示图形 warning off     % 消除警告 feature jit off   % 加速代码运行 >> x=rand(2) x = 0.8147 0.1270 0.9058 0.9134 >> y=rand(2) y = 0.6324 0.2785 0.0975 0.5469 >> x+y ans = 1.4471 0.4055 1.0033 1.4603 >> x-y ans = 0.1824 -0.1515 0.8083 0.3665(2)矩阵的点乘除法运算

具体的MATLAB程序代码如下:

>> x.*y ans = 0.5152 0.0354 0.0884 0.4995 >> x./y ans = 1.2884 0.4560 9.2863 1.6702(3)矩阵的点开方运算

具体的MATLAB程序代码如下:

>> x^2 ans = 0.7788 0.2194 1.5653 0.9493 >> x.^2 ans = 0.6638 0.0161 0.8205 0.8343 >> x.^0.5 ans = 0.9026 0.3564 0.9517 0.9557(4)矩阵求逆运算

需要注意的是,矩阵求逆运算,需要矩阵为方阵,即N×N矩阵。

>> inv(x) ans = 1.4518 -0.2018 -1.4398 1.2950 >> inv(x*y) ans = 3.7499 -1.4782 -3.3015 2.6316

MATLAB的矩阵运算效率是很高的,MATLAB开发也是针对高效矩阵计算而设计的。MATLAB的使用和基本的高等数学运算相匹配,这也大大简化了软件学习的难度。1.2 放大局部视图

由于多个图形在一个窗口一起显示的时候,肉眼很难分辨细微的差异,因此需要在同一个图形上放大局部视图,如何进行局部视图的放大显示呢?

具体的密集图形生成代码如下:

clc,clear,close all   % 清理命令区、清理工作区、关闭显示图形 warning off     % 消除警告 feature jit off   % 加速代码运行 x=0:0.01:4*pi; y1 = sin(x); y2 = sin(1.01*x); figure(1), plot(x,y1,'r'); hold on plot(x,y2,'b'); grid on

运行程序得到如图1-2所示的图形。图1-2 两个正弦波

在x取值0~4时,两个正弦波基本难区分,这时需要根据实际图形,放大原图的局部区域,达到图形清晰化的目的。具体的MATLAB代码如下:

% 参考本代码,请引用并注明 本书信息(吴婷 余胜威) clc,clear,close all   % 清理命令区、清理工作区、关闭显示图形 warning off     % 消除警告 feature jit off   % 加速代码运行 x=0:0.01:4*pi; y1 = sin(x); y2 = sin(1.01*x); figure(1), plot(x,y1,'r'); hold on plot(x,y2,'b'); grid on xlabel('x'); ylabel('y') %% haxes2=axes('position',[0.3,0.7,0.20,0.20]); axis(haxes2); hold on plot(x(250:300),y1(250:300),'r-') % 画图 plot(x(250:300),y2(250:300),'b-') % 画图 axis tight

运行程序后,得到如图1-3所示的结果。图1-3 图形的局部放大显示1.3 Monte Carlo方法

Monte Carlo(蒙特卡罗)方法是金融学中应用较广泛的一个方法。对于一个非线性不可微分的方程而言,如何去逼近这样的一个方程,传统的方法是很难求解的。

Monte Carlo方法采用随机生成点的方法进行合理解的计算,经过统计学知识,得到方程的近似解,具体的案例分析如下。22

假设有两个曲线方程程y=1—x和y 5=x,那么这两个曲线方程所围成的面积是多少呢?

绘制两曲线方程图形,具体的MATLAB程序如下:

clc,clear,close all   % 清理命令区、清理工作区、关闭显示图形 warning off     % 消除警告 feature jit off   % 加速代码运行 x=-1:0.01:1; y1=1-x.^2; y2=(x.^2).^(1/5); figure(1), plot(x,y1,'r-') hold on plot(x,y2,'b-') grid on xlabel('x'); ylabel('y')

绘制图形如图1-4所示。图1-4 两曲线封闭区域

在x等于﹣0.49~0.5区间,y等于0~1区间进行区域面积的计算,用Monte Carlo方法计算区域面积,具体的MATLAB代码如下:

clc,clear,close all   % 清理命令区、清理工作区、关闭显示图形 warning off     % 消除警告 feature jit off   % 加速代码运行 % Monte Carlo方法 tic       % 运算计时 P=rand(10000,2); x=P(:,1)-0.5; y=P(:,2); points=find(y<=1-x.^2&y.^5>=x.^2); M=length(points); S=4*M/10000 figure('color',[1,1,1]) plot(x(points),y(points),'bs') toc % 计时结束 grid on xlabel('x'); ylabel('y')

运行程序输出结果如下:

S = 1.5000 时间已过 0.102463 秒。 >>

得到相应的图形如图1-5所示。图1-5 面积求解1.4 金融工具箱绘图函数的使用

单击MATLAB 2015b界面上的绘图按钮,弹出下拉菜单,得到如图1-6所示界面。

FINANCE TOOLBOX PLOTS即金融工具箱绘图函数,其中有bolling函数、highlow函数、candle函数、kagi函数、renko函数、movavg函数、priceandvol函数、pointfig函数、volarea函数,下面将逐一通过简单的案例介绍这些函数的使用。图1-6 FINANCE TOOLBOX PLOTS界面1.4.1 bolling(布林线)函数

在MATLAB命令行窗口中输入help bolling,查看该函数的使用格式,具体如下:

>> help bolling bolling Bollinger Band chart. bolling(ASSET,SAMPLES,ALPHA,WIDTH) plots Bollinger bands for given ASSET data vector. SAMPLES specifies the number of samples to use in computing the moving average. ALPHA is an optional input that specifies the exponent used to compute the element weights of the moving average. The default ALPHA is 0 (simple moving average). WIDTH is an optional input that specifies the number of standard deviations to include in the envelope. It is a multiplicative factor specifying how tight the bounds should be made around the simple moving average. The default WIDTH is 2. This calling syntax plots the data only and does not return the data. Note: The standard deviations are normalized by (N-1) where N is the sequence length. [MAV,UBAND,LBAND] = bolling(ASSET,SAMPLES,ALPHA,WIDTH) returns MAV with the moving average of the asset data, UBAND with the upper band data, and LBAND with the lower band data. It does not plot any data. bolling(ASSET,20,1) plots linear 20-day moving average Bollinger Bands. [MAV,UBAND,LBAND] = bolling(ASSET,20,1) returns the data used to plot the linear 20-day moving average Bollinger Bands without plotting the data. See also movavg, highlow, candle, pointfig. bolling 的参考页

bolling函数的使用有两种形式,具体如下。(1)bolling(Asset,Samples,Alpha,Width);(2)[Movavgv,UpperBand,LowerBand]=bolling(Asset,Samples,Alpha,Width)。

bolling函数有4个输入参数:第1个参数为Asset,即资产数据;第2个参数Samples为样本的数量,Samples样本数量取决于参与移动平均计算的样本数量;第3个参数Alpha为移动平均变量的指数变量(权重),默认情况下Alpha=0;第4个参数Width为相对应的多因子标准差,默认值为2。

bolling移动平均法的计算过程如下:

% build moving average vectors with for loops a = zeros(r-samples,1); b = a; for i = samples:r a(i-samples+1) = sum(asset(i-samples+1:i).*w); b(i-samples+1) = width * sum(std(asset(i-samples+1:i)).*w); end if nargout == 0 ind = samples:r; h = plot(ind,asset(ind),ind,a,ind,a+b,ind,a-b); if get(0,'screendepth') > 1 cls = get(gca,'colororder'); set(h(1),'color',cls(1,:)); set(h(2),'color',cls(2,:)); set(h(3),'color',cls(3,:)); set(h(4),'color',cls(3,:)); end else mav = a; uband = a+b; lband = a-b; end

具体的案例分析如下:

clc,clear,close all     % 清理命令区、清理工作区、关闭显示图形 warning off       % 消除警告 feature jit off     % 加速代码运行 load('data000001.mat') openprice = data000001(:,1)';     % 开盘价 highprice = data000001(:,2)';   % 最高价 lowprice = data000001(:,3)';     % 最低价 closeprice = data000001(:,4)';   % 收盘价 assert = [openprice]; [Movavgv, UpperBand, LowerBand] = bolling(assert, 20, 1); figure(1) plot(openprice(1,21:end),'r-'); hold on plot(Movavgv,'k--') plot(UpperBand,'b.-') plot(LowerBand,'b.-') legend('原始资产数据','移动平均值','移动平均值上界','移动平均值下界') grid on xlabel('t'); ylabel('price') axis tight

运行程序,输出结果如图1-7所示。图1-7 bolling移动平均法绘图1

直接使用bolling(Asset,Samples,Alpha,Width)进行函数绘图,代码如下:

figure, bolling(assert, 20, 1); grid on xlabel('t'); ylabel('price') axis tight

运行程序,输出结果如图1-8所示。图1-8 bolling移动平均法绘图2

对比图1-7和图1-8可知,两种函数使用方法是等效的。1.4.2 highlow(高低价)函数

在MATLAB命令行窗口中输入help highlow,查看该函数的使用格式,具体如下:

>> help highlow highlow High, low, open, close chart. highlow(HI,LO,CL,OP,COLOR) displays the high, low, opening, and closing price of an asset. Plots are vertical lines whose top is the high, bottom is the low, open is a left tick, and close is a right tick. HI is the high price of asset, LO is the low price of asset, CL is the closing price of asset, OP is the opening price of asset, and COLOR is the line color. All input prices are specified as column vectors. MATLAB supplies a default color if none is specified. The default color differs depending on the background color of the figure window. See COLORSPEC in the MATLAB Reference Guide for COLOR names. OP is optional. To specify COLOR when OP is unknown, enter OP as an empty matrix, []. highlow(HI,LO,CL,OP,COLOR) plots the figure and returns the handles H of the lines. See the MATLAB User's Guide for information on Handle Graphics. highlow(HI,LO,CL,OP,COLOR,DATES,DATEFORM) allows you to specify your own date vector DATES. DATES must be a column vector. DATEFORM is an optional input argument dictating the format of the date string as tick labels. See DATEAXIS for the details on date string formats. For example, if the high, low, and closing prices for an asset are stored in the vectors asseth, assetl, and assetc, respectively, the High-Low-Close plot is displayed with the command highlow(asseth,assetl,assetc). See also candle. highlow 的参考页 名为 highlow 的其他函数

highlow函数的使用有3种形式,具体如下。(1)highlow(High,Low,Close,Open,Color);(2)highlow(High,Low,Close,Open,Color,Dates,Dateform);(3)Handles=highlow(High,Low,Close,Open,Color,Dates,Dateform)。

highlow函数使用的主要输入参数:第1个参数为输入数据的最高价;第2个参数为输入数据的最低价;第3个参数为输入数据的收盘价;第4个参数为输入数据的开盘价;第5个参数为绘图的颜色设置;第6个输入参数为绘图x轴的日期;第7个输入参数为输入日期的形式设置。

具体的highlow函数使用如下。(1)设置绘图颜色为红色,具体代码如下:

clc,clear,close all     % 清理命令区、清理工作区、关闭显示图形 warning off        % 消除警告 feature jit off   % 加速代码运行 load('data000001.mat') openprice = data000001(1:40,1);     % 开盘价 highprice = data000001(1:40,2);    % 最高价 lowprice = data000001(1:40,3);        % 最低价 closeprice = data000001(1:40,4);    % 收盘价 Color = 'red';     % 颜色 figure(1) highlow(highprice, lowprice, closeprice, openprice, Color); grid on axis tight

运行程序,输出结果如图1-9所示。图1-9 highlow函数的使用1(2)添加显示日期,具体代码如下:

figure(2) load disney.mat range = [1:40]; dates = [dis.dates(range)]; highlow(highprice, lowprice, closeprice, openprice, Color,dates); grid on axis tight

运行程序,输出结果如图1-10所示。图1-10 highlow函数的使用2(3)结构体下的数据绘图显示。使用结构体存储的数据,采用highlow进行绘图,具体代码如下:

figure(3) load disney.mat range = 1:25; highlow(dis_HIGH(range), dis_LOW(range), dis_CLOSE(range),... dis_OPEN(range),'blue',dis.dates(range));

运行程序,输出结果如图1-11所示。图1-11 highlow函数的使用31.4.3 candle(阴阳烛图)函数

在MATLAB命令行窗口中输入help candle,查看该函数的使用格式,具体如下:

>> help candle candle Candlestick chart. candle(HI, LO, CL, OP) candle(HI, LO, CL, OP, COLOR, DATES, DATEFORM) Optional Inputs: COLOR, DATES, DATEFORM Inputs: HI - Column vector of high prices of a security. LO - Column vector of low prices of a security. CL - Column vector of closing prices of a security. OP - Column vector of opening prices of a security. Optional Inputs: COLOR - Three element color vector, [R G B], or a string specifying the color name. MATLAB supplies a default color if none is specified or if it is empty. The default color differs depending on the background color of the figure window. See COLORSPEC in the MATLAB Reference Guide for color names. DATES - Column vector of dates for user specified X-axis tick labels. DATEFORM - A scalar dictating the format of the date string tick labels. See DATEAXIS for details on the date string formats. See also bolling, highlow, movavg, pointfig. candle 的参考页 名为 candle 的其他函数

candle函数使用有两种形式,具体如下。(1)candle(HighPrices,LowPrices,ClosePrices,OpenPrices);(2)candle(HighPrices,LowPrices,ClosePrices,OpenPrices,Color,Dates,Dateform)。

candle函数使用的主要输入参数说明:第1个参数为输入数据的最高价;第2个参数为输入数据的最低价;第3个参数为输入数据的收盘价;第4个参数为输入数据的开盘价;第5个参数为绘图的颜色设置;第6个输入参数为绘图x轴的日期;第7个输入参数为输入日期的形式设置。

具体的candle函数使用如下:

clc,clear,close all   % 清理命令区、清理工作区、关闭显示图形 warning off     % 消除警告 feature jit off   % 加速代码运行 load('data000001.mat') openprice = data000001(1:40,1);     % 开盘价 highprice = data000001(1:40,2);     % 最高价 lowprice = data000001(1:40,3);     % 最低价 closeprice = data000001(1:40,4);     % 收盘价 Color = 'blue';     % 颜色 figure(1) candle(highprice, lowprice, closeprice, openprice, Color); grid on axis tight

运行程序,输出结果如图1-12所示。图1-12 蓝色的candle函数图

修改显示颜色,具体代码如下:

figure(2) candle(highprice, lowprice, closeprice, openprice, 'green'); grid on axis tight

运行程序,输出结果如图1-13所示。图1-13 绿色的candle函数图

修改x轴显示的日期,具体代码如下:

figure(3) load disney.mat range = [1:40]; dates = [dis.dates(range)]; Color = 'blue'; % 颜色 candle(highprice, lowprice, closeprice, openprice, Color,dates); grid on axis tight ylabel('上证指数')

运行程序,输出结果如图1-14所示。图1-14 有时间刻度的candle函数图

单击图形窗口中的属性按钮,如图1-15所示。图1-15 图形窗口属性

之后显示如图1-16所示,此时用户可以修改阴阳烛图的显示属性,在图1-16右侧的“绘图浏览器”中,可进行着色修改,具体如图1-17所示。图1-16 图形属性图1-17 属性修改

修改完成后,单击按钮弹出新窗口,即可得到修改属性的图形,如图1-18所示。图1-18 弹出新窗口

此时用户所需要的着色图就完成了,用户可以选择“文件”→“生成代码”命令,自动生成该图形的代码,如图1-19所示。图1-19 生成代码

生成的绘制该图形的代码如下:

function createfigure(X1, Y1, ZData1, YData1, XData1, ZData2, YData2, XData2) %CREATEFIGURE(X1, Y1, ZDATA1, YDATA1, XDATA1, ZDATA2, YDATA2, XDATA2) % X1: x 数据的矢量 % Y1: y 数据的矢量 % ZDATA1: patch zdata % YDATA1: patch ydata % XDATA1: patch xdata % ZDATA2: patch zdata % YDATA2: patch ydata % XDATA2: patch xdata % 由 MATLAB 于 02-Aug-2016 21:40:24 自动生成 % 创建 figure figure1 = figure; % 创建 axes axes1 = axes('Parent',figure1); hold(axes1,'on'); % 创建 plot plot(X1,Y1,'Color',[0 0 1]); % 创建 patch patch('Parent',axes1,'ZData',ZData1,'YData',YData1,'XData',XData1,... 'MarkerFaceColor',[1 0 0],... 'FaceColor',[1 0 0],... 'EdgeColor',[1 0 0]); % 创建 patch patch('Parent',axes1,'ZData',ZData2,'YData',YData2,'XData',XData2,... 'MarkerFaceColor',[0 1 1],... 'FaceColor',[0 1 1],... 'EdgeColor',[0 1 1]); % 创建 ylabel ylabel('上证指数'); box(axes1,'on'); grid(axes1,'on'); axis(axes1,'tight'); % 设置其余坐标轴属性 set(axes1,'XTick',... [729108 729115 729122 729129 729136 729143 729150 729157 729164 729171],... 'XTickLabel',... ['03/24';'03/31';'04/07';'04/14';'04/21';'04/28';'05/05';'05/12';'05/19';'05/26']);1.4.4 kagi(折线图)函数

在MATLAB命令行窗口中输入help kagi,查看该函数的使用格式,具体如下:

>> help kagi kagi Kagi chart. kagi(X) plots the stock data in a Kagi chart. X is an Mx2 matrix where the first column contains date numbers and the second column is the asset price. See also bolling, candle, highlow, linebreak, movavg, pointfig, renko, volarea, priceandvol. kagi 的参考页

kagi函数使用形式具体如下:

kagi(X)

kagi函数使用的主要输入参数只有一个,该参数为输入数据。

具体的kagi函数使用如下:

clc,clear,close all   % 清理命令区、清理工作区、关闭显示图形 warning off     % 消除警告 feature jit off   % 加速代码运行 load disney.mat range = [1:420]; dates = [dis.dates(range)]+6500; load('data000001.mat') openprice = data000001(:,1);  % 开盘价 data = [dates, openprice]; figure(1) kagi( data ); grid on axis tight

运行程序,输出结果如图1-20所示。图1-20 kagi(折线图)函数的使用1.4.5 renko(砖形图)函数

在MATLAB命令行窗口中输入help renko,查看该函数的使用格式,具体如下:

>> help renko renko Renko chart. renko(X) plots the asset data, X, in a Renko chart. X is an Mx2 matrix where the first column contains date numbers and the second column is the asset price. renko(X,THRESHOLD) plots the asset data, X, adding a new box only when the price has changed but at least the value specified by THRESHOLD. By default, THRESHOLD is set to 1. See also bolling, candle, highlow, linebreak, movavg, priceandvol, pointfig, kagi, volarea. renko 的参考页

renko函数使用形式具体如下:

renko(X)

renko函数使用的主要输入参数只有一个,该参数为输入数据。

具体的renko函数使用如下:

clc,clear,close all   % 清理命令区、清理工作区、关闭显示图形 warning off     % 消除警告 feature jit off   % 加速代码运行 load disney.mat range = [1:420]; dates = [dis.dates(range)]+6500; load('data000001.mat') openprice = data000001(:,1); % 开盘价 data = [dates, openprice]; figure(1) renko( data ); grid on axis tight

运行程序,输出结果如图1-21所示。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载