如何选择程序化交易模型
一、程序化的理解
如何认识程序化?
不管是汇市还是股市,市场价格的波动都可以分为两种,一种是大环境下的大趋势发展,另一种则是大趋势下短时间段的震荡。
而正是基于这种市场的价格变化延伸出两种不同的基础交易模型:以研究趋势为主的趋势模型和以研究震荡的震荡模型。
当然一般的程序化模型都是将两者结合起来的,就像广播体操,学习的时候会分:有上肢运动的学习和下肢运动学习,但真正操作的时候必然是相结合的。程序化模型将趋势模型和震荡模型的结合程度是考验一个开发团体的基础要求,但是连广播体操都第一代、第二代、第三代,所以程序化也是需要我们不断去完善的,不可能有完美的存在。
我们可以从变化中寻求某些不变的规律,但是企图用不变去推导出变化的东西,显然是无稽之谈。
程序化重点在于程序化模型,程序化模型有好坏之分,程序化赚钱的前提是有好的模型,不好的程序可能让你亏得血本无归。而程序赚钱的关键是坚持的执行,个人在执行上可能会受到情绪影响,而程序赚钱的精髓就是在确定最终使用模型之后,彻底的放弃你对金融市场的一切理解和交易技能。就像武侠小说里说的,想练成最上层的功夫,就应该先废掉所有的武功。
二、程序化模型辨别
如何去选择一个程序化模型
程序化模型是从变化的市场中发现某些不变的因素,所以时间就显得特别重要,因为在某个点,基于这个点上所有的东西都是不变的。而时间越长,这种不变的东西就越少,存在着获利的机会也就越低。
如果某个EA公司找你说,他的EA能够让你在短时间内获利,那么你要仔细考虑了,短时间获利的说明其本身就是不稳定的,可能这一秒在获取巨额利益,下一秒就亏空。如果对方又能拿出不错的图形或者非常漂亮的收盘测试结果放在你的面前,你又当如何说服自己是相信还是不相信?我们要从下面的几个方面去考虑。
1.测试时间:一个好的程序化必须经得起时间周期的测试,如果一个程序化,结果很漂亮,周期却只有一两个月,不可信;
2.使用资金:很多人贴出来的漂亮测试结果,使用资金常常是80%或者其它百分比,但这些都是不合理的选择,因为金融市场资金管理很重要,在行情好时候,资金使用越高,收益越大,行情不好时,资金使用越高亏损越大,但我们无法去判断接下来的行情会如何,所以,历史测试的结果使用百分比的开仓方式是不合理,这也就是为什么,有时候会出现,资金使用率为80%时,测试结果是亏损的,而使用率为40%时又是赢利的。总而言之,资金使用时应该选择固定的手数进行测试,不管他的行情如何,永不加仓或减仓,来测试一个模型更为合理;
3.测试方式:开盘价和收盘价测试均有其不合理性,趋势模型一般以趋势逆转点为开仓信号,故较为准确的是:出现指令的价位。
测试结果的分析:
a.指令总数:也就是信号数,过高,说明震荡行情过滤不好,过低,说明风险大;如何判断信号数是否合理呢?那就只有不同的模型在同样的周期下的一个对比了;还有一个最简单的方式就是将指令总数/有效交易天数,以日内短线为例,一般一个有效交易日的平均信号数在2-5之间(此数据仅供参考);
b.利润率:总利润不用看,只看扣出最大利润的结果,必须为正,而且测试周期越长利润率应该越大,很多模型,测近期不错,测远期就不行,所以测试时应该尽量的去测能测到的最长周期。(当然因为行情关系也可能出现,长期比短期利润率低,但总体而言,周期越长利润率越高,才是好的模型的测试结果)
c.正确率:其它条件都完全一样的情况下,正确率越高自然越好,但也不用为了看到一个高正确率的模型而心动,也不用因为你自己模型的正确率低而担心,一般的正确率能在45%左右就不错了,因为程序化的本来意义就是赚大亏小,例如,趋势模型在震荡的时候正确率自然会低;
d.最大亏损率:如果你是选择的固定手数,比如10手进行测试,你的最大亏损率最大应该不能超过10%,当然,如果你选择的测试手数多,最大亏损率可能有所提高。如果你选择80%的资金使用率,可能亏损会更大,当然也会有亏损的不大的测试结果,这往往和你的测试周期中的行情的一定关系,所以不值得过于依赖;
e.空仓时间:以日短线为例,空仓时间不能太高,太高,必然会错过大行情,当然,这一项不是最重要的,如果你空仓时间长,利润也高,错过就错过吧,错过不是过错,没赚到也不存在亏损的风险。
小结:
测试结果分析不能只看某一个数据,需要结合起来一起分析:指令总数不能多也不能少,周期越长利润率应该越高,正确率45%以上就可以接受,最大亏损不能过大,空仓时间可以自行把握。
如果一个模型做到了以上几点是不是就算一个好的模型了呢,基本上可以算了,但最重要的是我们还需要结合信号图形(此点需要一定的程序化经验,并不一定看上去好的模型就是好,当然看上去好是前提,如果看上去都觉得一般了,那肯定是不行)来分析,此外,还要看到模型里是否有未来函数,如果是日内短线,信号就一定不能消失,每天的跳空缺口需要技术性的回补等等其它问题都是分析一个模型好坏的理由,但是,一个好的模型是不怕任何测试与分析的。
三、程序化交易的执行
这一点没什么好讲却又不得不讲,很多有多年经验的操盘手,甚至一些机构,常常会对程序化交易提出一定的质疑。比如有人认为程序化交易好,就准备了资金进行了程序化交易,结果使用该模型交易时,正好碰上持续亏损,结果很可能就是决定放弃程序化交易。
这就是一个典型的程序化执行的例子,程序没有人性,我们在使用时就更不应该加入人性,如果你决定使用程序化就给自己一个时间期限(不管是真钱也好,模拟也好),时间不能太短,如果短也可以,必须在这段时间中,你要自己能分析出,是不是都能遇上基本上所有可能的行情,比如,测试三十天,遇到过十天的震荡,也遇到了好几天的大行情,以此来分析程序的好坏;绝不能因为几次的使用结果不好而去否认程序化,也不能因为几次的使用成功而完全信任,必须要有一定时间的观察与模拟,然后再到真钱的尝试,时间长短是小事,关键是是否经历过大部分的行情,从而选择一个最适合而不是最完美的模型进行自己的程序化交易。
一旦执行,你就应该忘记所有的金融市场的条条框框,你就是一个傻瓜执行者,聪明人在金融市场上不一定能生存,傻子在金融市场也不一定被淘汰。总之,没有完美的程序化,不要怀有追求暴利的心态去使用程序化,做一个合理的模型,成为一个傻瓜执行者,你就能变成一个轻松的富翁。