均线模型量化股票交易_第1页
均线模型量化股票交易_第2页
均线模型量化股票交易_第3页
均线模型量化股票交易_第4页
均线模型量化股票交易_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、仰军15 金融专硕均线模型量化股票交易摘要:移动平均线(MA)是股市中最常用的一种分析技术,用于在大行情的波动段找到有效的交易信号。移动平均线简单、有效,对股市操作具有较好的指导作用。均线模型能有效地 打败了大部分的主观策略,成为炒股,炒期货的必备基本工具。本文选用阿里巴巴 2014 年 9 月至今的股票数据,对其每日收盘价进行了 5 日、20 日和 60 日移动平均。先用每日收盘价和 20 日平均分析一条均线的交易策略,通过找出交易信号 并模拟交易,发现一条均线交易策略会有些许的亏损,但通过图表分析,此策略能够较好的 预测股价走势,相对主观投资更为合理;然后用 5 日平均和 20 日平均做两

2、条均线的交易策 略,这是对一条均线模型的优化,模拟交易后发现此交易能够盈利。关键词:股票 移动平均 均线交易策略 模拟交易 II1. 均线模型的简单介绍移动平均线本文采用统计学中”移动平均”的原理,计算一股票每日收盘价的简单移动平均,将一 段时期内的股票价格平均值连成曲线,来显示股价的历史波动情况,进而反映股价指数未来 发展趋势。均线的特性(1)平滑性。通过均线的平滑移动来修复股价的不规则偶然变动。(2)灵敏性、稳定性。均线参数取值不同,其特性也不同。参数越小,灵敏性越强, 稳定性越差;参数越大,稳定性越强,灵敏性越差。(3)助涨性、助跌性。上升趋势线有助涨的特性,下降趋势线有助跌的特性。均线

3、模型在日K线图中除了标准的价格K线以外,另外还有4条线,分别是白线、黄线、紫线、绿线依次分别表示:5日、10日、20日和60日移动平均线,通过这 4条线与价格K线的交 叉,就可以形成不同的均线模型StocH BZXBA利用均线平滑的特点,可以发现均线与价格K线会有叉,各均线之间也有交叉,我们可以通过这些交叉点判断交易信号:黄金交叉,当10日均线由下往上穿越30日均线,10日均线在上,30日均线在下,其交叉点就是黄金交叉,黄金交叉是多头的表现,出现黄金交叉 后,后市会有一定的涨幅空间,这是进场的最佳时机;死亡交叉,当30日均线与10日平均线交叉时,30日均线由下住上穿越10日平均线,形成30日平

4、均线在上,10日均线在下时,其交点称之为”死亡交叉”,”死亡交叉”预示空头市场 来临,股市将下跌此时是出场的最佳时机。2. 用R语言实现模型建立从互联网下载股票数据利用quantmod包的getSymbols()函数,默认会通过 Yahoo的金融开放 API下载数据, 我们选择阿里巴巴的股票数据,从2014-09-19至今的1年多的日间交易数据。数据类型为xts格式的时间序列,数据包括 7个列,以日期做索引列,其他 6列分别为 开盘价(Open), 最高价(High), 最低价(Low),收盘价(Close), 交易量(Volume),调整价(Adjusted)。自定义均线图自定义均线指标:以

5、日期时间序列为索引,收盘价做为价格指标,不考虑成交量及其他维度字段。取2014-09-19至今,形成趋势的数据,画出价格曲线,5日均线,20日均线, 60日均线。20Stock BABA1008 £ao -2014-10 2014-12 2015-02 2015-0斗 201 5-06 2015-08 2015-1060 Scrtosma5ma 20 maGOK线图和多条通过自己封装的移动平均函数和可视化函数,就实现了与交易软件中类似的日 均线结合的可视化输出。一条均线的交易策略模型设计思路:1. 以股价和20日均线的交叉,进行交易信号的判断。2. 当股价上穿20日均线则买入(红色)

6、,下穿20日均线卖出(蓝色)。 首先画出股价和20日均线图1以散点覆盖20日均线,红色点为买入持有,蓝色点为卖出空仓。Stock BABAStock_BABASono adown厂mnOup用股价和20日均线价格做比较,把股价大于均线的部分用蓝色表示,股价小于均线的部分 用红色表示。我们看到图中,蓝色点和红色点在20日均线上交替出现,我们可以在每次红色出现的第一个点买入股票,然后在蓝色的第一个点卖出股票。找出交易信号点,并以100000本金做模拟交易。为简化操作假定在信号点满仓买入或卖出,手续费为0。运算结果显示,亏损的有11笔而盈利的只有3笔,一年下来一共亏损了 17038元。似乎 一条均线

7、模型是失败的,因为它不仅没能盈利反而带来的亏损。下面就从股价和模拟现金投 入来进行简单的分析亏损原因。1V XH%n a120 -1QO -60 -fsc 1 Jvariablea> 77v"呂clQ9ecash心1ooooo -90000 -iI2014-102014-122D1S-O22015 Q42O1 5-062015-082015-10Stock BABA该图示,上半红色部分为日收盘价,下半蓝色部分为模拟交易的现金流,对比可见,阿 里股价在14年年底开始走低,而根据一条均线模型进行的投资策略比较合理的预测了股市的 走势并进行了股票的买入卖出,在一定程度上是减少了亏损。

8、两条均线的交易策略一条均线模型,在大的趋势下是可以进行稳定投资的,但由于一条均线对于波动非常敏 感性,如果小波动过于频繁,不仅会增加交易次数,而且会让模型失效。然后,就有二条均 线的策略模型,可以减低对波动的敏感性。二条均线策略模型,与一条均线模型思路类似,以5日均线价格替换股价,是通过5日均线和20日均线交叉来进行信号交易的。画出股价、5日均线和20日均线图: 307StocK BABAiTTi ESS以散点覆盖20日均线,红色点为买入持有,蓝色点为卖出空仓Stock 曰 AB A1 O 20 1 4 1i S 20 1 & 02 20 1 H亠口埠2 0 1 & O<

9、320 ISO以同样的条件进行两条均线交易策略的模拟交易。根据运算结果,虽然依旧亏损了11笔 盈利3笔,但最终带来了总盈利7408元 两种策略的简单分析 策略一在模拟交易中一共进行了 30次交易,最终亏损10000元左右,而策略二只进行了 20次交易,最终带来盈利 7000左右。很明显两条均线的交易策略能更好的追踪股价趋势, 带给投资者回报。看起来均线模型是如此的简单,但实盘交易时真能在趋势行情中跑赢双均线(优化)模型,也真不是一件容易的事情。参考文献:1常宁,徐国祥 . 金融高频数据分析的现状与问题研究. 财经研究,2004,( 3): 31-392武振,郑丕谔基于遗传神经网络的股价波动预测

10、天津大学学报,2004 , 6(4)3103马超群,张明良 .ACD 族计量模型的分类与比较分析 . 金融经济,2005,( 8) 86-874蒋学雷,陈敏,王国明等 . 股票市场的流动性度量的动态 ACD 模型 . 统计研究,2004,4):42-445王 晶 , 王玉玲 , 向东进 , 阮曙芬 . 自回归条件持续期 (ACD) 模型研究 统计与决策20066)2007b.6Economist. 2007a. Ahead of the TapeDodgy Tickers7-Algorithmic . June 23, 2007.-Stock Excha nges. Econo mist. M

11、arch 10, 2007.M. Kearns and L. Ortiz. The PennLehman automatedtrading project.IEEE Intelligent Systems, 2003. To appear.8 Domowitz, I., and H. Yegerman. 2005.The Costof AlgorithmicTrading:A First Look at Comparative Performance. ”Edited byBrian R. Bruce,Algorithmic Trading: Precision,Control, Execut

12、ion. Institutional Investor.附表一: R 语言代码#加载必须的函数包 library(plyr) library(quantmod)library(TTR)library(ggplot2) library(scales)library ( reshape2 )#设置存储位置 setwd("E:/Statistical modeling/")#下载数据download<-function(stock,from="2013-01-01") df<- getSymbols(stock,from=from,env=envi

13、ronment(),=FALSE) #下 载 数 据names(df)<-c("Open","High","Low","Close","Volume","Adjusted") (df,file=paste(stock,".csv",sep=""),sep=",",quote=FALSE) # 保存到本地 #本地读数据read<-function(stock)(file=paste(stock,"

14、.csv",sep=""),header = TRUE,sep=",", format="%Y-%m-%d")stock<-"BABA"download(stock,from='2013-01-01') BABA<-read(stock)#定义移动平均函数ma<-function(cdata,mas=c(5,20,60)ldata<-cdata for(m inmas) ldata<-merge(ldata,SMA(cdata,m) ldata<(lda

15、ta, fromLast=TRUE)names(ldata)<-c('Value',paste('ma',mas,sep='')return(ldata)#定义均线图函数g<-drawLine<- function(ldata,titie="Stock_MA",sDate=min(index(ldata),eDate=max(index(ldata),out =FALSE) g<-ggplot(aes(x=Index, y=Value),data=fortify(ldata,1,melt=TRUE) g

16、+geom_line() g<-g+geom_line(aes(colour=Series),data=fortify(ldata,-1,melt=TRUE)g<-g+scale_x_date(labels=date_format("%Y-%m"),breaks=date_breaks("2months"),limitsc(sDate,eDate) g<-g+xlab("") +ylab("Price")+ggtitle(title)if(out)ggsave(g,file=paste(titie

17、,".png",sep="") else g#选取数据并运行cdata<-BABA'2014/2015'$Close title<-"Stock_BABA" # 图片标题 sDate<("2014-9-19")#开始日期 eDate<("2015-10-23") #结束日期ldata<-ma(cdata,c(5,20,60) # 选择滑动平均指标p0<-drawLine(ldata,title,sDate,eDate) # 画图ggsave(p

18、0,file=paste(title,".png",sep="")#存图#画出股价和 20 日均线图ldata1<-ma(cdata,c(20) # 选择滑动平均指标p11<-drawLine(ldata1,title,sDate,eDate) #画图#以散点覆盖 20 日均线,红色点为买入持有,蓝色点为卖出空仓# 定义均线图 +散点函数drawPoint<-function(ldata,pdata,titie,sDate,eDate)ggplot(aes(x=Index, y=Value),data=fortify(ldata,1,m

19、elt=TRUE) g<-g+geom_line() g<-g+geom_line(aes(colour=Series),data=fortify(ldata,- 1,melt=TRUE) g+geom_point(aes(x=Index,y=pdata,3,colour=compare),data=pg<-g<-data)g<-g+scale_x_date(labels=date_format("%Y-%m"),breaks=date_breaks("2 months"),limits c(sDate,eDate) g&l

20、t;-g+xlab("") + ylab("Price")+ggtitle(title) g#定义获取散点数据函数getPoint<-function(ldata) data<-fortify(ldata) n<-nrow(data)data<(data,compare=vector(length=n)v1<-data,2 v2<-data,3 dist<-(v2-v1)data$comparewhich(dist<0)<-c("down")data$comparewhich(di

21、st>=0)<-c("up")pdata<-data#运行并获取数据pdata<-getPoint(ldata1)p1<-drawPoint(ldata1,pdata,title,sDate,eDate)#定义找出交易信号点函数Signal<-function(cdata,pdata) n<-nrow(pdata) pdata1<(pdata,Sigs=vector(length=n),comp=vector(length=n),p=vector(length=n) pdata1$compwhich(pdata1$compar

22、e="up")<-1 pdata1$compwhich(pdata1$compare="down")<-0 for(i in 2:(n-1) pdata1$pi<-(pdata1$compi-pdata1$compi-1) pdata1$p1<-pdata1$p2pdata1$Sigswhich(pdata1$p<0)+1<-c("B")pdata1$Sigswhich(pdata1$p>0)+1<-c("S") temp<-pdata1-c(1,which(p

23、data1$p=0)+1), x<-c(4,6,7) Signals<-temp,-x#运行并获取数据tdata<-Signal(cdata,pdata)#模拟交易0, #利用交易信号数据,进行模拟交易。设定交易参数,以$10W为本金,满仓买入或卖出,手续为传入交易信号。#参数:交易信号 ,本金,持仓比例 ,手续费比例#规定数据格式以及小数点位数options(scipen=4)options(digits=4)#定义模拟交易函数trade<-function(tdata,capital) n=nrow(tdata) cash<-vector(length=n)a

24、mount<-vector(length=n)asset<-vector(length=n) diff<-vector(length=n)t<(tdata,cash,amount,asset,diff)if(t1,4="S")t1,5<-capitalelset1,5<-(capital%t1,2)if(t1,4="S")t1,6<-0 elset1,6<-floor(capital/t1,2)t1,7<-capitalt1,8<-0for(i in2:n) if(t$Sigsi="B

25、") t$amounti<-floor(t$cashi- 1/t,2i)+amounti-1 t$cashi<-t$cashi-1%t,2i t$asseti<-t$amounti*t,2i+t$cashi t$diffi<- t$asseti-t$asseti-1 else t$amounti<-0t$cashi<-t$amounti-1*t,2i+t$cashi-1 t$asseti<-t$cashit$diffi<-t$asseti-t$asseti-1t#定义数据,运行capital=100000result1<-trad

26、e(tdata,capital) rise<- length(which(result1$diff>0) fall<-length(which(result1$diff<0)#画出资金曲线#定义画出股价 +现金流量对比函数 drawCash<-function(result,ldata) n<-which(result1$Sigs='S') m<-c(1,5) xx<-resultn,mcolnames(xx)<-c("Time","cash") xx<- melt(xx,id=

27、"Time")yy<-fortify(ldata)k<-c(1,2) yy<-yy,kcolnames(yy)<-c("Time","close") yy<- melt(yy,id="Time") zz<-rbind(yy,xx) g<-ggplot(aes(Time,value),data=zz)g<-g+geom_line(aes(group=1,colour=variabl e)g<-g+facet_grid(variable.,scales="

28、free_y") g<-g+scale_x_date(labels=date_format("%Y-%m"),breaks=date_breaks("2 month"),limits=c(sDate,eDate) g<-g+xlab("")+ylab("Price")+ggtitle(title)g#运行p2<-drawCash(result1,ldata1)ggsave(p2,file=paste("close+cash",".png",sep=

29、"")#存图#一条均线模型,在大的趋势下是可以稳定赚钱的,但由于一条均线对于波动非常敏感性,#5日均线#如果小波动过于频繁,不仅会增加交易次数,而且会让模型失效。然后,就有二条均线的 #策略模型,可以减低对波动的敏感性。二条均线策略模型,与一条均线模型思路类似,以 价格替换股价,是通过 5日均线和20日均线交叉来进行信号交易的。#首先画出股价,5日均线和20日均线图。#选择5日和20日滑动平均指标ldata2<-ma(cdata,c(5,20)#画图p33<-drawLi ne(ldata2,title,sDate,eDate)#这步是为了将数据框与之前的函数格

30、式对应ldata2<-ldata2,c(2,3)#获取散点图pdata2<-getPoi nt(ldata2)#画出散点图p3<-drawPoi nt(ldata2,pdata2,title,sDate,eDate)#找出交易信号tdata2<-Sig nal(cdata,pdata2)#模拟交易result2<-trade(tdata2,capital)rise2<-len gth(which(result2$diff>0)fall2<-len gth(which(result2$diff<0)#画出股价现金图p4<-drawCas

31、h(result2,ldata2)附表二:阿里股票数据IndexOpe nHighLowCloseVolumeAdjusted20141902014/9/222014/9/232014/9/242014/9/252014/9/262014/9/292014/9/30892014/10/12014/10/22014/10/32014/10/692684002014/10/72014/10/8882014/10/9882014/10/102014/10/132014/10/142014/10/152014/10/162014/10/172014/10/208898914002014/10/2120

32、14/10/222014/10/232014/10/24982014/10/27972014/10/282014/10/291002014/10/302014/10/312014/11/32014/11/42014/11/52014/11/62014/11/72014/11/102014/11/112014/11/122014/11/131202014/11/142014/11/172014/11/182014/11/192014/11/202014/11/212014/11/241122014/11/252014/11/262014/11/2880778002014/12/12014/12/

33、21102014/12/32014/12/42014/12/52014/12/82014/12/92014/12/102014/12/112014/12/122014/12/152014/12/162014/12/172014/12/182014/12/192014/12/222014/12/232014/12/2458704002014/12/2665291002014/12/2980686002014/12/302014/12/312015/1/22015/1/51011012015/1/62015/1/72015/1/82015/1/92015/1/1279972002015/1/132

34、015/1/142015/1/152015/1/162015/1/202015/1/212015/1/221041042015/1/2398738002015/1/262015/1/272015/1/282015/1/292015/1/30922015/2/22015/2/32015/2/490902015/2/587872015/2/62015/2/986862015/2/102015/2/1186862015/2/122015/2/132015/2/172015/2/1874223002015/2/1976041002015/2/2078217002015/2/2393679002015/

35、2/242015/2/252015/2/2687633002015/2/278583772002015/3/28584842015/3/32015/3/42015/3/52015/3/6862015/3/92015/3/102015/3/11832015/3/122015/3/132015/3/1684842015/3/172015/3/182015/3/19852015/3/202015/3/232015/3/242015/3/252015/3/262015/3/2797038002015/3/302015/3/312015/4/12015/4/2832015/4/62015/4/794430002015/4/82015/4/92015/4/102015/4/132015/4/1485852015/4/152015/4/162015/4/172015/4/202015/4/212015/4/222015/4/232015/4/242015/4/272015/4/282015/4/292015/4/302015/5/12015/5/42015/5/52015/5/680802015/5/786862015/5/82015/5/112015/5/122015/5/13872015/5/142015/5/152015/5/182015/5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论