1、MATLAB技术分析14.技术分析-指标计算与绘图证券市场的价格是复杂变化的,投资者在这个市场上进行投资时都要有一套方法来制定或选择投资策略进行投资.股票技术分析是以预测市场价格变化的未来趋势为目的,通过分析历史图表对市场价格的运动进行分析的一种方法.股票技术分析是证券投资市场中非常普遍应用的一种分析方法.本章节目标为使用MATLAB函数计算主要技术分析指标并绘图。14。1理论简介股票基本分析的目的是为了判断股票现行股价的价位是否合理并描绘出它长远的发展空间,而股票技术分析主要是预测短期内股价涨跌的趋势.通过基本分析我们可以了解应购买何种股票,而技术分析则让我们把握具体购买的时机。在时间上,技
2、术分析法注重短期分析,在预测旧趋势结束和新趋势开始方面优于基本分析法,但在预测较长期趋势方面则不如后者。大多数成功的股票投资者都是把两种分析方法结合起来加以运用.他们用基本分析法估计较长期趋势,而用技术分析法判断短期走势和确定买卖的时机。股票技术分析和基本分析都认为股价是由供求关系所决定。基本分析主要是根据对影响供需关系种种因素的分析来预测股价走势,而技术分析则是根据股价本身的变化来预测股价走势.技术分析的基本观点是:所有股票的实际供需量及其背后起引导作用的种种因素,包括股票市场上每个人对未来的希望、担心、恐惧等等,都集中反映在股票的价格和交易量上。股票技术分析的理论基础是空中楼阁理论。空中楼
3、阁理论是美国著名经济学家凯恩斯于1936年提出的,该理论完全抛开股票的内在价值,强调心理构造出来的空中楼阁。投资者之所以要以一定的价格购买某种股票,是因为他相信有人将以更高的价格向他购买这种股票.至于股价的高低,这并不重要,重要的是存在更大的笨蛋愿以更高的价格向你购买.精明的投资者无须去计算股票的内在价值,他所须做的只是抢在最大笨蛋之前成交,即股价达到最低点之前买进股票,而在股价达到最高点之后将其卖出.14。2行情数据的K线图14.2。1数据读取技术分析的指标计算与绘图分析,以20102011年沪深300指数行情数据为例进行函数的编程与绘图.沪深300指数存储在Hs300.xls文件中,通过使
4、用xlsread函数进行数据的读取.读取数据filename=HS300.xls;num,txt,raw = xlsread(filename);%txt的第一列为日期数据Date=datenum(txt(4:length(txt),1);num列依次为开盘价,最高价,最低价,收盘价,成交量;OpenPrice=num(:,1);HighPrice=num(:,2);LowPrice=num(:,3);ClosePrice=num(:,4);Vol=num(:,5);存储数据在HS300Data。mat文件中save HS300Data Date OpenPrice HighPrice Low
5、Price ClosePrice Vol14。2。2蜡烛图(K线)在MATLAB的Financial Toolbox的蜡烛图通过candle函数实现.candle图中,阳线为空心,阴线为实心.函数语法:candle(HighPrices, LowPrices, ClosePrices, OpenPrices, Color, Dates, Dateform)输入参数:HighPrices:最高价序列LowPrices:最低价序列ClosePrices:收盘价序列OpenPrices:开盘价序列Color:(可选)蜡烛图颜色,默认为蓝色Dates:(可选)日期Dateform:(可选)时间格式函数
6、输出为蜡烛(K线)图,程序为candleTest.m%读取数据load HS300Data%画两个蜡烛图,一个是2010年的,一个2010年6月的subplot(2,1,1)%2010年的数据,根据时间数据的年份判断Idx2010=find(year(Date)=2010);candle(HighPrice(Idx2010), LowPrice(Idx2010), ClosePrice(Idx2010),。. OpenPrice(Idx2010),,Date(Idx2010),12);时间格式为 月/年title(2010年K线)%2010年6月的K线subplot(2,1,2)%在2010年
7、的时间数据中选取月份为6的数据Idx=find(month(Date(Idx2010)=6);Idx2010_06=Idx2010(Idx);candle(HighPrice(Idx2010_06),LowPrice(Idx2010_06) ,ClosePrice(Idx2010_06), OpenPrice(Idx2010_06),Date(Idx2010_06),12);时间格式为 月/年title(2010年6月K线)注释:如同行情软件一样,当K线图的密度较大时候,日K线的阳阴难以分别,如何实现周K线、月K线,需要原数据根据新的时间周期进行处理.交易量数据可以使用bar()函数绘图can
8、dleTest2.m读取数据load HS300Data%画两个蜡烛图,一个是2010年的,一个2010年6月的subplot(2,1,1)2010年的数据,根据时间数据的年份判断Idx2010=find(year(Date)=2010);candle(HighPrice(Idx2010), LowPrice(Idx2010), ClosePrice(Idx2010),.。 OpenPrice(Idx2010),Date(Idx2010),12);%时间格式为 月/年title(2010年K线)%2010年交易量subplot(2,1,2)bar(Date(Idx2010),Vol(Idx20
9、10))dateaxis(x,12)设置数据使得两个子图的X轴对齐axis(Date(Idx2010(1)), Date(Idx2010(end)), 0, max(Vol(Idx2010))title(2010年交易量)14.3技术指标计算14.3.1移动平均线移动平均线是应用最普遍的技术指标之一,它帮助交易者确认现有趋势、判断将出现的趋势、发现过度延生即将反转的趋势.移动平均线(MA)是以道琼斯的平均成本概念为理论基础,采用统计学中”移动平均的原理,将一段时期内的股票价格平均值连成曲线,用来显示股价的历史波动情况,进而反映股价指数未来发展趋势的技术分析方法。它是道氏理论的形象化表述.在MA
10、TLAB中计算移动平均线的函数为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
11、=20计算移动平均线,程序movavgTest。m%读取数据load HS300Data%计算移动平均值Lead=3;lag=20;Alpha=0;Short, Long = movavg(ClosePrice, Lead, lag, Alpha);画图plot(Date,ClosePrice);hold onplot(Date(Lead:end),Short(Lead:end),r);plot(Date(lag:end),Long(lag:end),b。);dateaxis(x,12)%标记线型legend(ClosePrcie,ShortMovavg,LongMovavg)%X轴名称xla
12、bel(date)%Y轴名称ylabel(price)%标题title(Movavg)结果如图:14。3。2布林带布林带由布林格 (Bollinger) 发明,也叫布林通道,是各种投资市场广泛运用的路径分析指标.一般价格的波动是在一定的区间内的,区间的宽度代表价格的变动幅度,越宽表示价格变动幅度越大,越窄表示价格变动幅度越小。布林带由支撑线(LOWER)、阻力线(UPER) 和中线(MID) 三者组成,当价格突破阻力线(或支撑线)时,表示卖出(或买入)时机。 SD()为计算标准差中间线 = 20 日均线 Up 线 = 20 日均线 + 2SD(20 日收巿价 ) Down 线 =20 日均线
13、2SD(20 日收巿价 )在MATLAB中计算布林带的函数为bollinger.函数语法:mid, uppr, lowr = bollinger(data, wsize, wts, nstd)输入参数:Data: 时间序列数据Wsize:(可选)窗口大小(数据长度),默认为20Wts:(可选)权重因子,默认为0Nstd:(可选)上下届的标准差倍数,默认为2输出参数:mid, uppr, lowr:布林带的中值、上界与下界。例如,以沪深300指数收盘价,计算布林带,程序bollingerTest。m%读取数据load HS300Data%计算移动平均值wsize=20;wts=0; nstd=2
14、;mid, uppr, lowr = bollinger(ClosePrice, wsize, wts, nstd);%画图plot(Date,ClosePrice,k);hold onplot(Date(wsize:end),mid(wsize:end),b-);plot(Date(wsize:end),uppr(wsize:end),r。);plot(Date(wsize:end),lowr(wsize:end),r.-);dateaxis(x,12)标记线型legend(ClosePrcie,mid,uppr,lowr)X轴名称xlabel(date)Y轴名称ylabel(price)标
15、题title(bollinger)结果如图:14.3.3平滑异同移动平均线MACD称为指数平滑异同移动平均线,是从双移动平均线发展而来的,由快的移动平均线减去慢的移动平均线,MACD的意义和双移动平均线基本相同,但阅读起来更方便.当MACD从负数转向正数,是买的信号.当MACD从正数转向负数,是卖的信号。当MACD以大角度变化,表示快的移动平均线和慢的移动平均线的差距非常迅速的拉开,代表了一个市场大趋势的转变。DIF线(Difference)短期移动平均线和长期移动平均线的离差值; DEA线(Difference Exponential Average)DIF线的M日指数平滑移动平均线 ;MA
16、CD线DIF线与DEA线的差。在MATLAB中计算MACD的函数为macd.函数语法:macdvec, nineperma = macd(data)输入参数:data: 价格序列输出参数:macdvec:MACD线nineperma: the nineperiod exponential moving average例如,以沪深300指数收盘价,计算MACD线,程序MACDTest.m读取数据load HS300Data%计算MACDmacdvec, nineperma = macd(ClosePrice);画图subplot(2,1,1) %沪深300收盘价图plot(Date,CloseP
17、rice);legend(ClosePrice)dateaxis(x,12);subplot(2,1,2);%沪深300MACD指标plot(Date,macdvec,r);hold onplot(Date,nineperma,b-);legend(Macdvec,Nineperma)dateaxis(x,12);结果如图:注释:函数的演示案例以沪深300日行情为例,若使用高频数据则将数据代入函数即可.14.3。4其他技术指标表1 其他技术指标与函数MATLAB函数指标名词释义adlineAccumulation/Distribution line累积/派发线(Accumulation/Dis
18、tribution Line)指标由Marc7Chaikin提出,是一种非常流行的平横交易量指标。其原理与OBV类似,但是只以当日的收盘价位来估算成交流量,用于估定一段时间内该证券累积的资金流量。adoscAccumulation/Distribution oscillator累积/派发线震荡指标bollingerTime series Bollinger band布林带由布林格 (Bollinger) 发明,也叫布林通道,是各种投资市场广泛运用的路径分析指标.一般价格的波动是在一定的区间内的,区间的宽度代表价格的变动幅度,越宽表示价格变动幅度越大,越窄表示价格变动幅度越小.布林带由支撑线(L
19、OWER)、阻力线(UPER) 和中线(MID) 三者组成,当价格突破阻力线(或支撑线)时,表示卖出(或买入)时机.chaikoscChaikin oscillator蔡金摆动指标,这个指标由三个主要部分组成.首先:如果股票或指数高于一天之内的平仓价(你可以用max+min/2计算出平均值),就意味着一天的积累。越接近股票的平仓指数或最大指数,积累就越活跃.相反地,如果股票的平仓价低于一天的平均值,就意味着分布带来的位置。越接近最低值,分布就越活跃chaikvolatChaikin volatility蔡金波动性指标- 计算最高价和最低价之间的价差。以在最大和最小之间的振幅为基础蔡金波动指标来
20、断定波动价值。与真实范围平均数不同, 蔡金波动制表在账户中没有间隔.根Chaikin的诠释 ,指标价值的增长直接关系到短的时间空隙,就是说价格接近他们的最小值(像当惊慌卖出),在长时间里指标波动减缓,表明价格处于繁忙状态(例如,条件成熟牛市的状态)。macdMovingAverage Convergence/Divergence (MACD)MACD称为指数平滑异同移动平均线,是从双移动平均线发展而来的,由快的移动平均线减去慢的移动平均线,MACD的意义和双移动平均线基本相同,但阅读起来更方便.当MACD从负数转向正数,是买的信号.当MACD从正数转向负数,是卖的信号。当MACD以大角度变化,
21、表示快的移动平均线和慢的移动平均线的差距非常迅速的拉开,代表了一个市场大趋势的转变。onbalvolOnBalance Volume (OBV)OBV的英文全称是:On Balance Volume,中英名称可翻译为:平衡交易量,是由美国的投资分析家Joe Granville所创.该指标通过统计成交量变动的趋势来推测股价趋势。OBV以N字型为波动单位,并且由许许多多N型波构成了OBV的曲线图,对一浪高于一浪的N型波,称其为上升潮(UP TIDE),至于上升潮中的下跌回落则称为跌潮(DOWN FIELD)pvtrendPrice and Volume Trend (PVT)价量趋势指标 (PVT
22、),类似能量潮指标,显示增长交易成交量总和计算平仓价的改变。 在OBV的情况下,如果平仓价处于高水平,我们添加当前成交量到当前指标值并且减去其余的价值.在 PVT的情况下,只有部分当前成交量被添加到PVT值, 你必须指出前一个柱当前价格和平仓价之间的差别rsindexRelative Strength Index (RSI)分析RSI指标最为普遍的方法是:我们要寻找这样一个分离的情况,在那点上,证券的价格是创新高的,但RSI指标并未能超过它以前的那个高度。这样的分离暗示着一个迫近的相反趋势.当RSI指标那时开始反转,并且下降到它最近的那个低谷,人们称之为失败摇摆,失败摇摆被看作为是即将到来的一
23、个相反趋势的确认.stochoscStochastic oscillator随机震荡技术指标比较一定时段里,价格的范围同证券价格收市值的相关情况.该振荡指标以双线来显示。主线被称为K线,第二根线被称为D线,它的数值是主线K的移动平均线。K通常显示为一个固定的曲线,而D线则显示为点状曲线.willadWilliams Accumulation/Distribution line终极摆动指标 通常摆动指标是比较金融工具的平均价格和之前n 周期它的价值. 一次Larry Williams 注意到这种指标的效率有所不同,它取决于你需要计算的单周期数.所以他创建了终极摆动指标,能够使用大强度的三个摆动指标计算不同周期。 willpctrWilliams R威廉R指标是一个动态技术指标,由它来决定市场是否过度买入或买进。威廉的%R曲线和随机震荡指标非常类似.唯一的区别在与%R曲线有上下运动的标尺,而随机震荡指标有振动指数有内部的舒张
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1