文档库 最新最全的文档下载
当前位置:文档库 › 《如何开发自己的交易系统并轻松得到专业的系统测试报告》

《如何开发自己的交易系统并轻松得到专业的系统测试报告》

《如何开发自己的交易系统并轻松得到专业的系统测试报告》
《如何开发自己的交易系统并轻松得到专业的系统测试报告》

《如何开发自己的交易系统并轻松得到专业的系统测试报告》

作者:张轶

邮件:2278279@https://www.wendangku.net/doc/739028299.html,

版本:2009年04月25日

2008年12月15日版本内容

第一次写,最原始的版本。

2008年12月17日版本内容更新如下:

对导入日线数据做了添加注释,用红色字体。

加入了导入5分钟数据的方法。

把案例程序重新写了,这次应该是对的。

更新了一些图。

重新生成测试报告,包含了做空。

更新了测试报告。

2009年01月06日版本内容更新如下:

交易所建议采用纳斯达克交易所,以防止出现日线和分钟线不完整的情况。

测试报告的中文解释。

2009年04月25日版本内容更新如下:

补充了tradeblazer的介绍。

补充了“NASDAQ,10”的重要性。

目录

目的 (2)

国内研究tradestation的论坛 (2)

选择哪个版本? (2)

下载软件 (3)

安装软件 (3)

收集文本数据 (4)

把文本数据导入8.1 (5)

编写交易系统 (12)

测试交易系统 (13)

如何解读测试报告 (16)

结束语 (16)

目的

作为一个专业的交易者,离不开测试交易系统。国内行情软件的测试功能太烂了,测试的结果经常是错的(这和我不会编程也有关系吧,但你去看看同花顺的测试功能——只会做多,不会做空,报告也很简单)。当有网友给我看tradestation 的测试报告时,我才发现原来软件可以做出如此专业的测试报告。故下决心开始学习用tradestation做测试。没学多久,就发现这个软件在国内根本不流行,大部分人都不了解它。所以,有必要把我学到的东西用文字总结出来。

Tradetation是美国tradestation科技公司开发的一款行情软件。像国内的同花顺和文华财经等行情软件一样:可以同时看股票、期货、外汇和期权的行情。但是在功能上,它比国内的行情软件强n倍。国内行情软件能做的事,tradestaion 也能做;tradestaion能做的很多事,国内行情软件却不能做。

因为tradestation是为美国人服务的,它并不提供中国的股票和期货行情。所以股票和期货交易者并不需要购买这个软件,更不需要购买它的行情(在美国,看行情也是要给钱的)。但是在离线的状态下,tradestation的编程和系统测试功能却是100%完整的。所以,对我们来说,tradestation成为一个极好的编程和测试平台。只要你能把交易系统用easylanguage(顾名思义是简单的语言)写出来,系统测试只要点击一个按钮,它就能生成比国内软件强n倍的测试报告。非常专业,大家可以看附件《30日均线交易系统的测试报告》。(张轶注:页面格式带图,excel格式不带图。为了解释英文,第3版采用excel格式。页面格式在以前的版本中去找。)

国内研究tradestation的论坛

东方华尔街论坛https://www.wendangku.net/doc/739028299.html,/bbs.php

海洋部落论坛https://www.wendangku.net/doc/739028299.html,/vb

建议重点看东方华尔街论坛的文章和海洋部落论坛一个叫neo_cn的人的文章。选择哪个版本?

Tradestation从之前的5.0版已经发展到了现在的8.4版(2008年10月上市的)。每个版本还有更细的版本区分。5.0版就是2000版,非常老,还有人在用。8.1版(2005年底2006初左右上市的)之后的版本界面差不多,但和5.0版差别很大。根据东方华尔街论坛上面“stonelevin”的发言来看,能导入文本数据,并做出完整的测试报告的版本是8.1 build 3006。

他的原文如下:

Tradestation各破解版本试用情况说明

这几天我试用了论坛里发布的很多TS版本,结果是都有问题,没有一个是真正意义上的实用版本!

TS8.4 Build1674、Build1683版本的问题是文本数据导入不了。

TS8.3 Build1615、Build1631、Build1634版本文本数据可导入,但不能插入策略(InsertStrategy)。

TS8.2 Build3863、Build3896比较好了,但策略测试报告里的Tradeslist是空的。

花了几天时间想升级TS,结果发现还是用了近两年的TS8.1 Build3006版本好用。

建议各位喜好TS的朋友,不要浪费太多的时间在8.2/8.3/8.4上了。

建议破解的高手,你们发布的TS版本至少要自己做过策略测试,如果你不会,你可以委托会的朋友多测试一下,不要看到能够登录就以为大功告成了。

做一件事容易,做好一件事不容易!

[本帖最后由stonelevin于2008-11-6 14:42编辑]

他说8.4版不能导入文本数据,只能借助于软件owndata,但他说效果不好。我试过8.4版,结果是自己根本不会用。

他说8.3版不能做测试。

他说8.2版测试报告里面没有交易记录(tradelist)。这点我可以确认,网友给我的测试报告就是用8.2版测试的,里面确实没有交易记录。

所以,我们就从8.1 build 3006版开始。

下载软件

到东方华尔街论坛看一个叫“100”的人发的帖子,里面有所有版本的链接。我们只下载3006版。破解就不说了(我也不会,似乎tradestation科技公司对这个管的很严,海洋部落论坛的一些破解信息都被删除了)。因为链接是外国的地址,它总是限制我下载。我现在使用的版本是neo_cn传给我的。

安装软件

下载Tradestation build 3006 8.1版。您已经下载了。

找到并双击“AuthTokenCalc”,输入“8.01.01.3006”,然后点击“Authorize”。

安装Tradestation 8.1 build 3006。第一次安装完会提示重启电脑,直接重启电脑。如果你再删除,再重装,一般就不会再提示重启电脑。

重启后先选择退出tradestation,把“Client.dll, WowRT.dll”这2个文件复制到

C:\Program Files\TradeStation\Program文件夹里面,替换原来的2个文件。

启动Tradestation,什么都不做,然后退出。

把“MISC.DAT”这个文件拷贝到C:\Program Files\TradeStation\Program\Cache 文件夹里面。

启动Tradestaton,选择work offline(离线工作)。如果能进入画面,就成功了。收集文本数据

数据有很多种格式,文本数据是其中一种,也是8.1版能直接调用的数据,8.1版就是强在这里。文本数据格式似乎也叫ACSII格式。

如何收集股票数据?

为了尽量减少本文件的体积,我尽量用文字说明,少用图。打开通达信。点击“系统”=》“盘后数据下载”。

在出现的对话框中,像上图一样设置。然后点击“开始下载”,就得到了所有的历史数据。我们只研究日线数据。分钟图不讨论,但道理都是一样的。

本书以上证指数为例,打开上涨指数的日线图,再点击通达信的“系统”=》“数据导出”,我们选择文本也行,选择excel也行。建议选择excel。因为即使用文本导出,也会发现里面有汉字。Tradestation是美国软件,不支持任何汉字。我们我们导出后,用excel删除里面的所有汉字,不用担心。我们只保留:日期,开盘价,最高价,最低价,收盘价的数据。其它汉字和数字全部删除。不必担心,tradestaion能认识这样的数据。最后把这些输入拷贝到文本文件中,取个名字叫“999999.txt”,后面测试用。(张轶注:网友说可以一次性下载所有盘后数据,但我没有测试过。)

如何收集期货数据?

这是最难的,因为在中国,期货数据被期货交易所垄断了,卖几万元。所以,我根本搞不到。我在淘宝网上买过,也是不完整的,当时很生气,立刻删除了。现在的折中方式是使用富远行情软件的期货连续数据。但即使如此,它的连续数据也不完整,因为中国的很多期货品种上市的时间都不长。即使有10年的行情,中间也有断裂现象。如此,只好用美国的连续数据代替了。尽量选择连续10年的数据,否则没有测试意义。如果谁有国内期货的文本数据,不管多少,不管长短,都请发邮件给我。我想开始收集期货数据,有多少就收集多少,不怕重复。

如何收集外汇数据?

网上有很多免费的资源,可以自己去找。东方华尔街论坛也有。

补充:国产软件tradeblazer是国内第一个类似于tradestation的软件,它提供数据下载功能,且可以免费试用,所以也可以利用它的数据,网址是https://www.wendangku.net/doc/739028299.html,。

注意:tradestation是英文软件,它不支持汉字。所以收集了文本数据以后,要打开文件看看里面是否有汉字,如果有汉字,请删除。文件名也必须是英文字母。

把文本数据导入8.1

以下文字原文和思想来自一个期货论坛叫黑马的人(听说此人现在能用tradestation做国内期货的自动化交易,但具体不知),链接如下:

我把黑马的文字研究了多次,才搞懂如何导入文本数据。为了尊重黑马,我尽量采用他的文字和图片,并加上我的个人体会。希望没有侵权。

TradeStation 8.1 读取文本数据的方法

TradeStation 8.1 在很多功能上比TradeStation 2000i增强了不少,不过为TradeStation 8.1 安装文本数据比前面版本稍微麻烦一些。

首先,要先建立一个交易所:

在TradeStation安装目录(一般情况下是C:\Program Files\TradeStation 8.1)下的CAL目录下新建一个文本文件“custexch.txt”,内容可以就一行,例如:

Custom Exchange1, 45

其中45表示的是中国所在的时区:东8区。

(张轶注:此处强烈建议采用纳斯达克的交易所,也就是把“Custom Exchange1, 45”更改为“NASDAQ,10”,全部大写才行。这样可以避免在日线图上看K线时每周缺少一天的现象。具体原因见https://www.wendangku.net/doc/739028299.html,/thread-4775-1-1.html的解释,作者是get2008。)

补充:采用“NASDAQ,10”在导入分钟图时都会很方便!

其次,确定你的文本数据文件存放的路径,假定文本数据存放在D:\DATA目录下,假定里面有一个Random.txt的文本数据文件。

然后,打开TradeStation 8.1,按照下面的步骤操作

第一步

(张轶注:因为tradestation不对亚洲区提供行情服务,我们买了账号也没用,所以我们只在work offline状态下做测试系统的相关工作。数字1是双击“chart analysis”,数字2,3是在黑色窗口里右击鼠标并选择第一项“format symbol”,数字4是点击“lookup”,数字7所在的图片中的“type ascii”是“数据类型为ascii,文本数据就要选择ascii”,“prefi”是“前缀”,你输入其它字母也可以,但注意不要引起软件的冲突,否则就无法进行下去。建议就输入“TXT”。每次打开一个新的文本数据,就要从数字4重新开始。)

第二步

(张轶注:这里要特别注意你的文本数据是什么格式,上面和下面要对应上。不同的软件导出的文本数据有点点不同,这里要保证是对应的。Date是日期,time 是时间,open是开盘价,high是最高价,low是最低价,close是收盘价,volume 是成交量,open interest是持仓量,期货有持仓量,股票没有。下面的“data file”就是你要打开的文本数据的格式。)

第三步

(张轶注:上面的选项是选择你的日期格式是用“横杠”还是“斜杠”,具体看“data file”里面是什么样子,就选择什么样子。)

第四步

如果事先没有新建一个交易所,在这个对话框的Exchange这一项就是空的,无法进行下一步。

(张轶注:category选择数据类型,一般是股票,期货,外汇。其它选项都可以采用默认的。如果是做测试,全部选择默认的并不影响测试结果。)

第五步

根据数据文件的特征来配置交易节。

(张轶注:这里就是设置交易时间,session1可以设置成上午,以股票为例,就是9:00——11:30,session2设置成下午1:00——3:00。期货相应设置。外汇没试过。经过测试:如果是股票和期货的日线数据,采用默认设置是没关系的。)

第6步

如果指定目录下的文本数据文件都是一种类型的,那么就可以选择第二个选项,如果选择第一个选项那么TS会对这个文件单独保存它的配置文件。

完成,这样就可以在TS中显示出Random.txt的图表了。

换品种也很方便:只需要输入数据文件的名字即可,在前面需要加上前缀“TXT”。

例如现在要分析D:\DATA\Random1.txt数据文件,只需要在图表上输入“+TXT:Random1.txt”即可。换其他品种以次类推。

(张轶注:如果你的数据是日线数据。进行到这步会发现没有出现上面的图。因为默认的是5分钟图。此时可以在黑色窗口中右击鼠标,选择第一项,里面有很多设置,修改为daily才会是日线图,默认的是5分钟图。也可以把竹线改成K 线。软件默认的下跌是红色,也要改过来,多试试就行了。)

不足之处:

本文只涉及到TradeStation 8读取静态文本数据文件进行分析,尚未考虑使用GlobalServer中的数据。使用GlobalServer的数据需要安装OwnData,在为OwnData配置了GlobalServer数据源之后,TradeStation 8.1不但可以通过OwnData从GlobalServer中读取盘后数据,还可以读取GlobalServer中提供的实时数据。

(限于实践水平如有不当或更好的办法敬请指正)

以上是黑马的文字。

进行到这步需要很多尝试。比如要设置数据的开始点,每次都要根据你的文本数据修改起始日期,否则不显示k线。图片如下:

在上图的“settings”里面,daily才代表日线图。First data代表数据开始的开始点,我们要按照美国的人习惯设置成:“12/01/1990”。然后在点击:“style”,看下面的图。

上图中“candlestick”才是我们的K线,up body (close > open)就是指上涨情况,我们要调成红色。Down body (close < open)就是下跌情况,我们要调成绿色。勾选“set as default”,再点击确定就行了。

黑马讲的步骤需要反复尝试,有个过程。如果有问题,可以选择把D盘data文件下的alldata.dop和attributes删除,或者修改文本文件的名字,或者修改data 文件夹的文字,再从头来,迟早能够成功的。

顺利导入5分钟数据的秘密

(张轶注:以下文字是hcui网友在东方华尔街论坛的发言。我抄过来的,同样希望没有侵权。链接如下:https://www.wendangku.net/doc/739028299.html,/thread-3995-1-1.html)

8.1B3006不需要OWNDATA可以直接导入TXT数据,而且速度超快,但按照网上公布的方法导入时,只能顺利导入日线以上级别数据,在导入日内级别数据(如5分钟线)时会出现很奇怪的问题,总之无法顺利导入,在苦心研究几天TS的HELP后,终于发现了导入5分钟数据的秘密。

TS导入时的时间是基于纽约时间的,我们在导入国内数据是设置时区为中国时区,两者之间存在12/13小时的时差,这就是显示“No historical data for this symbol”(无历史数据)的原因。

解决办法很简单:

1、在TradeStation安装目录下的CAL目录下“custexch.txt”里,用美国时区,即

NASDAQ,10

(张轶注:由此看见,因为这个软件是美国的,采用纳斯达克的设置才比较好用。)

编写交易系统

Tradestaion使用easylanguage(有人说叫“易语言”)编写指标和交易系统。这个语言是最简单的语言,只是中国人没机会接触它。懂编程的人学起来非常快,因为这个语言非常现代,你能想到的,它都提前想到了。缺点是没有中文教材,只有英文教材。只能慢慢学了。

下面开始编一个交易系统:收盘价上了30日均线就以收盘价买入,收盘价下了30日均线就以收盘价平仓,并反手做空。如此循环,永远在市场中。一次只持有1份,以收盘价做为成交价。

在tradestation中点击:“easylanguage=>new easylanguage

document=>strategy”。Strategy就是交易系统的意思。

此时出现了一个对话框,在对话框中,name就是取名字,你随便取一个名字,我取了我的名字zhangyi1974。Notes让你写注解,随便填,不填也可以。Select 让你选择,我们选择“(none)”,也就是什么都不选。点击“OK”,进入编辑状态。

输入以下文字:

{ long if close crosses over 30ma and short if price crosses under 30ma }

if close crosses over average ( close, 30 ) and marketposition = 0 then begin

buy 1 share this bar close;

end;

if close crosses over average (close,30) and marketposition = -1 then begin

buytocover 1 share this bar close;

buy 1 share this bar close;

end;

if close crosses under average ( close, 30 ) and marketposition = 0 then begin

sellshort 1 share this bar close;

end;

if close crosses under average ( close, 30 ) and marketposition = 1 then begin

sell 1 share this bar close;

sellshort 1 share this bar close;

end;

{ copyright (c) 2008 zhangyi. all rights reserved. }

我大概解释一下:【{}里面的话都是废话,属于注释的,可以不管。】

if close crosses over average ( close, 30 ) and marketposition = 0 then begin

buy 1 share this bar close;

end;

【如果收盘价和30日均线金叉,且之前是空仓的,那么就在收盘价买入1份。】

if close crosses over average (close,30) and marketposition = -1 then begin

buytocover 1 share this bar close;

buy 1 share this bar close;

end;

【收盘价和30日均线金叉,且之前持有空头仓位,那么就在收盘价回补(买入)1份空头仓位,在收盘价买入1份。】

if close crosses under average ( close, 30 ) and marketposition = 0 then begin

sellshort 1 share this bar close;

end;

【如果收盘价和30日均线死叉,且之前是空仓的,那么就在收盘价做空1份。】

if close crosses under average ( close, 30 ) and marketposition = 1 then begin

sell 1 share this bar close;

sellshort 1 share this bar close;

end;

【如果收盘价和30日均线死叉,且之前持有多头仓位,那么在收盘价平仓1份多头仓位,在收盘价做空1份。】

编好以后,在窗口中右击鼠标,点击“verify”运行一下,没问题就行了。如果有问题,根据它的提示相应修改。然后把这个系统存盘。屏幕的左上角有个小图标,是存盘图标,像3个小磁盘,点它存盘就行了。再关闭窗口。第一次关闭时系统会提示你存盘。

因为张轶也是刚学习编程,这个程序应该是对的。主要目的还是把这个软件的强大功能告诉大家,交易系统编程我还要慢慢学。

测试交易系统

用黑马的方法打开d:\data\999999,txt。确认是日线图,起始日期是1990年12月19日。

点击“insert=>strategy”,出现一个窗口,点击“zhangyi1974”。(如果这一步不能进行,你就重新用easylanguage打开zhangyi1974,再在窗口中右击鼠标,点击“verify”运行一下,没问题就行了。其实在verify没问题后就自动存盘了,再关闭。)

此时出现一个窗口如下:

在上图中,buy代表做多,sell代表平仓卖出;sellshort代表做空,buytocover 代表回补空头仓位,也就是买入回补。它们都显示“on”,表明zhangyi1974这个系统既可以做多,也可以做空。

点击右下角的“properties”,在出现的对话框中这样设置:

含义如下:

Commission代表每次交易的佣金数,因为是测试,我这次填写0。

Slippage代表实际成交价和下单的价格之间的滑点,滑点会造成亏损。我们这次填写0。

Initial代表起始资金为100000美元。

Interest代表利息,因为做外汇是涉及到利息的,我们这次填写0。

右边两个窗口中都是“1”,表示我只做多或做空1份。

最后点击“确定”。然后就回到“format analysis techniques & strategies”的对话框,点击“close”。此时zhangyi1974这个交易系统已经被导入到999999的日线图中。

如上图:日线图上出现了买卖信号。系统导入是成功的。我不会处理图,就在上图中加了一个奖章,奖章上面有个图标,把鼠标放在它上面会出现:“strategy performance report”,这个按钮就是测试交易系统的意思。点击它,专业的测试报告就自动生成了。把这个测试报告存盘就行了。存盘有2种格式——页面格式和excel格式。但excel格式似乎没有页面格式好。

附件是测试报告《30日均线交易系统的测试报告》。通过测试报告,我们可以知道,如果把大盘指数当作股指期货,不考虑杠杆因素,不考虑佣金,滑点等因素,从1991年05月30日到现在,能赚72倍。当然了,考虑到很多因素,这个数字是不可能的。我们只是用它来分析交易的细节。

如何解读测试报告

因为测试报告是英文版的,有人看不懂,解释一下。具体内容在《30日均线交易系统的测试报告》中英对照版excel里面。目前只翻译了自己懂的地方,不懂的以后再更新。

结束语

这是第3版。如果有人支持,我会继续写下去的。

相关文档