星期二, 二月 14, 2012

如何绘制蜡烛图并添加自定义指标

股票分析中的蜡烛图和技术指标并非什么神奇的东西。指标只不过是过去历史数据的一种函数。再复杂的函数,其输入变量都是过去已经发生的事情。而过去发生的事情,未来不一定重复。所以在学术界,对于股票价格的走势大多是以带漂移项的随机过程来建模。其中重要的因素就是随机因子对于价格的冲击。

如果你用一个蒙特卡罗仿真构建一个虚拟的股票趋势,那些迷信技术分析的人看到了或许就会跑过来问你这支股票的代码。技术指标虽然没什么预测的能力,但技术指标可以告诉我们已经发生的事情,所以有时候需要绘制蜡烛图,可能还需要添加一些自定义的指标。R语言中的quantmod包是一个非常强悍的金融计算包,它可以帮助股票分析人员进行定量化交易的研发、测试和部署。有兴趣的同学可以参见它的官方网站,不过作者似乎很长时间没有更新了。另外,邓一硕在其博客中也对quantmod包作了很完整的总结,除了关键的交易系统建模部分。

本例希望讲解如何绘制蜡烛图,并添加股价变动的“偏度”指标,这里所谓股价的变动定义为收盘价与开盘价之差。在很多情况下股价变动呈一个钟形的分布,本例的自定义指标就是考虑该分布的偏度数值。
#首先加载必要的扩展包
library(quantmod)
library(e1071)
#读取2010年到2012年间的上证指数
getSymbols('^SSEC',from = '2010-01-01',to='2012-02-14')
#建立自定义指标函数来计算价格变化的偏度
skew.ind <- function(quotes,n.days=20){
    diff <- Cl(quotes)-Op(quotes)
    r <- matrix(NA,ncol=n.days,nrow = NROW(quotes))
    for (x in 1:n.days) r[ ,x] <- Lag(diff,x-1)
    x <- apply (r, 1, skewness)
    if (is.xts(quotes))
        xts(x,time(quotes))
    else x
}
#绘制最近6个月的蜡烛图并添加偏度指标
candleChart(last(SSEC,'6 months'),theme='white',TA=NULL)
addT1.ind<-newTA(FUN=skew.ind,col='red',legend='偏度')
addT1.ind()

1 条评论:

  1. If you want your ex-girlfriend or ex-boyfriend to come crawling back to you on their knees (no matter why you broke up) you need to watch this video
    right away...

    (VIDEO) Have your ex CRAWLING back to you...?

    回复删除