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