MATLAB技术分析

  • 格式:docx
  • 大小:21.24 KB
  • 文档页数:7

14. 技术分析-指标计算与绘图 证券市场的价格是复杂变化的,投资者在这个市场上进行投资时都要有一套方法来制定或选择投资策略进行投资.股票技术分析是以预测市场价格变化的未来趋势为目的,通过分析历史图表对市场价格的运动进行分析的一种方法.股票技术分析是证券投资市场中非常普遍应用的一种分析方法.本章节目标为使用MATLAB函数计算主要技术分析指标并绘图.

理论简介 股票基本分析的目的是为了判断股票现行股价的价位是否合理并描绘出它长远的发展空间,而股票技术分析主要是预测短期内股价涨跌的趋势.通过基本分析我们可以了解应购买何种股票,而技术分析则让我们把握具体购买的时机.在时间上,技术分析法注重短期分析,在预测旧趋势结束和新趋势开始方面优于基本分析法,但在预测较长期趋势方面则不如后者.大多数成功的股票投资者都是把两种分析方法结合起来加以运用.他们用基本分析法估计较长期趋势,而用技术分析法判断短期走势和确定买卖的时机. 股票技术分析和基本分析都认为股价是由供求关系所决定.基本分析主要是根据对影响供需关系种种因素的分析来预测股价走势,而技术分析则是根据股价本身的变化来预测股价走势.技术分析的基本观点是:所有股票的实际供需量及其背后起引导作用的种种因素,包括股票市场上每个人对未来的希望、担心、恐惧等等,都集中反映在股票的价格和交易量上. 股票技术分析的理论基础是空中楼阁理论.空中楼阁理论是美国着名经济学家凯恩斯于1936年提出的,该理论完全抛开股票的内在价值,强调心理构造出来的空中楼阁.投资者之所以要以一定的价格购买某种股票,是因为他相信有人将以更高的价格向他购买这种股票.至于股价的高低,这并不重要,重要的是存在更大的笨蛋愿以更高的价格向你购买.精明的投资者无须去计算股票的内在价值,他所须做的只是抢在最大笨蛋之前成交,即股价达到最低点之前买进股票,而在股价达到最高点之后将其卖出.

行情数据的K线图

数据读取 技术分析的指标计算与绘图分析,以2010-2011年沪深300指数行情数据为例进行函数的编程与绘图. 沪深300指数存储在文件中,通过使用xlsread函数进行数据的读取. %读取数据 filename=''; [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); %存储数据在文件中 save HS300Data Date OpenPrice HighPrice LowPrice ClosePrice Vol

蜡烛图(K线) 在MATLAB的Financial Toolbox的蜡烛图通过candle函数实现.candle图中,阳线为空心,阴线为实心. 函数语法: candle(HighPrices, LowPrices, ClosePrices, OpenPrices, Color, Dates, Dateform) 输入参数: HighPrices:最高价序列 LowPrices:最低价序列 ClosePrices:收盘价序列 OpenPrices:开盘价序列 Color:(可选)蜡烛图颜色,默认为蓝色 Dates:(可选)日期 Dateform:(可选)时间格式 函数输出为蜡烛(K线)图,程序为 %读取数据 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年的时间数据中选取月份为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()函数绘图 %读取数据 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(Idx2010)) dateaxis('x',12) %设置数据使得两个子图的X轴对齐 axis([Date(Idx2010(1)), Date(Idx2010(end)), 0, max(Vol(Idx2010))]) title('2010年交易量')

技术指标计算

移动平均线 移动平均线是应用最普遍的技术指标之一,它帮助交易者确认现有趋势、判断将出现的趋势、发现过度延生即将反转的趋势.移动平均线(MA)是以道琼斯的平均成本概念为理论基础,采用统计学中"移动平均"的原理,将一段时期内的股票价格平均值连成曲线,用来显示股价的历史波动情况,进而反映股价指数未来发展趋势的技术分析方法.它是道氏理论的形象化表述. 在MATLAB中计算移动平均线的函数为movavg. 函数语法: 画图:movavg(Asset, Lead, Lag, Alpha) 返回数据不画图:[Short, Long] = movavg(Asset, Lead, Lag, Alpha) 输入参数: Asset:资产价格序列 Lead: Short移动平均线的周期,例如3天; Lag: Long移动平均线的周期,例如20天; Alpha:平均的方法,(默认)0为算术平均值,为平方根权重加权平均值,1为线性加权平均值,2为平方加权平平均值 输出参数: Short:Short移动平均线 Long:Long移动平均线 例如,以沪深300指数收盘价,Lead=3、Lag=20计算移动平均线,程序 %%读取数据 load HS300Data %计算移动平均值 Lead=3; lag=20; Alpha=0; [Short, Long] = movavg(ClosePrice, Lead, lag, Alpha); %画图 plot(Date,ClosePrice); hold on plot(Date(Lead:end),Short(Lead:end),'r--'); plot(Date(lag:end),Long(lag:end),''); dateaxis('x',12) %标记线型 legend('ClosePrcie','ShortMovavg','LongMovavg') %X轴名称 xlabel('date') %Y轴名称 ylabel('price') %标题 title('Movavg') 结果如图:

布林带 布林带由布林格 (Bollinger) 发明,也叫布林通道,是各种投资市场广泛运用的路径分析指标.一般价格的波动是在一定的区间内的,区间的宽度代表价格的变动幅度,越宽表示价格变动幅度越大,越窄表示价格变动幅度越小.布林带由支撑线(LOWER)、阻力线(UPER) 和中线(MID) 三者组成,当价格突破阻力线(或支撑线)时,表示卖出(或买入)时机. SD()为计算标准差 中间线 = 20 日均线 Up 线 = 20 日均线 + 2SD(20 日收巿价 ) Down 线 =20 日均线 - 2SD(20 日收巿价 ) 在MATLAB中计算布林带的函数为bollinger. 函数语法: [mid, uppr, lowr] = bollinger(data, wsize, wts, nstd) 输入参数: Data: 时间序列数据 Wsize:(可选)窗口大小(数据长度),默认为20 Wts:(可选)权重因子,默认为0 Nstd:(可选)上下届的标准差倍数,默认为2 输出参数: mid, uppr, lowr:布林带的中值、上界与下界. 例如,以沪深300指数收盘价,计算布林带,程序 %%读取数据 load HS300Data %计算移动平均值 wsize=20; wts=0; nstd=2; [mid, uppr, lowr] = bollinger(ClosePrice, wsize, wts, nstd); %画图 plot(Date,ClosePrice,'k'); hold on plot(Date(wsize:end),mid(wsize:end),'b-');