从亏损到稳健盈利:各个时期的作品筒介
先谈谈我对开发电脑自动交易系统的若干实务的体会。
首先,有志者必须要懂C++语言及开发平台C++ Builder或vC的基础知识,这是绕不过的一道坎。其实也没那么可怕,即使不具备任何基础知识,买两三本书对照着看,一般情况下几个月后就大体上知道是怎么回事了。辛苦一两年的业余时间,学会编程最实用、最灵活的自动交易系统,却受用辈子,想想也是划算的。如果不懂C++语言,就只好在别人的现成的软件平台上做自己的东西,不但别扭,很多想法甚至根本没法实现!而且还可能被现成的软件平台所误导,在交易思路、性能评价等方面受制于平台的功能因为毕竟这些软件的开发人员只是精通编程,对于交易谈不上是内行。当然,在自己还不会编程的时候,学习使用这些软件也是有一定帮助的,可以掌握一些基本知识。甚至在自己会编程以后,经常看看这些软件,在某些方面也还是有所启发,这就是所谓的相互借鉴。现在流行的行情软件,诸如通达信、大智慧、飞狐、文华、富远、外汇通,等等,一般都已经加上公式编辑、测试、预警的功能模块,读者不妨多研究。希望进行更多数学方面的研究的读者,也可以把数据导入到Matb、 Excel等软件进行研究。
其次,懂得一些基础知识以后,就可以进入活学会用的阶段了。就像建房子不必从烧砖开始一样,开发一个交易系统,千万不要想着从零开始,而应到网络上找有公开源代码的半成品例子,作为出发的起点。尽量多寻找一些这样的源代码,相互比较、拚接、修改。不论想做任何事、碰到任何问题,都首先到网络上搜索出来一堆答案,对比着看。任何地方的编程,都尽量在相同或相近的例子源代码的基础上修改,只有实在不得已才自己一句一句地编。
第三,一小点一小点慢慢增加功能,每一小步都要调试通过了,再加新代码。不要一次性加一大堆功能,否则,出了问题,调试起来都不知道问题出在哪里。
第四,学会使用几个工具软件,比如 Winhex、Spy+、 UItraEditor等,甚至 Sniffer,这些都是分析数据格式、合法分析和操作其他软件所必不可少的工具软件。
第五,逐步积累相关资料,比如有一些流行软件的数据格式,网络上偶然会有人透露一些。
最后,不用过于着急,希望几个月内就做好,就当业余爱好,慢慢摆弄几年,自然水到渠成。
一个完整的全自动电脑交易系统,其完备的功能应当包括读入实时报价数据,显示数据走势及技术指标,根据预先设定的策略计算是否满足开平仓条件、仓位控制条件,再向互联网个人自助交易终端发出下单指令,另外还可以对某一策略进行历史数据测试并评价,以及参数优化。有关如何实现这些功能的资料,这几年网络上是越来越多了。
最近市场上开始有不少这样的“黑箱”软件出售,声称是盈利能力一流的交易系统,价格不扉。我对此深表怀疑,一个好的交易系统来之不易,如果真的能靠它赚钱的话,售价应该不低于10万元,才能体现其价值,怎么可能只卖几千元?再说,买来的东西,是否和使用者的性格相符合,也是个大问题。
最近几年我陆续开发了一些作品,下面列举若干,都是用C++语言编程的,供大家在开发自己的交易系统时参考。
1期货专用交易系统(2003年)
图5-1(a)~(g),期货专用交易系
主要功能:①能实时读取国内外期货及外汇数据,能合成连续数据,具有一般财经软件的常用功能,能在K线图上标出交易信号,技术指标可自编,是通过操纵国内某流行期货软件来读取实时数据的(参见图5-1之(a)、(b)②能操纵某个国内极流行的期货自助交易终端软件,实现电脑全自动交易③可用混沌算法产生模拟真实金融市场的数据(图5-1(c)。④可用于交易训练,在训练状态下,只能根据历史和当前的数据作出交易决策,下一个数据是不知道的(图5-1(d)。我自己经常训练,效果显著。⑤最重要的是,可以把各种设想编成交易模型,以及研究各种资金管理模式,再用历史数据测试,给出其统计性能评价指标(图5-1()、(、g),图中是一种比较稳健的交易模型及资金管理模式,7年间从3万做到了300万。实践中发现,一些本来较好的交易模型,在加上不恰当的资金管理模式后,反而产生了亏损。⑥还有其他一些小功能,比如交易详细列表等,限于篇幅不再介绍。
2期货专用交易系统(2004年)
图5-2(a)~(d),改进的购货专用女系
在1小节的作品的基础上,进一步完善了实时数据接收、实战监测功能,增加了很多新研究出来的系统化交易方法,测试环境大为改进,有开平仓定价模式、止损比率、止损定价、止损执行价、账户止损止赢点,单个商品测试、全市场测试、参数优化、期末是否强平,方法是否用于实战、实战监测等等(图5-2(a)。训练窗口也有改进。对参数优化功能(图5-2(b)、(c),如果优化曲线或曲面在某处附近没有快速的激烈的起伏,则说明在那个地方的参数具有很好的鲁棒性,即稳定性和可信度很高,比如图中参数1取18,参数2取2.5,是可信的较好的数值。在这个作品中我找到了几个性能相当优秀的具体交易系统,图5-2(d)是一个例子。
3股票专用交易系统(2004年)
此作品完全继承了5.22小节的作品,除了专用于股票外,其他功能完全。
4价位监测和自动下单软件(2004年)
图5-3(a)~(b),价位监测和自动下单软件
价位监测,当选定合约的价位高于或低于设定价位时,立即报警,当价位报警后,可以按事先设好的价位完全自动下单。这样就可实现挂单交易、自动止损交易等国外才有的服务。当初开发这个软件的动机是,情绪是交易员的大敌,克服情绪的办法就是不要实时看盘!可以把行情软件隐藏起来,想看也看不了!
5文本数据生成器(2004年)
功能:①通过某某软件自动接收实时数据。②自动生成分时和5分钟文本数据。③可生成日线文本数据。这些数据供一些爱好钻研但不懂C语言编程的人士用,比如用 Matlab、 Excel或其他数据统计软件。据我所知,喜欢这样研究的成功人士不少。
图5-4文本数据生成器
6为某期货、股票大户开发的专用交易系统(2005年)
此处仅为我给客户开发的交易系统的一个示例,就是把客户的经验编成软件,包括期货和股票。此处只是借用此客户的软件界面作个示例,任何情况下都绝对不会泄漏客户的任何信息。
图5-5(a)~(b)为期货专用交易系统,(c)~(d)为股票专用交易系统
7权证挂单交易系统(2005年)
图5-6(a)~(c),权证挂单交易系统
做过外汇交易的人都知道什么是挂单交易,但由于国内的股票、期货都只能下限价单,所以很多人并不了解挂单交易。举例说,假如某股票在200元附近横盘很久了,而我现在持有10手该股票,我认为如果股价涨到2.20元,就表明升势确立,应该加码买进,但如果跌到180元,则认为跌势确立,应该止损卖出。虽然我现在是这样看的,却不能现在就下个2.20元的买单或1.80元的卖单,因为交易所的交易系统会马上按市价给我成交的,在这种情况下,如果在国外的成熟市场我们就可以下止损单来开仓、平仓,就是事先下到场内的不涨到2.20元就不买、不跌到180元就不卖的单子,从而确保不错过机会。挂单交易就是指通过止损单、限价单和它们的组合单来进行的交易。毫无疑问,挂单交易在保护头寸安全、不错过机会、不必时时看盘方面具有不可比拟的优越性。
权证因为价格变化速度快、幅度巨大,采用挂单交易,可以避免发生巨大损失。
我们借鉴美国的保证金外汇交易的下单种类,并再做扩大,开发出这个软件。严格定义如下:
市价单:指的就是依照目前市场的实时报价成交。
限价单:客户指定优于当前市价的价格,当价格触及某一个指定的价格时,才会按指定价格或者更优的价格成交。目前国内的股票、期货市场只有这种单。
止损单:客户指定劣于当前市价的价格,即客户准备接受的最大损失幅度下单,等待成交。当市场价格达到或穿越客户指定价格时,马上转变为市价单,以使客户损失最小的价格成交(注意:成交价格是不固定的)。举例:如果宝钢权证现在的价格是1.0元,我持有100股,我想涨到11元时再买100股,再涨到13元时全部卖出,反之,跌到09元时卖出100股那就下止损单开仓买进100股,价格为11(因为对于买来说11元劣于当前市价1元,所以是止损单而不是限价单),然后再下限价单卖出200股,价格为1.3元(因为对于卖来说13元优于当前市价10元,所以是限价单而不是止损单),最后下止损单平仓卖出100股,价格09元(因为对于卖来说09元劣于当前市价1元,所以是止损单而不是限价单)。
单一单:是指每次下单只有单独的一个止损单或限价单。
组合单:是指一次下单中包含几个相关的止损单或限价单。我们提供的组合单包括:
(1)OCO单:指2个单中若一个单成交则撤消另一个单。
(2) If Then单:只有第一个单成交才会监测并执行第二个单;
(3) If oco单:若第一单成交,则开始监测第二、第三单,若其中有一单成交则撤消另一单;
(4) If Then If Then单:第一、第二、第三、第四单只有前一单成交了才依次执行下一单;
(5) If Then If OcO单:第一、第二、第三单只有前一单成交了才依次执行下一单,第四、第五单若有一单成交则撤消另一单。组合单的用处:用于囊括价格总共有几种可能的运动形态。因为国内交易所并没有挂单交易功能,我们实际上是在本地用电脑实现的“仿真挂单”,效果基本一样,由此引申出两个概念:警戒价:就是上面所说的止损、限价的价位。
下单价:是指在操纵下单软件时真正打进交易所的价格,通常离警戒价有相当距离,但又不能超出当天的涨跌停板,这是为了克服时间迟滞确保成交的措施。
此系统可用从国内流行的行情软件读取即时数据,同时可以操纵大多数股票自助下单终端。
8七种外汇货币指数(2005年)
图5-7七种外汇货币指数
众所周知,一般的外汇软件只提供美元指数,没有其他货币的指数,这就给很多投资者造成不便。本软件可提供美元、欧元、英镑、瑞明、日元、澳元、加元共7种货币指数,可以通过国内某知名银行的流行软件实时接收数据。图5-7(a)为加元指数的日线图,(b)为日元指数的分时线,各货币可以自动翻滚。货币指数的重要作用:
(1)把握各货币走势的大趋势。例如图5-7(4)中的加元仍然在走一个单边牛市,现在回调正是介入的好时机。以前我们经常碰到这样的情况:欧元/美元涨得很厉害,而英镑/美元却没怎么动,有了指数我们一看就知道了:原来只是欧元在涨,刚好美元和英镑都在跌!如果说日内的各走势还能通过看交叉盘大概看出来的话,那么长时间的大方向就只能用指数来看了,没有指数往往会错过大的单边行情!后果很严重!
(2)指数和具体汇率互相验证。比如我们看到欧元/日元有一个明显的头肩顶,请问此可信度有多高?可以查欧元、日元的指数,如果发现两者其实都在振荡,没有单边行情,那么此头肩顶失败的可能性就很大了。又比如英镑/美元创了年内新高,但英镑指数和美元指数都没有创新高或新低,则英镑/美元的新高失败是很可能的了。
(3)做日内短线交易也是同样的道理。
9外汇期权数据收集器(2006年)
图5-8外汇期权数据收集器
功能是把国内某知名银行的外汇期权(其实是权证)数据用电脑自动读取、保存、画图(此银行仅提供报价,并不提供历史走势及相应软件),仅代替人脑而已,目的是看看权证走势是否和外汇本身背离,如果背离了就说明有人在操纵,那就不值得参与了。另外,此软件可以用于止损价位的设置。我做好此软件后只收集了几天数据,初步研究表明:①此外汇权证走势正常,没有发现被操纵的迹象。②此外汇权证走势变动十分巨大,获利空间十分巨大!③目前我认为此银行为国内市场提供了一个不错的交易产品(不过也有网友对此有异议)。图5-8(a)、(b)为软件主窗口及各权证合约走势图,5分钟读一次(横跨周末)。用鼠标拉个框可查看细节,图5-8(c)是2006年7月12日从上午到晚上10点多钟,美元/日元涨了1%左右,0009期权相应涨了50%!从2元涨到3元!图5-8(d)是3个交易日(横跨周末),0017期权从3毛涨到9毛!用软件主窗口的简单统计功能看,3个交易日(横跨周末),振幅超过100%的有好几个产品(不过很多是价外权证)!50%80%更不在话下!可见涨跌风险及相应的收益十分巨大!
10使用真实历史数据的日内交易训练系统(2007年)
我曾经长期认为做日内交易几乎是不可能赚到钱的,不过前段时间有位朋友却的的确确靠做日内交易在10个月内从3万元做到90万元,这让我感到惊奇。虽然大多数人在做日内交易,但我相信做短线真正赚到钱的只有万分之几,他们就是罕见的有那种天分的人。在朋友们的建议下,我做了这个日内交易训练软件(不过我本人还是做长线交易),使用某个以数据维护最好而出名的流行软件的真实的历史的日线和分时数据。训练方法是盖住未来的日线和分时线,然后每次打开一点点分时线,作出判断并交易后再打开一点点新的分时线。这种杜绝引用未来数据的训练,可以在短时间内身经百战,从而迅速积累经验。另外,该系统还提供统计和评价功能。
图5-9使用真实历史数据的日内交易训练系统
11使用真实即时数据的日内交易训练系统(2007年)
这是用于对即时真实行情数据的交易训练,和各期货公司提供的模拟交易相比,最大的好处是资金大小、佣金和保证金比例都可以设成和真实账户一样的数据,这就和自己的实际情况几乎一样,训练有的放矢。另外,系统还提供统计和评价功能。
图5-10使用真实即时数据的日内交易训练系统
12使用真实历史数据的任贏金融训练游戏及任赢金融游戏网(2004年)
很多人为什么炒股票、期货、外汇老是亏损?这不是因为他们笨,而是因为他们缺乏经验!通常一个人只有经历了大牛市、大熊市、大牛皮市以后,才能积累起足够的经验,而这一般需要6-8年的时间!任赢金融游戏帮您把6-8年的时间缩短为几个月到一两年!寓教于乐,何乐不为呢?
任赢金融游戏的宗旨就是帮助用户用几个月的时间培养出6-8年的投资经验,从而在实战中开始稳定地赚钱。我们的指导思想是在战争中学习战争,彻底抛开事后诸葛亮对我们的干扰。这也是我们和一般的书籍、资料、股评、期评、培训班的本质区别之处。实战和复盘最本质的区别是,在实战中,现在不知道下一个时刻价格会怎么变化,今天不知道明天的价格会怎么变化。
而复盘却是先知道了现在,再去评论以前,先知道了今天,再去点评昨天,这种引用了未来数据的马后炮,产生了大量的“著名股评家”、“顶级操盘手”、“战无不胜的秘密武器”;即使是善良的普通投资者也会被自己的大量似是而非的“新领悟”、“新方法”所蒙蔽,摸索数年、花费数万元却仍找不到行之有效的方法。任赢金融游戏最关键的一点就是,彻底摈弃“马后炮”,“今天”不知道“明天”的数据,给你一组真实的历史数据,你必须思考后作出决定,以最后的一个数据的收盘价为成交价格做出买卖,然后按一下空格键,才出现下一个数据,而一旦出现新数据,你就只能以最新数据的收盘价为成交价做买卖,上一个数据就成为历史了。这就跟实战一样了。我们在这个基础上开发的游戏具有如下功能和优点:
(1)自我训练,积累经验,完全模拟实战,彻底摈弃“马后炮”。
(2)交朋结友,相互切磋,讨论、观看彼此的操盘行为,共同进步。
(3)拜师学艺。
(4)开班收徒。
(5)举办论坛、研讨会、专题讨论会、每天或每周例行碰头会举办现场公开竞赛,类似于棋牌类的全国比赛。
(7)邀请成功人土现场示范操盘手法
(8)对宣称是高手的人现场考核,看其是不是自我吹嘘。
(9)对自己的投资新想法、新领悟进行测评,剔除似是而非的东西。
(10)24小时随时进行训练、测评、学习、讨论。
(11)即使在实战的开盘时间内也可以边看盘、边交易、边玩本游戏,因为这样做,一方面可以与市场保持必要距离,从而看清大势,保持良好心态,防止过于无聊而频繁买卖或一时冲动;另一方面在游戏这边充分利用时间积累宝贵的经验,这样别人一天下来只获得一天的经验,而您可能已经获得几个月的经验,真是天壤之别!
(12)投资者在市场上花费数年,交了数千、数万、数十万的学费,却没学到多少真正有效的东西,原因就是缺乏一个真正摈弃了“马后炮”救应的学习和训练环境!现在在这里花上几十元和几个月,就可以学到过去花数年和成千上万元却学不到的东西!何乐不为呢?
图5-11使用真实历史数据的任赢金融训练游戏及任赢金融游戏网
图5-11(a)为主界面,目前提供超过1000个个股和70个中外期货的真实的历史数据,样本容量足够大,足以抹除记忆效应。(b)为交易窗口,(c)为俱乐部,(d)为好友管理,(e)为用户账户信息,(f)为任赢网站主页,网址www.letmewin.com.cn。