加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

一根均线也能赚钱:程序化研究之均线策略(随便看看就好,我是为收藏)

(2017-09-06 19:55:21)
分类: 投资(机)心得、技术分享

近期,AlphaGo战胜了人类世界围棋排名第一的柯洁,人工智能再次成为近期人们关注的热点。在期货交易中,随着软件、技术的不断更新升级,程序化交易者也越来越多,他们把交易策略编成计算机程序,让计算机自动去执行交易命令,他们往往不需要关注基本面新闻和信息,不需要长时间盯盘,一切交给程序即可。今天,笔者就以最简单的均线策略,来为大家演示一下一个程序化策略的初步开发过程。


一、先有思想,再有策略


国内某位程序化交易高手曾说:“我是用我的思想在做程序化交易,而不是用一些指标做交易。”确实,做程序化交易应该要先有思想和逻辑,然后据此再用程序化的方式去表现出来,而不是直接去套用一些指标,这样往往会南辕北辙。


所以,我们先确定思想和逻辑。我们知道,期货市场的价格以趋势方式演变,如果我们能想办法抓住趋势,就能赚到这部分趋势行情的钱。那么,用什么方式来抓住趋势呢?比较简单的一种方法就是用均线。均线表示一段时间内市场的平均价格,可以作为多空的一个分水岭,如果当前价格在均线之上,表示当前的位置偏多,如果当前价格在均线之下,则表示当前的位置偏空。因此,我们先制定一个简单的大致规则:当前价格在均线之上即平空做多,当前价格在均线之下即平多做空。


二、把思想转变成量化规则


大致的规则定下来之后,还需要进一步地明确具体的细节。


1、交易的标的和品种


对于程序化策略,不少交易高手都比较重视普适性,一个策略最好在所有的品种上都要有比较良好的表现,因此,我们选取所有流动性较好的商品期货作为交易品种。那么问题来了,如何定义“流动性较好”?我们的规则是,某个品种的指数合约,日成交量大于等于5万手。


并且,为了保持行情的连续性,我们在指数合约上进行测试和发出信号,在主力合约上进行交易。


2、确定交易周期


对于一些思路简单的策略,在大周期上往往表现会比较好,在小周期上,由于K线走势的无序程度相对较大,并且由于交易次数的上升,滑点的成本和手续费会更大。因此,我们选择日线作为交易周期。


3、确定交易报单的价格


出于减小滑点冲击和过滤掉部分信号的考虑,我们选择收盘价作为交易报单的价格,比如有时一根K线在没走完的时候,在盘中突破了均线,但在收盘的时候又回落下来,最终收盘价在均线之下,此时用收盘价进行交易就可以过滤掉这样的信号,并且如果在盘中价格突破的时候进行交易,此时滑点往往会比较大。


4、设置交易参数


这个策略中,唯一的参数是均线的计算周期,我们设为N,由于是日线级别,我们把N暂时设定为30。


三、规则的程序实现


笔者使用的程序化交易软件是金字塔决策交易系统,类似的软件还有文华财经、TB等,编程能力比较好的投资者还可以自己编写平台进行交易。将交易规则逐一编写成程序,由于这个策略非常简单,整个代码只有25行。


http://www.7hcn.com//f/77626/IYKSREXO87HQ9AIL7EW6ROG.png


四、初步测试


我们的测试要尽量地接近实盘交易,因此,我们把手续费设置为交易所手续费的1.5倍,并加1个最小变动价位的滑点。在实盘交易中,我们不能等到日线走完、收盘价确定后进行交易。在实际交易中,我们可以采取一些方法,比如收盘前几秒提前下单,这个时候信号消失的概率也比较小。由于是日线级别,测试时间要足够长,我们选取的时间是2000年1月1日至2017年6月8日。测试的品种是所有流动性较好的国内商品期货指数合约。每个品种分配初始10万的本金,每次开仓的手数按照10万的30%仓位进行计算。测试结果如下:


http://www.7hcn.com//f/77103/%E5%9B%BE%E7%89%872.png


http://www.7hcn.com//f/77104/%E5%9B%BE%E7%89%873.png


从初步测试的结果来看,整体曲线良好,除了2011年和今年,其余每年都有盈利,在震荡的行情中,需要忍受资金的横盘和回撤。胜率接近40%,趋势策略的胜率通常不会太高,在40%左右。平均盈利/平均亏损为2.84,这个比值是比较好的。


五、检查普适性


在测试的32个品种中,只有玻璃、镍、铅是负收益的,其余品种均是正收益的,每个品种的测试都比较良好,普适性基本过关。


六、参数检验和优化



http://www.7hcn.com//f/77105/%E5%9B%BE%E7%89%874.png


该策略中只有均线计算周期N一个参数,设置最小值10,最大值100,步长为1,优化结果如上图所示,横轴为参数值,纵轴为净利润率,可以看到30的位置没有明显的尖峰现象,同时考虑到交易次数、手续费、滑点等,30可以作为参数。


七、总结


这个策略是非常简单的一个均线交易策略,但实际测试的效果良好,是一个值得继续深入研究的策略。对于程序化而言,个人还是主张大道至简,有了明确的思想和逻辑后,用最质朴简单的方式表现出来,这样往往会更接近市场的本质,也许很多时候会有意外的收获,我们不能轻易肯定一个策略,但也不能随意就放弃一个策略。在实盘交易中,我们要保持策略的一致性,做到完全不人工干预,对于一个正期望值的策略,挺过艰难漫长的回撤期,就能迎来资金曲线的再创新高。


笔者水平有限,本文仅供程序化初学者或想学习程序化的交易者参考。



七禾网www.7hcn.com研究中心研究员 傅旭鹏


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有