- 精华
- 0
- 在线时间
- 55 小时
- UID
- 117135
- 积分
- 41
- 帖子
- 17
- 阅读权限
- 10
- 注册时间
- 2013-3-20
- 最后登录
- 2013-4-13
- 精华
- 0
- UID
- 117135
- 积分
- 41
- 帖子
- 17
- 主题
- 4
- 阅读权限
- 10
- 注册时间
- 2013-3-20
- 最后登录
- 2013-4-13
|
YesTrader是海通期货推出的一个来自韩国的自动交易平台。开拓者(简称TB)则是国产的一个能支持自动交易的平台。这两个平台在很多方面非常相像,在使用了这两个平台做开发后,发现还有很多差别的。
一. 用户界面的差别
在用户界面方面,由于我国很多平台是参照最初DOS版的钱龙软件开发的,所以是单窗口操作模式系统。所谓单窗口操作模式是指用户在一个窗口里操作,画面只是在同一个窗口里切换,不会生成新的窗口。例如用户在自选行情报价画面里双击某一个合约或按回车,会把原来的行情报价画面换成这个合约的分时走势图,而不是新开一个窗口显示分时走势图。开拓者也不例外保持了单窗口操作模式的传统。但开拓者也作了一定的突破,可以同时打开多个工作区,每个工作区都是一个子窗口,这样就变成了多窗口了。但由于各个工作区是相对独立的,从操作风格上还是属于单窗口操作模式系统。虽然开拓者引进了工作区的概念,但把国内通行的快捷键"F6"调出自选合约的功能去掉了,用户用起来反而不方便了。
另外我刚使用TB的时候,使劲找开发交易策略的地方都没找到,最后在窗口左边的工具栏里找到。本人觉得这是TB的一大败笔,左边工具栏里的功能按钮完全可以放在菜单里或者菜单下面的工具条里,没必要浪费宝贵的地方专门搞个工具栏。
YesTrader完全利用了Windows多窗口的特点,用户可以同时打开多个窗口,并且用拖动的方法使两个窗口发生关联。因此YesTrader在用户界面上更加友好,易用。
二. 开发交易策略方面的差别
初看这两个平台的语言和开发方式非常相像,但通过开发策略后还是发觉有许多差别的。首先开拓者V4把技术指标和交易策略合在一起统一叫“公式”,这样做有好处也有坏处。好处是可以把技术指标和交易策略做在一起,坏处是不便分类。
其次开仓和平仓的写法有重大差别。TB的开平仓是在一个新Bar生成的时候,而YesTrader的开平仓是在一个Bar结束的时候。虽然写法不同,但实际效果是一样的。例如做两个均线交叉的策略,TB要这样写:- Params
- Numeric FastLength(5);
- Numeric SlowLength(20);
- Vars
- NumericSeries fast;
- NumericSeries slow;
- Begin
- fast = Average(Close,FastLength);
- slow = Average(Close,SlowLength);
-
- If(fast[1]>slow[1] && fast[2]<slow[2]) //金叉
- {
- Buy(1,Open);
- }
-
- If(fast[1]<slow[1] && fast[2]>slow[2]) //死叉
- {
- SellShort(1,Open);
- }
- End
复制代码 YesTrader可以这么写:- Input : shortPeriod(5), longPeriod(20);
- Var : short(0),long(0);
-
- short = ma(C, shortPeriod);
- long = ma(C, longPeriod);
- If CrossUP(short, long) Then
- {
- Buy();
- }
- If CrossDown(short, long) Then
- {
- Sell();
- }
复制代码 从以上例子看出YesTrader写策略更加简洁,而且YesTrader定义的变量Var具有记忆功能,也就是当在第一个Bar出现时对一个变量赋值后,在第二个Bar出现后,这个变量如果不再被赋值,这个变量的值还是以前的值。但TB却不一样,在TB里定义的Numeric都是临时变量,每个新bar出现后,以前赋值过的变量需要重新赋值。这个差别使得YesTrader开发交易策略更加便捷。
但TB的语言更加严谨,编程更不容易犯错误。首先在TB语言的循环语句里支持Break和Continue语句(这是YesTrader没有的)。其次在TB的策略里,数据类型分为Numeric和NumericSeries,Numeric就是临时变量,NumericSeries是Data Series。这样区分可以在编程的时候避免犯错误。而在YesTrader的策略里只能定义变量,有的时候你可以把这个变量当作Data Series,有的时候变量不可以当作Data Series,需要程序员自己判断了。这样就容易在开发复杂算法的时候犯错误。因此从编程语言上看TB要小胜YesTrader一筹。
三. 回测性能对比
策略做好后,通过回测(Back Test)测试策略的性能非常重要。这方面YesTrader做得很好,YesTrader不仅能做回测,而且参数优化测试速度非常快,这使得参数优化工作非常舒服。而TB的参数优化测试速度非常慢,远没有YesTrader做得好。
四. 两者共有的缺点
这两个平台到目前为止都不提供调用dll的支持, 这就比较遗憾了。再是都不提供价格驱动的Bar图,例如Range Bar和Renko Bar。还有这两个平台的连接不稳定,容易断线,这对于自动交易来说相当不便,要一直看着。YesTrader虽然增加了断线重连的功能,笔者试过在XP上有效果,但在Windows Server2003上失效,还是需要手工重连。这方面MT4和文华财经做得最好,我一般同时开着文华财经和YesTrader,文华财经一直没断过,但YesTrader偶尔会断线。
总结:通过上述比较,YesTrader要小胜TB一筹,YesTrader的软件成熟度更高一些。但TB在国产平台里是比较优秀的了,历经几代的发展,开拓者V4已经相当成熟了。听说MultiCharts能支持Dll调用,下次将写一篇MultiCharts的评测报告。 |
|