MATLAB程序设计技术分析指标计算与绘图.docx
- 文档编号:14070867
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:21
- 大小:224.93KB
MATLAB程序设计技术分析指标计算与绘图.docx
《MATLAB程序设计技术分析指标计算与绘图.docx》由会员分享,可在线阅读,更多相关《MATLAB程序设计技术分析指标计算与绘图.docx(21页珍藏版)》请在冰点文库上搜索。
MATLAB程序设计技术分析指标计算与绘图
技术分析■指标计算与绘图
证券市场的价格是复杂变化的,投资者在这个市场上进行投资时都要有一套方法来制左或选择投资策略进行投资。
股票技术分析是以预测市场价格变化的未来趋势为目的,通过分析历史图表对市场价格的运动进行分析的一种方法。
股票技术分析是i正券投资市场中非常普遍应用的一种分析方法。
本章节目标为使用Matlab函数计算主要技术分析指标并绘图。
1理论简介
股票基本分析的目的是为了判断股票现行股价的价位是否合理并描绘岀它长远的发展空间,而股票技术分析主要是预测短期内股价涨跌的趋势。
通过基本分析我们可以了解应购买何种股票,而技术分析则让我们把握具体购买的时机。
在时间上,技术分析法注重短期分析,在预测旧趋势结束和新趋势开始方而优于基本分析法,但在预测较长期趋势方而则不如后者。
大多数成功的股票投资者都是把两种分析方法结合起来加以运用。
他们用基本分析法估计较长期趋势,而用技术分析法判断短期走势和确定买卖的时机。
股票技术分析和基本分析都认为股价是由供求关系所决泄。
基本分析主要是根据对影响供需关系种种因素的分析来预测股价总势,而技术分析则是根据股价本身的变化来预测股价走势。
技术分析的基本观点是:
所有股票的实际供需量及其背后起引导作用的种种因素,包括股票市场上每个人对未来的希望、担心、恐惧等等,都集中反映在股票的价格和交易量上。
股票技术分析的理论基础是空中楼阁理论。
空中楼阁理论是美国著名经济学家凯恩斯于1936年提出的,该理论完全抛开股票的内在价值,强调心理构造岀来的空中楼阁。
投资者之所以要以一泄的价格购买某种股票,是因为他相信有人将以更髙的价格向他购买这种股票。
至于股价的髙低,这并不重要,重要的是存在更大的“笨蛋”愿以更髙的价格向你购买。
精明的投资者无须去il•算股票的内在价值,他所须做的只是抢在最大“笨蛋“之前成交,即股价达到最低点之前买进股票,而在股价达到最高点之后将其卖岀。
2行情数据的K线图
2.1数据读取
技术分析的指标讣算与绘图分析,以2010-2011年沪深300指数行情数拯为例进行函数的编程与绘图。
数
EL6
A]
A
B
C
i。
—
E
F
1
000300.SH
000300.SH
000300.SH
000300.SH
000300.SH
2
沪探300
沪探300
沪深300
沪探300
沪探300
3
日期
开盘价
最高价
最谕
收盘价
4
2010/1/4
3,592.470
3,59?
.750
3,535.230
3,535.230
6,610,108,000.000
5
2010/1/5
3,545.190
3,577.530
3,497.660
3,5e.4.040
8,580,964,000.000
6
2010/1/6
3,558.?
00
3,583.830
3,541.170
3,541.730
?
847,312,800.000
7
2010/1/7
3,543.160
3,553.560
3,452.770
3,471.460
8,035,004,000.000
8
2010/1/8
3,456.910
3,482.030
3,426.700
3,480.130
6,079,025,200.000
9
2010/1/11
3,593.110
3,592530
3,465.320
3,482.050
&998,01L600.000
10
2010/1/12
3,477.840
3,535.410
3,437.660
3,534.920
374?
328,000.000
11
2010/1/13
3,448.290
3,490.110
玄415.690
3,421.140
11,245,790,400.000
12
2010/1/14
3/33・4T0
3,4T0.320
3,411.810
3,勺69・050
8,335,324,800.000
13
2010/1/15
3.472.520
3.500.070
3,448.660
3.牝2・740
254.310,400.000
14
2010/1/18
3.471.780
3,501.260
3,458.040
3.500.680
&285,430^400.000
15
2010/1/19
3.506.810
3.528.390
3,497.090
3.507.480
323,200.000
16
2010/1/20
3.512.250
3.515.450
3,387.820
3.394.430
$>249,514,400.000
17
2010/1/21
3,39T.040
3,425.1S0
3,364.720
3,408.5T0
7,059,507,200.000
图1沪深300抬数2010-2011年数据
沪深300指数存储在Hs300.xls文件中,通过使用xlsread函数进行数据的读取。
咎读取数据
filename=1HS300・xls';
(num,txt,rax«;]=xlsread(filename);
%txt的第一列为日期数据
Date=darenuin(txt(4:
length(txt),1));
%num列依次为『开盘价J1最高价•J最低价•J收盘价-•成交fi1;}
OpenPrice=num(:
1);
HighPrice=num(:
z2);
LowPrice=num(:
3);
ClosePrice=num(:
4);
Vol=num(:
r5);
%存储数据在HS300Data.mat文件中
saveHS300DataDateOpenPriceHighPriceLowPriceClosePriceVol
2.2蜡烛图(K线)
在Matlab的FinancialToolbox的蜡烛图通过candle函数实现candle图中,"阳线”为空心,“阴线”为实心。
函数语法:
candle(HighPrices,LowPrices,ClosePrices,OpenPrices,Color,Dates,Dateform)输入参数:
HighPrices:
最髙价序列
LowPrices:
最低价序列
ClosePrices:
收盘价序列
OpenPrices:
开盘价序列
Color:
(可选)蜡烛图颜色,默认为蓝色
Dates:
(可选)日期
Dateform:
(可选)时间格式
函数输出为蜡烛(K线)图,程序为candleTest.m
%读取数据
loadHS300Data
%画两个蜡烛图.一个是2010年的.一个2010年6丿J的
subplot(2,lr1)
%2010年的数据,根据时间数据的年份判断
Idx2010=find(year(Date)==2010);
candle(HighPrice(Iax2010)zLox title(f2010年K线J %2010年6丿J的K线 subplot(2,1.2) 务在2010年的时间数据中选取月份为6的数据 Idx=fina(month(Date(Idx2010))==6); Idx2010_06=Idx2010(Idx); candle(HighPrice(Idx2010_06),Lox^Price(Idx2010_06),ClosePrice(Idx2010 _06)z・・.OpenPrice(Idx2010_06),[],Dare(Idx2010_06),12);%时间格式为“丿J/年”title('2010年6月K线') 2010年K绘 2010年6月K线 4000 3500 3000 2500 2800 2700 2600 图2沪深300抬数K线图 注释: 如同行情软件一样,当K线图的密度较大时候,日K线的“阳阴”难以分别,如何实现周K线、月K线,需要原数据根据新的时间周期进行处理。 交易量数据可以使用bar()函数绘图candleTest2.ni %读取数据 loadHS300Data 务画两个蜡烛图.一个是2010年的,一个2010年6月的 subplot(2rlf1) $2010年的数据.根据时间数据的年份判断 Idx2010=find(year(Date)==2010); candle(HighPrice(Iax2010),Lox %2010年交易量 subplot(2,1,2) bar(Date(Idx2010)zVol(Idx2010)) dateaxis('x\12) %设宜数据使得两个子图的X轴对齐 axis([Date(Idx2010 (1))zDate(Idx2010(end))r0zmax(Vol(Idx2010))])title('2010年交易虽J 结果图为: 2010年K线 20监ioApnoJuhoOctioJann 图3沪深300指数K线图与交易量图 3技术指标计算 3.1移动平均线 移动平均线是应用最普遍的技术指标之一,它帮助交易者确认现有趋势、判断将出现的趋势、发现过度延生即将反转的趋势。 移动平均线(MA)是以道•琼斯的“平均成本概念”为理论基础,采用统讣学中"移动平均”的原理,将一段时期内的股票价格平均值连成曲线,用来显示股价的历史波动情况,进而反映股价指数未来发展趋势的技术分析方法。 它是道氏理论的形象化表述。 在Matlab中il•算移动平均线的函数为movavg。 函数语法: 画图: movavg(Asset,Lead.Lag,Alpha) 返回数据不画图: [Short,Long]=movavg(Asset.Lead.Lag,Alpha) 输入参数: Asset: 资产价格序列 Lead: Short移动平均线的周期,例如3天; Lag: Long移动平均线的周期,例如20天: Alpha: 平均的方法.(默认)0为算术平均值,0.5为平方根权重加权平均值,1为线性加权平均值,2为平方加权平平均值 输岀参数: Short: Short移动平均线 Long: Long移动平均线 例如,以沪深300指数收盘价,Lead=3、Lag=20计算移动平均线,程序movavgTest.ni%%读取数据 loadHS300Data %计算移动平均值 Lead=3; lag=20; Alpha=O; [Short,Long]=movavg(ClcsePrice^Lead,lag,Alpha);冬画图 plot(Date,ClosePrice); holdon plot(Date(Lead: end),Short(Lead: end),11); plot(Date(lag: end),Long(lag: end)t*b・-'); dateaxis{'x\12) 咎标记线型 legend('ClosePrcie','ShortMovavg','LongMovavg1)轴名称 xlabeK'da') 靱轴名称 ylabel('price') 务标题 title('Movavg') 鬲果如图: 图4沪深300移动平均线 3.2布林带 布林带由布林格(Bollinger)发明,也叫布林通道,是各种投资市场广泛运用的路径分析指标。 一般价格的波动是在一泄的区间内的,区间的宽度代表价格的变动幅度,越宽表示价格变动幅度越大,越窄表示价格变动幅度越小。 布林带由支撑线(LOWER).阻力线(UPER)和中线(MID)三者组成,当价格突破阻力线(或支撑线)时,表示卖出(或买入)时机。 SD()为计算标准差 中间线=20日均线 Up线=20日均线+2SD(20日收市价) Down线=20日均线-2SD(20日收市价) 在Matlab中计算布林带的函数为bollingero 函数语法: [mid,uppr,lowr]=bollinger(datazwsize,wts,nstd) 输入参数: Data: 时间序列数据 Wsize: (可选)窗口大小(数据长度),默认为20 Wts: (可选)权重因子,默认为0 Nstd: (可选)上下届的标准差倍数,默认为2输岀参数: mid,uppr,lowr: 布林带的中值、上届与下届。 例如,以沪深300指数收盘价,计算布林带,程序bollingerTest.m %%读取数据 loadHS300Data %计算移动平均值 x wts=0; nstd=2; [mid,upprrlowr]=bollinger(ClosePrice,wsizerwts,nstd);令画图 plot(Date,ClosePricer'k'); holdon plot(Date(x end)rmid(wsize: end)b-1); plot(Date(x end),uppr(wsize: end),'r・-'); plot(Date(wsize: end),lowr(wsize: end),'r・-■);dateaxis(,12)令标记线型 legend('ClosePrcie*,'mid',1uppr','lowr1)轴名称 xlabeK'da') %Y轴名称 ylabel('price') %标题 title(1bollinger1) 计算结果为: bollinger date 图5沪深300布林带 3.3平滑异同移动平均线 MACD称为指数平滑异同移动平均线,是从双移动平均线发展而来的,由快的移动平均线减去慢的移动平均线,MACD的意义和双移动平均线基本相同,但阅读起来更方便。 当MACD从负数转向正数,是买的信号。 当MACD从正数转向负数,是卖的信号。 当MACD以大角度变化,表示快的移动平均线和慢的移动平均线的差距非常迅速的拉开,代表了一个市场大趋势的转变。 DIF线(Difference)短期移动平均线和长期移动平均线的离差值: DEA线(DifferenceExponentialAverage)DTF线的M日指数T•滑移动平均线: MACD线DIF线与DEA线的差。 在Matlab中讣算MACD的函数为macde 函数语法: [macdvec,nineperma]=macd(data) 输入参数: data: 价格序列 输岀参数: macdvec: MACD线 nineperma: thenine-periodexponentialmovingaverage 例如,以沪深300指数收盘价,计算MACD线,程序MACDTest.m 务%%读取数据 loadHS300Data •算MACD (macdvec,nineperma]=macd(ClosePrice); 务画图 subplot(2r1/D令沪深300收盘价图plot(DaterClosePrice); legend('ClosePrice')dateaxis(12); subplot(2rlf2)川沪深300MACD指标 plot(Date,macdvec,'r1); holdon plot(Date,ninepermar'b■-1); legend('Macdvec*,'Nineperma1) dateaxis('x'12); 结果图为: 图6沪深MACD 注释: 函数的演示案例以沪深300日行情为例,若使用髙频数据则将数据代入函数即可。 3.4英他技术指标 表1其他技术指标与函数 Matlab函数 指标名词 释义 adline Accumulation/Distnbutionline 累枳/派发线(Accumulation/DistributionLine)抬标由Marc-Chaikin提出,是一种非常流行的平横交易址抬标。 其原理与0BV类似,但是貝以十日的收盘价位來估算成交流虽,用于估定一段时间内该证券累枳的资金流 adosc Accumulation/Distnbutionoscillator 累枳/派发线震荡指标 bollinger TimeseriesBollingerband 布林带由布林格(Bollinger)发明,也叫布林通道,是各种投资市场广泛运用的路径分析抬标。 一般价格的波动是在一定的区间内的,区间的宽度代表价格的变动幅度.越宽表示价格变动幅度越大.越窄表示价榕变动幅度越小。 布林带由支撑线(LOWER)>阻力线(UPER)和中线(MID)三者组成.十价格突破阻力线(或支揀线)时.表示卖出(或买入)时机。 chaikosc Chaikinoscillator 蔡金摆动抬标,这个指标由三个主要部分组成。 首先: 如果股票或抬数商于一天之内的平仓价(你可以用[max+minJ/2it算出平均值几就意味着一天的积累。 越接近股票的平仓指数或最大指数.积累就越活跃。 相反地.如果股票的平仓价低于一天的平均值.就总味着分布带來的位宜。 越接近最低值.分布就越活跃 chaikvolat Chaikinvolatility 蔡金波动性描标一il•算最商价和最低价之间的价差。 以在最大和最小之间的振幅为基础蔡金波动捋标來断定波动价值。 与真实范憎平均数不同,蔡金波动制表在账户中没有间隔。 根Chaikin的诠释,抬标价值的增长直接关系到短的时间空隙.就是说价格接近他们的最小值(像十惊慌卖出),在长时间里指标波动减缓,表明价格处于繁忙状态(例如.条件成熟牛市的状态)。 macd MovingAverage Convergenee/Divergence (MACD) MACD称为抬数平滑异同移动平均线,是从双移动平均线发展而來的.由快的移动平均线减去慢的移动平均线,MACD的总: 义和双移动平均线基木相同•但阅读起來更方便。 UMACD从负数转向正数.是买的信号o'1MACD从正数转向负数,是卖的信号。 十MACD以大角度变化.表示快的移动平均线和慢的移动平均线的差距非常迅速的拉开.代表了一个市场大趋势的转变。 onbalvol On-BalanceVolume (OBV) 0BV的英文全称是: OnBalanceVolume,中英名称可翻译为: 平衡交易虽,是由美国的投资分析家JoeGranville所创。 该指标通过统il•成交址变动的趋势來推测股价趋势。 OBV以字型为波动即1位.并且由许许多女型波构成了OBV的曲线图.对一浪高于一浪的型波.称其为“上升潮”(UPTIDE),至于上升潮中的下跌回落则称为“跌潮”(DOWNFIELD) pvtrend PriceandVolumeTrend (PVT) 价虽趋势描标(PVT),类似能量潮指标,显示増长交易成交虽总和计算平仓价的改变。 在0BV的悄况下,如果平仓价处于高水平,我们添加当前成交址到当前指标值并且减去其氽的价值。 在PVT的情况下,只有部分、”1前成交址被添加到PVT值.你必须描出前一个柱十前价格和平仓价之间的差别 rsindex RelativeStrength Index(RSI) 分析RSI指标最为普遍的方法是: 我们要寻找这样一个分离的情况.在那点上.证券的价格是创新岛的,但RSI抬标并未能超过它以前的那个岛度。 这样的分离暗示着一个迫近的相反趋势。 RSI抬标那时开始反转,并且下降到它最近的那个低谷.人们称之为“失败摇摆*,“失败摇摆”被看作为是即将到來的一个相反趋势的确认。 stochosc Stochasticoscillator 随机丧荡技术捋标比较一定时段里.价格的范悯同证券价格收市值的相关情况。 该振荡捋标以双线來显示。 主线被称为K线,第二根线被称为D线,它的数值是主线K的移动平均线。 K通常显示为一个固定的曲线,而D线则显示为点状曲线。 willad Williams Accumulation/Distnbution line 终极摆动抬标通常摆动指标是比较金融匸具的平均价格和之前n周期它的价值。 一次LarryWilliams注意到这种指标的效率有所不同,它取决干你需要il•算的单周期数。 所以他创建了终极摆动抬标,能够使用大强度的三个摆动指标计算不同周期。 willpctr Williams%R 威廉%R描标是一个动态技术抬标.由它來决定市场是否过度买入或买进。 威廉的%R曲线和随机震荡抬标非常类似。 唯一的区别在与%R曲线有上下运动的标尺,而随机震荡抬标有振动指数有内部的舒张 4动态技术指标 在实际应用中,技术分析指标都根据实时行情进行讣算与绘图。 历史的指标计算与绘图大多用来复盘(总结经验),实时动态的技术指标作为投资决策的依据。 若何使用Matlab进行实现动态指标是本节需解决的主要内容。 图7多指标动态图 技术分析型的投资者为提髙判断的准确性,通常使用多个技术指标。 如图7所示,使用Matlab实现的多指标的动态计算与绘图,程序为movieTest.m %%读取数据 loadHS300Data %K线图移动平均线布林带MACD %使用循环方式画图(也可以采用触发的方式) %画2010-2011年前100个交易日的动态图,将这100个数据视作Tick数据(6秒)令从第51个数据开始绘图(一般绘图需要历史数据) %画图 figure fori=51: 100 务价格 subplot(2Z2r1) plot(Date(1: i),ClosePrice(1: i)r'b'); holdon §将图像的长度设定为100个数据点 §可根据实际情况调整,3个小时若每6秒一个数据,数据长度为1800 plot(Date(100).ClosePrice(100));dateaxis('x\12) titleC价格,) legend('Price1)arax §移动平均线 subplot(2,2,2) [Short,Long]=m
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 程序设计 技术 分析 指标 计算 绘图