龙听期货论坛's Archiver

龙听 发表于 2017-10-21 10:37

由浅入深 系统解析程序化交易

如要转载,请转载以下全文,请勿删除修改任何内容。否则将追究法律责任。

    本文由和讯期货特约讲师凤鹤年撰写,转载请注明来源及作者。  

    一 什么是程序化交易

  程序化交易:用计算机软件代替人工进行交易的部分过程或者全部过程。

  程序化交易可以分为

  全自动:人为不干涉。所有信号均由计算机去执行。

  半自动:计算机执行部分指令,比如只是用程序去开仓。平仓人工来执行。还有就是人工下单。然后计算机去执行出场程序。还有就是会人工判断行情是否单边与横盘,然后选择性的去加载程序。

  二 程序化的优点与缺点

  优点:

  1 最大的优点就是可以克服主观交易中的心理问题:焦虑,犹豫,紧张,恐惧。兴奋等等各种心理因素。

  2 可以同时很多个品种。且可以实时扑捉到交易机会第一时间进场。比人工观察要快很多很多。提高效率。把资金分散到几十个策略和品种上去的时候,极大的分散的投资风险。

  3 主观交易策略使用的条件太复杂的情况下会影响交易的实时和客观。特别是日内交易,条件越多,每次下单的时候会影响速度,还会经常出现犹豫的情形。但是程序化就可以避免这些。再多的再复杂的条件也能很快的去执行。这个是人无与伦比的。

  4 一个策略的盈利与否,如果用主观去判断会需要很长时间实盘去检验。特别是中长线策略。需要以年为单位来进行检验效果。但是用程序那么就能通过过去的大量数据很快检验出是否能盈利,当然真正的实盘与程序回撤数据还是有差异的。但即使如此也比主观要更加快的评测出策略的有效性。

  缺点:

  1 程序化不能实现人工复杂的思想的表达,还有些是模糊的难以用语言准确去描述的如盘感。

  2 程序化相对比较死板,无法灵活的感觉各种盘面的变化去做出灵活的应对。

  3 大量策略雷同,导致一些以前用的好的策略,过了段时间后就效果不好了。

  三 程序化编写需要注意的几点

  1 避免使用未来函数。

  未来函数:指可能引用未来数据的函数,即引用或利用当时还没有发生过的数据对之前发出的判断进行修正的函数。

  2 指令触发的K线取值。现在有实时触发,和K线走完取值,还比如实时触发K线走完复核,等等很多种。如果取TICK数据回测那么这些都触发条件与实盘都是最接近的。如果不是去TICK数据测试,那么就只有K线走完不复核取值,为最接近实盘效果。

  3回测历史数据的时候,引用的是指数和主连合约的区别。

  指数是以每个合约的成交量做权重算出的该商品的指数

  主连是主力合约的连续,主连合约是是不同时段主力合约的连接,指数是所有合约按照成交量加权而形成的。很显然,主连合约因为有换月的状况所以有跳空情况,而指数是全部合约的加权,所以会有很优秀的连续性。

  如果用指数来测试,那么实际交易的时候不会有这样的数据产生。如果是日内程序,那么就要用主连来测试,如果是过夜那么就最好是用指数。或者能有自动换月的函数来测试,那么效果就更贴近实际。

  4 手续费和滑点

  如果是低频的策略,那么这个影响将不大。如果是中频特别是高频的,那么就影响很大了。所以再回撤数据的时候越严格那么就实际效果越贴近实际。

  5 测试的时候需要的数据源要足够的多。比如是日内的程序,那么少点没关系。如果是过夜的长周期策略,那么就需要足够多数据来检测在各种复杂情况下的有效性。最好先截取一两年的数据测试效果,这些数据里一定要有明显的单边和横盘行情。这样才能更加有效的去衡量效果。然后再换其他时间段来测试效果,最后再所有时间去测试,这样会更加的贴近真实效果。

  四 介绍几个简单测交易策略

  下面是一个实盘模型 橡胶一小时的ATR趋势跟踪模型

由浅入深 系统解析程序化交易

由浅入深 系统解析程序化交易

由浅入深 系统解析程序化交易

由浅入深 系统解析程序化交易

  2003-2016年一共13年的数据测试:

    开仓154次,基本上交易频率是1个多月开仓一次。

  因为交易频率太低就没有设置滑价。夏普比11.8

  20%仓位年化收益28%,胜率48%,盈亏比3.最大回撤24%

  这个曲线还可以,但是效果也只能说一般。如果单独的用这一个策略,很多人都无法坚持下去。

  1 一个月开仓一次。大部分人熬不住

  2 最大回撤24%,盈利28%这个回报比也一般。

  3 如果连续3个月开了三次,每次都亏损的话,那么很少有人会经常到第4个月。

  下面是一个股指的10分钟趋势跟踪实盘模型

由浅入深 系统解析程序化交易

由浅入深 系统解析程序化交易

由浅入深 系统解析程序化交易

  从2013年到2016年938天,这个也是用4跳划价 夏普比35

  开仓数214次。除去节假日,大概是3个交易日一个开仓信号。频率也很低

  20%的仓位,最大回撤10%,年化收益55%,胜率49%盈亏比2.8,这个相对来说已经是个不错的策略了,但是:

  我们来分析一下,其实大部分的利润是在2015年。因为2015年的波动最大,盈利也最大。那么你如果从2013年开始用这个程序的话,其实效果不会有这么理想,如果你按这个效果去推测未来的盈利状况的话那么就要打对折了。因为短时间内不大会有这么大的波动了。

  五 怎样正确理解并使用程序化

  程序化虽然有很多优点。但是程序化也不是很多没有接触过程序化的人所想象的那么完美。

  1 程序化也不能克服人的心理因素。因为程序也是人编写的,更是人执行的。程序化只是能一定程度上去降低人为的主观因素的影响,但是无法根除。

  2 程序化的策略需要客观的去评价。没有任何完美的策略。特别是单凭单策略单品种,去实现长期盈利的目的不是很科学,除非你用的是高频。这个除外。

  3 正确使用程序化,还是要去分散资金,多品种,多策略去执行,才能相对稳定的去实现盈利。当然。盈利程度肯定不会很高很高。就我目前只能做到的也是50%左右的年收益,15%的回撤。。当然市场上还是有很多很牛的很厉害的程序化交易团队和策略。我有10年的期货交易经历。5年多的程序化交易摸索过程的结果。但是我能做到的也就是程序化收益比较一般的水平。

  总的来说程序化交易是一种趋势。但是程序化交易永远不可能完全替代主观交易。程序化交易按三年的交易时间去比较的话,可以秒杀大部分散户交易员,但是不可能去战胜主观交易的高手。但是如果按10年来计算的话,那么能胜过程序化交易的高手将会少之又少。

  无论你现在是主观交易为主还是程序化交易为主。尽量做到分散资金,多品种,多策略才是持续盈利的长久之计。

页: [1]