说起我的程序化之路,那要从3年前被人拉进来开户做外盘黄金开始说起。
那时候啥都不懂,开户交易了5000块,做了3个月,亏完了。
然后也就没有再做,但心里一直埋着这样一个冲动想去战胜它。
于是毕业的时候由于本专业没怎么读书,就决定找了一家做伦敦金的公司上班。
上班的第一天老板让我们自己开户入金交易,说是积累实盘经验。
硬着头皮拿了5万人民币进来做,做了半年,最低到8千,后来又回到4万,最后亏到剩1.5万,然后我出金不做了。
前前后后刷了将近150手,算算手续费150*400,我帮老板赚了6万,我却没赚到钱,现在想想好亏啊。
后来,老板看我刷单的能力还不错,就让我留下来继续干了。
后来将近半年也没有做自己的,一直在代客操盘,维护客户,发策略,研究策略。
然后直到1年半前,慢慢总结自己这将近1年多的临盘经验,越来越觉得,手动交易,由于无法进行回测。因此也就无法判断方法是否可行,所以基本会不断的失败。再者我曾经因为失恋,交易做的一塌糊涂,所以慢慢的在那时坚定了做程序化的想法。
最初的开始是学习MT4平台的MQL4,从最开始的网上购买MQL4编程教程,到慢慢的学会了基本的语法,能够读懂,到最后能够理解大多数的策略,能表达自己策略,过了3个月吧,最后可以自己差不多的理解网上大部分的交易系统了。但是,不断的回测,回测,总是发现网上找不到一个能赚钱的东西,只要是网上公开的。
既然复制别人没有前途,那我就开始自己写系统了。
我最开始的第一个系统是双均线系统,金叉做多,死叉做空,我采用优化的方式,给长线周期和短线周期都取值为1-400,我想400*400个组合,肯定能找到一个回撤小,收益好的曲线吧。但是,事与愿违,我找不到一个好的组合。之后的故事也就很自然了,我又写了好多自己以前的思路,然后发现,如果不去优化他,根本无法赚钱。而且多半都是历史最好的结果才能换来稍微舒服的收益曲线。
就这样迷茫了2个月,然后不断地去研究那些索罗斯、巴菲特、西蒙斯,特别是西蒙斯,能找到的资料我都要反复的读几遍,希望从中获得大师的灵感。然后慢慢的我就总结了我自以为一个交易系统所应该的过程。(这是我交易这些时间到目前为止的总结)
1.这个交易思路一定要有坚实的理论依据作为前提,并且这个理论,一定要同你个人长期交易中总结下来的经验相吻合。那些从别人身上拿来的指标,或者策略,如果不是你自己的,那么只要它一发生亏损,你就无法坚持下去,最后的结果就是你必然会亏损,然后放弃交易。举个例子,套利,同一产品在不同市场的价格出现显著差异,然后进行高卖低买,最后价格回归,获利离场。这是我个人在长期交易中总结的经验,同时也是目前市场上理论最为成熟的交易思路之一。
2.如果你已经日日夜夜不断的交易了1年以上,那你应该就能体会第1点了,接下来拿着你成熟的交易思路(呵呵,第一个失败的概率很大,你可能要总结很久,总结到很多个,才会有一个靠谱的),将它表达成为能够程序的代码,这时候你需要选择一个平台,学习这个平台的语言。目前大多数的平台的语言都相对简单,因为平台一般都会封装各种函数给你用,你只要会基本的语法,然后照着平台给你提供的例子,就能差不多的表达出来了。但是如果你想往更加专业的去走,那你可能要学学VBA,JAVA,C++等,去进行二次拓展,甚至是写自己的CTP交易终端。我现在就是用VBA在玩金字塔,然后C++学的差不多了,准备开始写CTP交易终端。
3.拥有了以上2点,这时候我就开始给自己写策略了,但是,计算机毕竟还是计算机,想要表达你的思路,必然要带有参数在里面,但是,所有写过系统的人都知道,参数这个东西是魔鬼,没有不行,但是越少越好。我的方法是,不优化,并且将参数设定在一个范围。举个例子,我进场了多单,我离场选择下破N个周期的低点。N:=20-INTPART(ENTERBARS/5);
这时候的N就不是一个固定的参数,而是随着下单之后的周期来决定,时间越长,越容易离场。
4.搞定了编写策略的问题,并且参数也很少,同时没有进行优化。这时候,我们可以开始进行回测了。如果回测的结果也很好,恭喜你,你又靠近胜利了。如果回测的结果不好,那就继续努力吧。但是,很显然,还有一个问题,就是滑点的问题。记得,有一次好像是美联储的利率决议,我的一个现货白银的单子在4400想要平仓,结果滑点了120个点,给我在4280成交,当然这个是极端的情况,但是一般的情况下,滑点的是必然的。我现货白银实盘了2个礼拜后,将回测的结果跟实盘的成交进行对比,发现滑点一般是1个点,不管是开仓还是平仓都是,所以,我把回测的代码改成价格到达之后,多单开高俩个点,平仓平低一个点。这时候我再去回测,发现策略可行,那基本上,我这个策略就非常完美了,如果,加上滑点进行回测,这个策略是亏钱的,那可能一切都要从头干起了。
5.未来函数,闪烁等骗人的问题,我就不在这里说了,没意思。
当然还有一个滑点的特殊情况就是,每个交易周期开盘的时候,经常会有跳空,这时候的交易策略一定要禁止在这个时候进行交易,因为成交的滑点问题十分巨大。所以我个人的策略一般不做开盘的一段时间。
6.策略是长线还是短线的问题?个人觉得,如果你的短线策略可以走完以上的步骤,并且在回测的结果中符合预期,那么你就可以继续坚持。但是,这样的策略其实个人不太支持,毕竟频繁交易,实在不是一件好事。我个人是长周期趋势跟短线交易多策略的方法。
接下来我将贴出自己一个短线交易系统的代码跟回测还有实盘的结果。
这是一个大家很常见的交易系统,在进过以上6个点的考察之后,都成立的系统。
我用这个系统进行了半年的实盘交易,先贴代码,然后再贴图。
INPUT:
SS(1,1,10000,1);
VOLUME:=VOL,VOLSTICK;
手数:=SS;
开仓时间:=(TIME>=013300 and TIME<023000)
OR (TIME>=130300 and TIME<140000)
OR (TIME>=173300 and TIME<183000);
离场条件1:=TIME>=185950;
离场条件2:=TIME>=062900 AND TIME<=063000;
离场条件3:=TIME>=152900 AND TIME<=153000;
平仓时间:=离场条件1 OR 离场条件2 OR 离场条件3;
平空参数:=20-INTPART(ENTERBARS/5);
平多参数:=20-INTPART(ENTERBARS/5);
开多平空条件:=HIGH>REF(HHV(H,20),1)+1 and 开仓时间 ;
开空平多条件:=LOW<REF(LLV(L,20),1)-1 and 开仓时间 ;
收盘删挂单:=TCANCEL(平仓时间,1) OR TCANCEL(平仓时间,2);
平多2:sell(平仓时间 and holding>0,0,LIMITR,O-1);
平空2:sellshort(平仓时间 and holding<0,0,LIMITR,O);
平空1:sellshort(HIGH>REF(HHV(H,平空参数),1)+1 and holding<0,0,LIMITR,REF(HHV(H,平空参数),1)+2);
平多1:sell(LOW<REF(LLV(L,平多参数),1)-1 and holding>0,0,LIMITR,REF(LLV(L,平多参数),1)-1);
开空1:buyshort(开空平多条件 and holding=0 AND REF(HOLDING,1)=0
,手数,LIMITR,REF(LLV(L,20),1)-2),IGNORECHECKPRICE;
开多1:buy(开多平空条件 and holding=0 AND REF(HOLDING,1)=0
,手数,LIMITR,REF(HHV(H,20),1)+2),IGNORECHECKPRICE;
不懂怎么插入图片。。。谁需要我的实盘测试结果和回测结果的可以留QQ我加你。
其实吧,今天搞这么多,是我有一个趋势的交易系统,但是没有资金让我测试,谁有兴趣的可以找我。
在帖子下面留你的联系方式吧。
唉,为嘛还是无法上传。
我有实盘半年的盈利结果,有模型的的代码上面贴出来了,然后我现在有一个在外盘稳定获利了很久的趋势系统,现在我把它移植到了期货里来,回测的结果十分可观,有兴趣合作的人加我QQ吧:254292748.
我都加了滑点了,你自己看看就知道。
实盘做了几个月,有实盘交割单,盈利的实盘交割单。
我讨厌那些整体贴回测结果,回撤10以内,收益100多的人。
要贴就贴实盘结果,半年以上的。
扯那么多淡。