交易三四年后,很多人会开始考虑量化自己的交易策略。主要是因为在这个交易阶段,大部分指标和交易系统都尝试过了,有了比较成型的交易逻辑。这个时候,你可能需要突破的是自己的执行力和心态。
所以很多人都想着把自己的交易策略量化,写进交易程序里,这样可以避免一些我们自己人为的问题。2016年尝试量化自己,写了一些交易系统程序。今天我就来说说量化交易系统的步骤和可能遇到的问题。
第一步:有一套成型的交易系统。
人工交易和量化交易其实是不同的流程,但是最基本的交易模式,或者说交易系统是必须的。但是这里有一个问题。不是所有的人工交易系统都可以编程,因为在写程序的时候,你会发现程序语言的局限性。在一些人工交易中,通过观察图表来做出判断的行为是很难实现的,也取决于程序员的水平。
比如在计数浪的时候,人可以有自己的判断,判断低点和回撤的第二个低点,但是程序无法读取这些点,这样的手动程序很难量化。
因此,要想量化交易系统,就必须规范交易系统的细节,进行调试和修改,在兼顾编程语言实现的基础上,保证其盈利性。其实很难。
第二步:写程序。
两个办法:自己写,找程序员写。
如果你自己写的话。其实作为一个交易者,我最了解我的交易系统,我知道所有的细节,执行的难度等等。但是写代码和交易不一样。门槛在那边。对于一个交易者来说,自学代码是相当困难的。
之前有朋友问我如果做程序员是不是更有优势。当然,如果能自己写代码,肯定是有优势的。但目前来看,能做好交易的程序员并不多,也是因为大家面临着同样的人性问题,程序员可能更注重策略的实现,而忽略了策略的盈利性。这就是为什么一个项目团队可能会有程序员、产品经理、运营。每个人的关注点不一样,只有结合起来才能推动一个项目。
如果你让一个程序员来写。我自己不会写代码,所以也找了个全职程序员帮我实现。在交流过程中,我们也有很多分歧。更多的时候,程序员写不出我需要实现的功能,所以我们要磨合,调试,妥协,最后找到一个平衡点。。
这里有两个小问题:
程序员写代码的能力决定了这个程序的质量。之前和我第一次合作的程序员,测试的时候bug不断,面对的都是真金白银,所以测试了半年才敢开始用完整的量化程序。
有人担心,如果把自己的交易策略写给程序员,会泄露自己的秘密。其实不用担心这个问题,因为程序的参数通常是不写进去的。比如程序员知道你的交易策略用的是均线,但是他不知道你用的是什么参数均线,用的是什么类型的均线。可以在程序中设置一些手动可调试的参数标准,为自己以后的策略变化留一些调试空的余地。
第三步:测试量化程序。
把程序放到交易软件里,用历史数据测试程序的盈利能力。这个过程通常是相当长的,要比较多组参数,甚至要进行多个品种、多组参数的回测和比较。选择最佳参数和最佳品种。
最优的参数组合并不是利润最大的参数组合,而是在程序运行过程中要考虑资金退出范围、退出周期、仓位比例的使用等。
得到最优参数后,对模拟交易进行测试,可以同时进行多个品种的模拟回测,这样回测交易的数量就比较大。如果程序有bug,就会在这个回测中显露出来,然后程序就完美了,才能进入实战。
完成以上三步,你就基本实现了自己交易系统的量化。
最后,量化交易程序真的能解决执行力的问题吗?
答案是:不会,效果非常有限。
原因很简单,无论是人工交易还是程序化交易,交易者的情绪变化都是一样的。因为程序的开关在交易者自己手里。
举个例子,当你的程序进入了下滑期,账户连续亏损,看着账户里的钱减少,你肯定会非常焦虑和恐惧。随着时间的推移,你可能会暂停你的程序。如果盈利了,就忍不住关闭程序,想保住盈利。
一旦你手动介入程序,整个交易策略的一致性被打破,最终的盈利结果发生变化,其实和你手动交易是一样的。所以无论是量化交易系统还是人工交易系统,其实要解决的最根本的问题就是人的问题。
交易形式不重要,要解决的人性和心态问题更重要。