程序化并不复杂,它是一个执行我们思想的工具。
(大部分人亏钱的原因)主要是人性,人的贪婪和恐惧,以及不一致交易的习惯。
(如果到目前为止是亏钱的)第一个方式就是认输退出,彻底不要玩;第二个方式就是重仓一博,我只做一次,要么爆仓,要么暴利,但是做完这一次以后也退出市场;第三个,如果确定要继续做下去,那必须要重新调整交易理念。
(如果已经成为盈利的少数人)第一个就是长期参与;第二个就是要让复利成为你的朋友;第三就是轻仓,防范突发事件。
所有品种的行情,它不是完全随机的,而是随机的加确定的。
组合测试可以验证这是不是属于普适性相对高的方式,如果普适性较高,我认为就值得深挖。
(编程的几个要点)第一,逻辑是否合理;第二,多空语句是否对称;第三,策略参数的适应性,参数要少,尽量简化;第四,化繁为简,大道至简;第五,精细化控制。
用指数来发信号,一是避免了跨合约的跳空,二是指数是所有合约的加权平均,它的稳定性相对来说要高一些。
对于今年的行情,我们应该用中庸的心态来对待,保守的资金管理来应对。
我的整体程序化交易理念是中庸,遵循逻辑,先有想法,再去编程,编程完以后,我们才知道所以然。
做小周期比做大周期的难度更大,策略失效的可能性更高,需要经常调整,而且对市场波动的特征要有非常好的敏锐度。
计算机始终如一地执行着我的思想,让我轻松舒服地在这个市场上存活。
我的资金管理理念只有一个,就是资金曲线在回调的过程中,我只加仓,不减仓。
我认为回撤到一定程度,就与震荡到一定程度总要来一波行情的道理是一样的,所以在这个过程中,反而是一个加仓的好时机。
量化交易者一定要找到属于自己的交易风格,不能评判哪个好或哪个不好,适合自己的交易策略才是最好的。
(想要做好程序化)第一个必备条件是热情;第二个是细心;第三是要有客观的逻辑性。
视频节选
那如果已经成为盈利的少数人了,那我们要怎么做?第一个就是长期参与,长期参与就是我们要做更严谨的资金管理,因为在这个投机市场上最根本的就是你要活着,活着就是不要爆仓,也就是要有足够的资金可以让你生存下来。第二个就是要让复利成为你的朋友,不要动不动说我一年要赚个一倍、两倍、三倍,这个其实我觉得很难复制,去年有一个投资高手,1500万赚到10亿,我是羡慕嫉妒,但是我知道这不属于我的风格。第三就是轻仓,防范突发事件,如果我们已经有一套相对稳定盈利的赚钱系统,我们反而要保守一点,能够长期参与,不要让系统性风险发生在我们身上。
章位福:我从2010年开始到现在,过程中当然有波折,但是总体还是以平均每年以30%的复利速度在增长。要做到稳定盈利也不能完全说就是用程序化,不能说程序化就能稳定,没有这种事情,还是要找到市场最根本的一些东西。我总结起来就是寻找确定性、剥离随机性,这个是非常重要的。什么是寻找确定性?在我的观念里面,所有品种的行情,它不是完全随机的,而是随机的加确定的,这组成了品种的行情,我们通过交易的经验,或者通过我们所学习的一些东西,或者向一些优秀者学习,我们找到一些确定性,我们去交易这些确定性,那交易就变得相对可确定。
章位福:目前我主要就用第三个,就是供求关系的确定性,价差这一块也在少量尝试。我们做程序化有个好处,策略可以有很多套,价差的确定性现在是有在做,还有一个波动极值是已经把它跟供求关系确定性融合在一起了。就相当于是我能够发现的一些特征,如果我能够把它变成我的交易策略,那我就会这样去做,并且经过测试。
一旦找到这个确定性的时候,第二个是开平仓的条件是什么?举例来说,我确定性行情是找到了,那我要把它量化,因为计算机不可能说凭感觉去做,它应该要怎么样呢?比如说收盘价或者最高价突破什么位置,要把这个确定性描述成一个计算机语言,这个就是开平仓的条件设置。
第三个就是策略源码的编写,待会我也会具体展示。
第四个,我们做完以后,不要立刻出测试报告,一定要先核对信号。就是说你的程序信号是不是跟你的思路信号是一样的?你两个信号不能有偏差,如果有偏差就代表有出入,要么就是编程有问题,要么就是思想上面可能有哪些还没表达清楚的,那我们就应该先核对一遍,先不用看测试报告。我发现很多程序化交易者都喜欢随便拿一个策略就看测试报告,看了发现很赚钱就很开心,我觉得这样不行,初学者比较容易犯这样的问题。
第五点才是测试报告,我主张测试报告前期应该是组合的。很多人写程序就想找一个品种,比如螺纹钢,大部分人都喜欢用螺纹钢来做程序编写测试,但是我们会发现,一个放在螺纹钢上很漂亮的曲线,放到铜上就是个稳定亏钱的曲线,这样的策略你敢用吗?组合测试可以验证这是不是属于普适性相对高的方式,如果普适性较高,我认为就值得深挖。但是我们有时候写程序时也不会把一个想法想的太复杂,能够用一个代码搞定的,不要用两个代码。把所有材料都扔进去,几千行策略,那就是一团乱了。要保证我们的初心是寻找确定性。
第六点是看了这个测试报告后,我们可以思考有哪些地方可以改善,可以升级,那这就是增加一些过滤条件。
第七点是我们的思想一致了,测试报告也出来了,我们要做的是最终的优化。因为我们还是要看到运用的参数到底是不是盈利平原区域,不要取尖峰区域。
第八点就是模拟,或者少量实盘。这就是完整的步骤。
这些步骤都是我平常在研发策略时一直在遵循的,有不同意见的也欢迎大家指正。
多势是多头趋势,我们定义的是“四周法则”,前20天的新高;空势是前20天的新低,20天均线就代表中轨。我在指标中就运用了这三句话,但这三句话里包含了我刚才所说的思想,那这三句话就有你的灵魂在里面。有了这个指标后就开始构建开平仓了,我们的标准是收盘价跌破下轨,就做空,收盘价涨到中轨以上就平仓,做多也是如此,周而复始做这个动作。
有了这个以后我们就应该先检查策略,看看信号准不准。很多人看到放到实际图形了,觉得收盘价的位置太低了,还不如自己早点开,就会陷入这种局里。我的观念就是其实我们根本不知道后面的走势,如果就是在空头趋势里,为什么不开呢?所以对这个事情不纠结很重要。但是如果这样做,会发现在尖峰的时候非常吃亏,利润回撤很大,不过这也是均线的特点,相对滞后。如果前期出现了急冲的阶段,均线来不及跟,最终还是回到均线的位置平仓。我们可不可以这样思考,保证一定利润果实,把尖峰这块做一下简单的处理。
这就可以在第三个模块中桌,加入止损条件。这块止损模块表达的意思就是找到20天平均的ATR,ATR的3倍作为跟踪止损,其他条件不变。应用上去后可以看到,现在就不一样了,我们应用的是指令价,既然要出逃,那么指令就要快一点。开仓可以慢一点,因为机会有的是,但是钱就那么多,平仓的时候要快一点,有一个安全带在里面。这也有利有弊,原本可以一口气拿下来的一波行情,因为跟踪止损就会断掉。但是我们总体是在求平衡,不能找到一个既想要拿到大波段,又想要小止损的方法。
这样还不行,我们刚才只是在螺纹上测试,我们刚才提到要组合测试。但是比如1手螺纹钢,1手橡胶,完全不对等就没有意义,所以就再增加一个模块进去,同等价值量开仓。你就会发现整个过程中是不断有思想注入进去,而且这些思想都要有逻辑在里面。举例来说,取每周周一开盘价,用10万块钱5倍的杠杆,如果不足一手就用一手做。加载上去后,橡胶是3手,螺纹是17手,这样才是有意义的组合测试,否则盈利是不相等的,亏损也是不相等的,所以等权很重要。
再接着是品种选择上,有些品种不活跃你根本不会去做。那就也不用去做测试,所以我们要增加一个模块,什么条件开仓,什么条件不开仓。在量化交易中,流通性是最重要的标准,所以我们要加入判断流通性的模块,有了这个模块我们就知道什么品种是开仓的,什么的不开仓的,那就可以把全市场的品种都扔进测试报告里,如果没有达到标准就不会有信号。可以看到螺纹钢是全部能做的,因为成交量大,再看稻谷就不会有信号。再看胶合板,由于这个品种刚上市的时候有成交量,所以在前期有交易,后面没有成交量了就不交易了。于是我们在开仓的地方,加一个条件,开仓所有条件符合后成交量达到五万手,平仓的时候低于一万手就平仓。这就是要让电脑来执行我们的思想,回到我们今天的主题,还是要做一个有思想的程序化交易者。
章位福:在日线级别上面,我实盘也用指数来做,用指数来发信号,一是避免了跨合约的跳空,二是指数是所有合约的加权平均,它的稳定性相对来说要高一些,所以我认为这个信号的要比主力合约确定性高,但实际交易我是在主力合约上做。整体测试下来看,去年有占到便宜,今年吃到亏,赚赚亏亏,亏亏赚赚,很正常。
章位福:我觉得主要是去年的行情太好了,特别是焦炭期货,去年焦炭有一大波行情,从起点到终点几乎是一个很淋漓的大趋势。有趋势就有震荡,而且震荡一定是大于趋势的,所以我觉得今年出现这样的行情也很正常。我们也不去预判,因为有趋势的时候赚钱,震荡的时候亏钱,这就像自然法则,赚钱的时候要想想亏钱的日子,吃饱的时候要想想挨饿的日子,就是这个概念。当趋势来临时,我们就可以赚钱,我们只是抓取市场上确定性的机会,包容一些错误,如果我们不希望有错误,我们不去包容市场,就会非常难做,因为没有人可以做到胜率100%。
对于今年的行情,我们应该用中庸的心态来对待,保守的资金管理来应对。因为在行情不好的时候,不是谁的策略好谁就活下来,而是谁的资金管理更严谨谁就活下来,但是在更严谨的同时,有行情的时候就赚得很少,这就变成了资金管理问题。当然,也不能说有行情时我要赚很多,震荡的时候我要亏很少,这非常难,我们取一个中值就可以了。所以我的整体程序化交易理念是中庸,遵循逻辑,先有想法,再去编程,编程完以后,我们才知道所以然。对资金管理、精细化处理、策略的构成也是一样的道理。
章位福:对,策略的回撤与我们所选的交易周期是有关系的,举例来说,虽然今年是震荡市,但如果我们切到一分钟上看,肯定是有行情的。如果我们的策略能分布到小周期上,那么可能会有盈利。
章位福:因为是他的曲线,我也没有太大的发言权。但是从我个人的角度来讲,我觉得是因为他严谨的作风,策略的分散化。他有n个策略,并且做的是小周期级别,我觉得做小周期比做大周期的难度更大,策略失效的可能性更高,需要经常调整,而且对市场波动的特征要有非常好的敏锐度。我们现在看小周期在吃肉,有时候小周期也在看着我们吃肉,去年那一波行情,我们的账户在屡创新高,做小周期可能在盘整,所有我觉得每种方法都有利有弊。
做程序化交易有个最大的优点,当我们找到了确定性,不管是盘口的确定性还是宏观面的确定性,如果我们能把它写成策略,都能让计算机来执行。程序化只是一个工具,我们把这个工具发挥出来,就能够给我们带来非常强大的一个资产配置组合,这种配置组合可以让我们突破资金量瓶颈。举例来说,一个手工交易者,他从做10万变成做100万是一个坎,从做100万变做1000万又是一个坎,因为他操作的资金量不一样,他每天看账户的涨涨跌跌都会看得心惊胆颤,这会影响他的心态,所以手工交易者会有一个资金瓶颈。
做程序化交易,没有太大的瓶颈,而且它有科学的逻辑之后,就可以形成大量的组合,分散到各个交易策略,优势变得越来越大。我经常感叹,还好做了程序化,计算机始终如一的执行着我的思想,让我轻松舒服地在这个市场上存活。
三水胖树的策略中,还包含着优选品种的逻辑,在程序化交易中,优选品种肯定比所有品种一锅端更好一点,但这也有运气的成分在,有时候选对了,曲线明显就优于平均水平,选错了,反而要吃点亏。
总结就是小周期级别交易,多策略,分散化,优选品种。
章位福:不会,我的资金管理理念只有一个,就是资金曲线在回调的过程中,我只加仓,不减仓,当然这也取决于我前期保守的资金管理。我认为回撤到一定程度,就与震荡到一定程度总要来一波行情的道理是一样的,所以在这个过程中,反而是一个加仓的好时机。
我基本上不会去改策略,除非我的逻辑改变,我的思想有新的认识,这时改策略我觉得很正常。总之,由上至下,先有思想,再有指标,再有开平仓,然后再有信号,一个步骤一个步骤的做下来。
章位福:我觉得最大特点是至简,我的实盘策略与我的源码差不多,基本就两三句话。普适性是我最重要的一个考量指标,有了普适性以后,它能帮助我在回撤的过程中仍非常自信,坚信策略没有问题,完全可以度过困难期。
所以,我策略的特点是:第一,至简,交易代码非常简化。第二,普适性特别高,我不去追寻在特别好的位置买入和卖出,只追寻平均,里面最大的特点是在趋势的必经之路埋伏,有的人说宁可错过,不可做错,我的逻辑就是宁可做错,不可放过。虽然逻辑不一样,但我觉得都有利弊,其实很多时候就是寻找一个平衡点。
量化交易者一定要找到属于自己的交易风格,不能评判哪个好或哪个不好,适合自己的交易策略才是最好的。因为你会忠于这套策略,忠于这套理念,相当于这套策略有了灵魂,有了思想,它才能与你言行一致,知行合一,所以,我的策略里面没有太多的圣杯理念。我的理念就是大道至简,大道至简不是偷懒的概念,它的意思是说我的逻辑是对的,我能够用一句话表达,就不要用第二句,能够用一行代码写的,就不要用十行代码去写,追寻一个模糊的正确。比如去北京,坐飞机可以去,坐高铁可以去,甚至骑自行车都可以去,适合自己的就是最好的,但是北方的方向一定要找对。如果方向没有找对,那就南辕北辙了,所以交易理念上,我觉得这才是关键,不是神奇的圣杯,圣杯是不存在的。
章位福:新的策略主要是异构,比如现在我将供求关系作为我交易的一个理念,我能不能找到其它一些完全跟供求关系不一样的理念,并且这个理念在行情里也有确定性因素,若能找到,它将成为我开发新策略的方向。
像刚才展示的那套策略一样,其实绩效与我的实盘差不多,相同的逻辑去开发,新的策略好像都大同小异,没有办法做到有效互补。如果有异构,我在日线级别上可能在回调,而另外一个策略可能在赚钱,这样我的资金曲线可以更平滑一些。这是我以后开发新策略最主要的一个方向,主要就是异构。
章位福:对的,趋势不好做,等觉得好做了以后,之后肯定又是不好做了。有个段子,炒股高手去证券公司门口数轮子,轮子越多的时候,就代表是出场的时候,轮子越少的时候,就代表是进场的时候。有的时候又说,现在趋势不好做,趋势不好做的时候,往往就是好做的时候。就像去年一样,大家都说趋势很好做,今年肯定就不好做了,不要陷入一个主观因素里面。
章位福:学编程是必不可少的,但是也别把编程想得太复杂,只是几个函数而已,对于这个函数,我觉得小学生的水平都可以完成。
第一个必备条件是热情,晚上想到一个想法,就会瞬间爬起来写。第二个是细心,前两天我给刚学习程序化的朋友提建议,打开交易界面的时候,所有的按钮都去试一遍,所有的菜单都去试一遍,跟着教程从零开始学,这就是细心,要把平台研究透了。第三是要有客观的逻辑性,不能赚钱就大喜,亏钱就大悲,计算机没有感情,你用有感情的想法去做,那就完了。