设为首页 | 加入收藏 | 今天是2024年11月15日 星期五

聚合智慧 | 升华财富
产业智库服务平台

七禾网首页 >> 股票/期货/期权专题 >> 热点期货专题期权专题

章位福:程序化交易改变了我的人生命运

最新高手视频! 七禾网 时间:2013-12-20 00:08:21 来源:期货中国

还有一个就是交易连续性的优势,策略始终保持毫秒级的运算级别,也就是说不管你是什么策略,现在我们都是一千毫秒,也可以做到五百毫秒来监控。不管是日线的,比如说日线是一个月出一次信号或者说半个月出一次信号。那么人来监控,那我想绝对不可能百分百执行,为什么,因为你不可能一直盯着它,一个月就盯了一个月就下了一个单子,那不可能的。但如果说用程序来做,那它始终就这样监控着,不管是一分钟也好,还是要日线级别也好,一天交易十次也好,还是一年交易十次也好,它都是始终能完美的运行,可持续的关注,这我认为这人工跟这个就是不一样的。当然人工也有人工的优势。

第五个是交易策略的回测性,可分析策略在历史行情中的表现,这我认为做程序的一个重要的一大原因。人工在做的就是我感觉这思路好,那我就开始用实盘,因为你不知道这个东西到底好不好?但是做程序它是这样的,我感觉这个东西好,我先能写出来,写出来以后,我再用历史的N年的数据来测试一下。在测试的过程中,它确实是赚钱的,那我觉得就推算未来赚钱的可能性就会比较高一点,如果说你这个策略感觉比较好,写出来曲线是曲直向下的,那代表什么?代表就是你赚钱的可能性也会比较低。所以我觉得测试报告也比较重要,

对我来说我觉得程序化太好了,因为我不是全职做这一块的。我平时在研究,研究完以后,把策略丢到数据库里面,在用一个连接,连接的一个金字塔里面的一个策略服务器,把这行代码丢给我的助理告诉他今天你上线就可以了,他就可以运行了。那我在做的时候,我在做他每天传数据给我的时候,收盘后传数据给我的表现。这样的话我很轻松,就像我现在做实业一样,我也觉得我现在做的差不多是程序化了。比如说我到国外去玩个几天,前段时间到泰国去玩了一周,家里也没发生什么事情,都是自动化运作,交易上面用程序,找一个助理看一下信号,实业上面我们的分配机制,我们的店长自动运行,出了问题找什么,我觉得这个问题很重要,对我们人很轻松。

我们花比较多的时间放实盘策略编写步骤。这个也不是标准答案,在座的各位应该是高手比我厉害多了,那我在编写实盘的一个策略步骤过程中第一个是想问题,先想,先问自己,我想捕捉市场哪些行情特征?就是我想做什么,我要什么?这是我第一个要问自己的问题,那也就是说我到底是要哪一段行情的,是震荡的,还是趋势的?如果是趋势的我想吃哪一段?是起点的位置,还是中间部分?那任何一个方法都是双刃剑,有利必有敝,也就是说如果我从起点开始,做进去。我要吃,从起点开始吃一直吃到底的这种行情,那势必你试错的成本就要高很多,如果你只吃中间部分,那你的过滤这块要注意了。所以就是要问自己想捕捉什么行情。第二个我的开平仓条件是什么?我要吃这些行情那我要利用什么样的一个计算机语言来做呢?如果我用MACD可不可以,我用均线可不可以,我用波动率可不可以,我用突破可不可以,都可以,那它也没有说绝对MACD好,均线好,没有,它也是双刃剑,有利必有敝。第三个,就是策略的原码编写,我们在执行过程中,我们在编写的过程中的步骤,第一步干嘛,第二步干嘛,第三步干嘛,都给它一一的规划。假设这一步,我们实现了,那接下来是什么呢?一定要做件事情,就是核对信号与思路是否一致,什么意思?我现在信号出来了,跟我这个思路是不是一致的?还有一个叫无未来,什么叫无未来,就是说没有欺骗自己的东西。如果说用一个未来函数那你的曲线会非常的漂亮,但那种是中看不中用的。我们一定要遵循一个真实性,因为我们不是拿来展示的,不是拿来炫耀的。经常在群里面看到很多都是一年赚个一两百万,那种我觉得除非他真的实盘真的跑出来,那这个人可以厉害。但如果说他仅仅是发个测试报告给你看,那算什么?我一捞一大把,这一天赚十万元没问题,用未来函数嘛。所以到这个过程中我们的信号和思路要核对一下,至少你的信号跟思路的一个准确性。第四,测试模板导入,这应该是我的独创吧,我不用金字塔的测试报告的,我很多数据都是自己写的,我也不喜欢那种测试报告,因为测试报告这个东西不是很真实。我就自己写一个模板,然后导入进去,任何一个策略写出信号以后,导入测试报告,一进去以后所有数据就出来了,那多爽,而且找到自己想要的几个关键性的数据,适合自己的。比如说你最看中的什么,那数据就给它编写出去,你的个性化的一个模板。第六个就是增加过滤条件或优化策略,也就是说第一个我们是这是一个思路;第二个,我们要用什么指标来执行;第三个那就是我的编写过程;第四个我核对信号和我的思路我的指标是否一致并且确保它是一个无未来函数的一个模型;第五个我就开始导入测试模板,导入测试模板以后出现了一个叫做数值,这个策略在未来,在历史过程中它到底是赚钱还是亏钱呢?曲线是什么样子的?好,那接下来我们就开始反思,我们要开始反思什么?这个感觉没我们当初想象的那么好,那我能不能再做一些过滤呢?或者优化呢?可不可以,那到后期我们就可以增加一些条件。第七步,就是实盘模板的导入和或者是模拟测试或者是少量的实盘。那我遵循的是,写出一个模型,以前我是要跑模拟的,现在我是不跑模拟了,我直接上实盘。那上实盘的过程中我们就很少,先一手,做做做做,两手,再做做做,三手、五手这样子,是这样一个过程。那这样做的话,为什么我现在一开始就上实盘,因为我知道我自己写的过程,我写的东西,我知道我这个不会出什么乱子。如果人家给你一个很漂亮的信号,那你拿了你敢用吗?不敢用吧,因为你不知道他里面写什么东西,或者是不是符合你,好,那这个就是我们七个步骤,接下来我们一步步开始来实现。

接下来大家可以看到在这里,我编辑了一个用户名,这里一个文件夹,文件夹里面有步骤。第一个,我想要吃什么行情,那我就需要先把它技术指标做出来,那我现在说做一个趋势的行情,那我们看,在编写过程中,我就省略了,因为时间有点长。大家可以看到这个像什么?MACD是不是,有点像MACD那我们就认为是MACD。那么我在下面这里画了一条线,这条线比较粗,是绿色的,在上面画的一条红线,这条线,是红线和绿线,这样看的话,你是根本不知道它是怎么组成的,或者怎么写出来的,那我们来看一下源码,源码很简单,第一行数字就是设定了一个参数,在编写的过程中,一定是要有参数的,其实这个程序只有一行代码,就是这条多分线,我把它定义成多分线,它的运算方式是什么呢?运算方式是50减100乘以前期最高,这个是什么前期最高?是35天的前期最高,再减去它当前的一个收盘价,除以最高价前35天的最高减去前35天的最低,那它就会得出一条多空线,这条多空线我用柱状图把它画出来,那它出来就是这个。就是这个很像MACD,那这个思路是怎么走来的?就是我在想MACD,如果用MACD容易出现一个问题,我们都知道MACD是由均线组成的,那么均线的话容易出现一个问题,MACD经常出现背离,像这种行情,上涨的行情中,它反而是跌的,原因在于它这一段短期均线上穿长期均线,所以它就会反而是这样走的。那我认为这就容易出现一个捕捉不到该有的行情,那我们就给它用了一个用价格来画一条类似MACD。这是我们的第一个步骤。接下来我们在这做了一个极值,极值就是上面这条线和下面这条线,做多线和做空线永远就是45,因为它的这条多空线,它永远是在最高值是在50,最低值是就是负50。那我做多线就是45,做空线就是负45,我们先不评论这个指标好坏,我们再继续。接下来我们开始构建开平仓,构建开平仓很简单,当我们的收盘价收完以后,这个做多线在45以上,我们就开多,在负45以下,就平多,翻空,就这么简单。那我们看一下,现在信号出来了。接下来在我们再做一件事情就是检查,就核对信号是不是我想象的,做多的那我们来看一下,这个刚好,可以看到这个是做空线,就是开空,是不是,这最下面的多空线是48,负48那就是小于负45了,那我就应该开空,之后这边的话大于45,那我们就开多,如果真的是在写模型过程中我们是要从有效数据中开始一个一个的去检查。我通常是写完以后就开始,这样子开始推,一直推,推到哪里?这里,好像有一个小于极值的,那这里有没有出一个信号,没有的话,那就有问题了。那接下来我们再看一下,这里面实现的源码的全过程。首先我们还是一样的设定参数,为什么要设定参数,是因为我们在编写的过程中最终还要有一个优化的过程,就是还要让计算机把所有的参数去跑一遍,看看出现什么情况,那我写程序的过程中,通常我会先在前面加中文,这个就是注释,参数模块,这个板块。接下来看一下中间的变量,中间的变量其实就是一条语句,就是多空线,还有45的话就是一个极值,就这条多空线最重要,就这一条,完了以后我们遵循的就是计算机运算方式就是先平仓后开仓的原则。先平后开,开始写平仓语句,平多,如果有多单,会多空线小于作多线,那么我就开始如果有多单我就平掉,我用什么平呢?我用C平,那代表是没有未来函数的,那同样的,平空也是一样的,开多如果当前是空仓,那我就达到这个条件,那我就开一手,做空也是一样的道理。写完以后,我们进行信号检测,没问题。接下来再再进入第三板块,导入测试模板。导入测试模板先给大家看一下测试模板里面到底导入了什么?上面的源代码全部没有改,还是跟第二步是一模一样的,跟上面的是一模一样的。接下来就是最下面的是我额外加进去的,叫做测试报告数据分析变量。最下面一段代码主要呈现出几个数字呢?就是在这里显示的,测试报告的数字显示,这些都是为了达到下面这些数据的一个中间变量。那么第一个我要它从我有效交易日以来,我总共交易了多少次,我要知道这个交易次数,第二个我要知道上一次的开仓价格或者平仓价格;第三个,我要知道我从历史以来我的最大回撤是多少。第四个,我要知道总盈利除以总亏损是多少,还有我要知道它的平均单笔利润是多少,因为我除以它总交易数,而且是减掉100万,那么当天赢亏也要写进去,净利也要写进去,这个就是测试报告。接下来我们在这里可以看一下,我们的测试,因为是收盘价模式,我们用万分之一的测试法,如果说按我现在用的模板它是用万分之零点零五的来测的,那我们用万分之一来测。之后我们开始,也要应用上去,应用上去以后它的曲线就出来了,这曲线一般,红色这条就是资金曲线,还有红色这条很细的就是我们的最大回撤,信号出来以后大家可以看到,总的从这个位置到这个位置我们的交易次数是535次。最近一次的信号价是2404点,最大回撤是16万9,赢亏比只有1.17,平均利润只有1000块钱,当天赢亏上周五赚了一千块钱。接下来,我们就开始增加过滤条件,如果这种正反手模型写进去,肯定容易出现一个问题是什么?因为你是永远在实施策略,出现这种的问题必不可免,就是这种曲线一直亏一直亏的这种。为什么,因为任何策略都有不适应的时候,在你不适应的时候你亏的是非常快的,那我们为了解决这个问题就要让它增加过滤条件,也就是我不要让它永远在试,我要让它有休息的时间。原则还是这样子的,那我们怎么做呢?假设我们增加的过滤条件是什么?这里写了一个参数,叫做过滤参数,上面的还是没有变,我做了一个在10个周期里面,多空线小于做空线,是有两次应该做出过滤参数是两次,那么我就开始平,否则我不平,就是这么一个简单的过滤机制。当然我们在实盘中可能会增加更多,那下面的测试报告还是会继续保留。

接下来我们进入第四步,第四步我们进行应用。可以看到,又出来了不一样的曲线,因为被过滤过了,那还是一样的,出现的问题是有峰谷而且会疾速下跌。这个疾速下跌是什么?我们再看看,从这个位置做进去,一直到这里才平,有人说这里理论来说还多了。原因就是被我过滤掉了,这里没有开多,因为它的10个周期里面只发生一次,那在这里它为什么开呢?因为在10个周期里发生了第二次,所以才开。在接下来,这样曲线好像还不行,回撤过大,由原来的16万变成26万,接下来我们在增加一个止损,就是在原来的这个逻辑里面我们给它增加止损。这个止损是一个跟踪止损,我们跟踪止损是用百分比来算的,用一个非常简单的一个数字就是1%,跟踪止损的一个1%。那我们进入第四步,加了一个1%的跟踪止损,出现的数字是总交易数是497次,信号价这个不重要,最大回撤6万1,赢亏比由原来的1.1增加到1.5,平均利润1800,而且可以看到,这个赢亏比发生了很大的变化,还有次数也发生了减少,大家可以看到第三步的时候我们就是一个裸的思路,很裸的一个思路,非多即空,第四步增加了这个条件以后,从500多次的交易次数,减少到300多。那就相当于交易量在减少,但是它的赢亏比很少,单笔利润提高了一点点。那我们再看,如果说增加了呢?这赢亏比,因为我们说赢亏比是最重要的,还有一个最大回撤,由刚才的最大一个亏损,最大回撤是26万,现在减到6万,赢亏比由之前的1.1增加到1.5,平均利润由1000增加到1800,交易次数反而比刚才过滤的更多了,原因是什么?原因是我们平仓更松了,平仓的多了,所以开仓也容易多,但是它在场的时间是减少了。大家认为这样的曲线怎么样?不错是吧,就一句话,那有人说一句话真的能写出模型吗?实践起来画了75行,这75行都是废话或者都是执行或者都是你要实践这句话的过程用了75行。而且大家可以看到,我们这个是没有未来函数的,不可能有未来函数的,我可以直接实盘的,为什么这样子呢?你看到这一点,我就把它改掉了,用O价,有人会说O价不是未来函数吗?大家看到前面有个ref,它不可能会少,就相当于前一根周期实现了我在下一根K线的开盘价格,我为什么要这样做?因为我有一个跟踪止损,我的跟踪止损一定是动态的,每一秒钟扫描一次,不是走完K线,因为走完K线容易出现一个问题,就是被秒,光大事件那种,如果一分钟它可以涨50个点,里面有几十手的话,那就完蛋了。那我们就必须采用指令价模式,用指令价我们下面也必须用指令价,那我们就得用O价,那下面就是测试报告,认为这种不错啊,那这种失效概率有多少?不知道,是吧?但是你让它长期做,会大亏吗?我认为也不怎么会大亏。

接下来我们再看测试反转一下,K线反转。这条线,红色线,它是向上的,再接下来,我们再来一次多周期的进行,因为我们用的是当前K线的前35周的最高、最低做,所以我们多周期应该可以看出什么样的效果。看看10分钟的,净利润应该有56,K线反转就不用看了,反正是对称编写的,它一定差不了,15分钟的,是这样的;30分钟的,是这样的;1个小时的,这样的;5分钟的,还有3分钟的。那至少它都是有赢利的,当然很多人是追求完美的,认为这种曲线太差了,比如说我们来看一下,我们来写个未来函数,写个未来函数直接在这边加个O,就闪到你眼睛都睁不开了,就这样是不是很漂亮,这种曲线就很漂亮、完美是吧?咋会亏呢?这期货市场不是指日可待成首富了吗?所以这种思路一定不能分享出去,是吧?可以看到它的赢亏比是多少?3.16,总交易数896,而且平均利润3700,爽歪歪了。最关键的它从开始到现在赚了338万的利润,而且最大回撤是多少,才5万2,是不是亮到眼瞎,但这个是不可能的,没有这种圣杯的,所以有人说胜率可以达到百分之六七十,我认为真的趋势策略能达到,就是你正常一点的不要加一些小窍门的那种,你就把这个35到45之间吧,那有些趋势策略它可以达到百分之五六十,我也就可以写出来,跟大家说一下怎么写出来,利润没增加,胜率上去了,怎么写的,就是我们把硬性止损,比如说我们的硬性止损是10个点,我们在写的过程中涨了十个点以后,我们就拉到成本价附近,那我不拉成本价,我就拉到比成本价高一点,高一跳或者高一个点,这样子的话,长期以来,它一定是大于50%的胜率,但那个没意义,胜率是高的,但是没意义的,跟胜率百分之三十几是一样的。

还有一个环节,就是模拟测试或者少量实盘。在这里我也写了一个模板就是直接的,其实现在对于我来说,我只做一、二、三、四、五,到五步,其实第三步我就跳过了,因为这个模板我已经有了,第二步我也跳过了,这个模板我也有了。这个出来的就不是信号了,就直接的来一根线。这根线是什么呢?这根线就是我要交易的东西,这根线,当这根线为1的时候就代表我当前的仓位是一手;当这根线是0的时候,就代表当时是空仓;当这根线是-1的时候,就代表我有一手空单。这个我沿用金字塔,分享的东西就是后台模板,当时给它加了一个改良的东西就是我有测单功能,这个就不用详细讲了。比如我这个策略我现在觉得表现不错,我要做两手,在这个地方只要改一下,乘以二,它就可以了,就两手,实盘过程中,那这边就是两手。我如果说我有N个策略,那我干嘛呢?在这边重新起一行,CC1、CC2、CC3一直到CC10到后面CC全部加从CC1加到CC10,下面都不用动了,下面测帐户给它动一个,完了以后抄价也不用动了,就是这样子,这个也就是我为什么做金字塔,因为金字塔这一块,对我来说是蛮好,因为我只负责模型编写,研究到后期的实盘这一块已经有很成熟的东西,直接弄上去就行了。

还有一个部分就是我们的“倚天剑”实盘策略, “倚天剑”大家有看CCTV应该都知道,我是在里面展示时间最久的一位,是两年前,在那边展示用的策略,就用三个主策略。跟大家分享一下,同样的,我用的是三个主策略,我分别给它取名叫做”传奇变量五”那就代表这个策略已经升级到第五代了,在下次的话估计就是“传奇变量六”了,每一代我都会留底,然后是“动量变量五”、“均线变量五”那什么意思呢?“传奇变量五”你们不知道,但动量你们应该知道,它是一个波动率的,均线它是用均线的。那看一下,我们是在一分钟里面做的,这个是一个指令价模式,我是用万分之一点五的测试数据来做的。可以看到这个数据是一个什么样的概念呢?总手数十手,也就是说,我这套策略里面,有十手就是最多会加到十手,总交易数,最大回撤,这个最大回撤是当一笔就是一手回撤2万4,之后赢亏比是多少呢?2.25,平均利润5900、6000块,净利润500万,那大家有没有发现从这个位置到这个位置,都蛮像的,就到这个位置就不像了。因为我这个过程中都是这样用的,当然前面是改良过的之前的策略没有那么好。今年如果说本本分分的用这一个策略我就是赚钱的,但是今年最终沦落到亏钱,原因就是不本分,不本分也有好处就是总结经验,至少让我知道是什么原因亏钱的。这个我定位成一个中性的策略,它的进攻性不是很强;这个是一个防守型策略。当然我能做实盘是不可能的,这么多源码,这个肯定是不可能的,但相对来说我们做实盘只加的300根K线,甚至200根K线。这个是一个防守型策略,前面很漂亮,这个地方挖了一个大坑,最终上去了,这段时间有回撤,前段时间还有一个大行情,也上去了,那如果说上去了今年也不亏钱。这里是今年,我们看一下我们的测试数据一定是万分之一点五,不是万分之一,如果万分之一的话,这么多年下来,曲线就会更好一点。那这个策略的话,我们有多少源代码呢?有250行代码,后面都是一个测试报告的部分,前面才是在做的这些东西,变量。那思路简不简单呢?思路也是简单的,我之前都是用的这些,这里是没加滑点,但你可以看到这里有个买点优化。买点优化是什么东西?买点优化就是我对市场的理解加了一点点东西进去,跟别人有一点点不一样,那我们每一个买点优化都不一样,有0.8、0.4、1.0都有。还有看一个均线变量,这个都是同样的万分之一点五的数据,总手数都是十手。所以到现在我总结起来认为最终可能还是加仓策略最稳定,市场怎么再残酷,使用加仓策略,不可能亏的太多。只要有一点行情,它就容易上去。这个就是一个进攻型的策略,这段时间创下了历史最大回撤,之前的最大值是1万7,现在是3万1,最大回撤是3万1,但它的盈亏比还能达到2.0以上。所以这些就是我在做程序化这么多年的所理解的一些结果或者说所研究的一些层面,今天跟大家分享的这些都是我认为没有太多花俏的东西,就是以真实的一面,面对大家的,不管讲的好与不好,不好的多批评,好的希望能够有一个起到借鉴的作用或者说起到一个启发的作用,也没有太多的所谓的神奇指标,谢谢大家。


期货中国网刘健伟录音整理
 

想要更便捷、更高效、更实时地了解高手访谈、交易心得、高手活动、交易培训、招聘信息、基金产品等,就关注我们的微信平台吧,平台号“www7hcncom”、中文名“七禾网”,或者直接登录微信扫一扫以下二维码:

微信二维码新.png


七禾网期货中国注:成绩代表过去,未来充满挑战

责任编辑:刘健伟
Total:3123

【免责声明】本文仅代表作者本人观点,与本网站无关。本网站对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。请读者仅作参考,并请自行承担全部责任。

本网站凡是注明“来源:七禾网”的文章均为七禾网 www.7hcn.com版权所有,相关网站或媒体若要转载须经七禾网同意0571-88212938,并注明出处。若本网站相关内容涉及到其他媒体或公司的版权,请联系0571-88212938,我们将及时调整或删除。

联系我们

七禾研究中心负责人:刘健伟/翁建平
电话:0571-88212938
Email:57124514@qq.com

七禾科技中心负责人:李贺/相升澳
电话:15068166275
Email:1573338006@qq.com

七禾产业中心负责人:果圆/王婷
电话:18258198313

七禾研究员:唐正璐/李烨
电话:0571-88212938
Email:7hcn@163.com

七禾财富管理中心
电话:13732204374(微信同号)
电话:18657157586(微信同号)

七禾网

沈良宏观

七禾调研

价值投资君

七禾网APP安卓&鸿蒙

七禾网APP苹果

七禾网投顾平台

傅海棠自媒体

沈良自媒体

© 七禾网 浙ICP备09012462号-1 浙公网安备 33010802010119号 增值电信业务经营许可证[浙B2-20110481] 广播电视节目制作经营许可证[浙字第05637号]

认证联盟

技术支持 本网法律顾问 曲峰律师 余枫梧律师 广告合作 关于我们 郑重声明 业务公告

中期协“期媒投教联盟”成员 、 中期协“金融科技委员会”委员单位