如何开发自己的交易系统并轻松得到专业的系统测试报告.docx
《如何开发自己的交易系统并轻松得到专业的系统测试报告.docx》由会员分享,可在线阅读,更多相关《如何开发自己的交易系统并轻松得到专业的系统测试报告.docx(15页珍藏版)》请在冰豆网上搜索。
如何开发自己的交易系统并轻松得到专业的系统测试报告
《如何开发自己的交易系统并轻松得到专业的系统测试报告》
作者:
张轶
邮件
版本:
2009年01月06日
2008年12月15日版本内容
第一次写,最原始的版本。
2008年12月17日版本内容更新如下:
对导入日线数据做了添加注释,用红色字体。
加入了导入5分钟数据的方法。
把案例程序重新写了,这次应该是对的。
更新了一些图。
重新生成测试报告,包含了做空。
更新了测试报告。
2009年01月06日版本内容更新如下:
交易所建议采用纳斯达克交易所,以防止出现日线和分钟线不完整的情况。
测试报告的中文解释。
目的
作为一个专业的交易者,离不开测试交易系统。
国内行情软件的测试功能太烂了,测试的结果经常是错的(这和我不会编程也有关系吧,但你去看看同花顺的测试功能——只会做多,不会做空,报告也很简单)。
当有网友给我看tradestation的测试报告时,我才发现原来软件可以做出如此专业的测试报告。
故下决心开始学习用tradestation做测试。
没学多久,就发现这个软件在国内根本不流行,大部分人都不了解它。
所以,有必要把我学到的东西用文字总结出来。
Tradetation是美国tradestation科技公司开发的一款行情软件。
像国内的同花顺和文华财经等行情软件一样:
可以同时看股票、期货、外汇和期权的行情。
但是在功能上,它比国内的行情软件强n倍。
国内行情软件能做的事,tradestaion也能做;tradestaion能做的很多事,国内行情软件却不能做。
因为tradestation是为美国人服务的,它并不提供中国的股票和期货行情。
所以股票和期货交易者并不需要购买这个软件,更不需要购买它的行情(在美国,看行情也是要给钱的)。
但是在离线的状态下,tradestation的编程和系统测试功能却是100%完整的。
所以,对我们来说,tradestation成为一个极好的编程和测试平台。
只要你能把交易系统用easylanguage(顾名思义是简单的语言)写出来,系统测试只要点击一个按钮,它就能生成比国内软件强n倍的测试报告。
非常专业,大家可以看附件《30日均线交易系统的测试报告》。
(张轶注:
页面格式带图,excel格式不带图。
为了解释英文,第3版采用excel格式。
页面格式在以前的版本中去找。
)
国内研究tradestation的论坛
东方华尔街论坛海洋部落论坛建议重点看东方华尔街论坛的文章和海洋部落论坛一个叫neo_cn的人的文章。
选择哪个版本?
Tradestation从之前的版已经发展到了现在的版(2008年10月上市的)。
每个版本还有更细的版本区分。
版就是2000版,非常老,还有人在用。
版(2005年底2006初左右上市的)之后的版本界面差不多,但和版差别很大。
根据东方华尔街论坛上面“stonelevin”的发言来看,能导入文本数据,并做出完整的测试报告的版本是build3006。
他的原文如下:
Tradestation各破解版本试用情况说明
这几天我试用了论坛里发布的很多TS版本,结果是都有问题,没有一个是真正意义上的实用版本!
Build1674、Build1683版本的问题是文本数据导入不了。
Build1615、Build1631、Build1634版本文本数据可导入,但不能插入策略(InsertStrategy)。
Build3863、Build3896比较好了,但策略测试报告里的Tradeslist是空的。
花了几天时间想升级TS,结果发现还是用了近两年的Build3006版本好用。
建议各位喜好TS的朋友,不要浪费太多的时间在上了。
建议破解的高手,你们发布的TS版本至少要自己做过策略测试,如果你不会,你可以委托会的朋友多测试一下,不要看到能够登录就以为大功告成了。
做一件事容易,做好一件事不容易!
[本帖最后由stonelevin于2008-11-614:
42编辑]
他说版不能导入文本数据,只能借助于软件owndata,但他说效果不好。
我试过版,结果是自己根本不会用。
他说版不能做测试。
他说版测试报告里面没有交易记录(tradelist)。
这点我可以确认,网友给我的测试报告就是用版测试的,里面确实没有交易记录。
所以,我们就从build3006版开始。
下载软件
到东方华尔街论坛看一个叫“100”的人发的帖子,里面有所有版本的链接。
我们只下载3006版。
破解就不说了(我也不会,似乎tradestation科技公司对这个管的很严,海洋部落论坛的一些破解信息都被删除了)。
因为链接是外国的地址,它总是限制我下载。
我现在使用的版本是neo_cn传给我的。
安装软件
下载Tradestationbuild3006版。
您已经下载了。
找到并双击“AuthTokenCalc”,输入“,然后点击“Authorize”。
安装Tradestationbuild3006。
第一次安装完会提示重启电脑,直接重启电脑。
如果你再删除,再重装,一般就不会再提示重启电脑。
重启后先选择退出tradestation,把“,”这2个文件复制到C:
\ProgramFiles\TradeStation\Program文件夹里面,替换原来的2个文件。
启动Tradestation,什么都不做,然后退出。
把“”这个文件拷贝到C:
\ProgramFiles\TradeStation\Program\Cache文件夹里面。
启动Tradestaton,选择workoffline(离线工作)。
如果能进入画面,就成功了。
收集文本数据
数据有很多种格式,文本数据是其中一种,也是版能直接调用的数据,版就是强在这里。
文本数据格式似乎也叫ACSII格式。
如何收集股票数据?
为了尽量减少本文件的体积,我尽量用文字说明,少用图。
打开通达信。
点击“系统”=》“盘后数据下载”。
在出现的对话框中,像上图一样设置。
然后点击“开始下载”,就得到了所有的历史数据。
我们只研究日线数据。
分钟图不讨论,但道理都是一样的。
本书以上证指数为例,打开上涨指数的日线图,再点击通达信的“系统”=》“数据导出”,我们选择文本也行,选择excel也行。
建议选择excel。
因为即使用文本导出,也会发现里面有汉字。
Tradestation是美国软件,不支持任何汉字。
我们我们导出后,用excel删除里面的所有汉字,不用担心。
我们只保留:
日期,开盘价,最高价,最低价,收盘价的数据。
其它汉字和数字全部删除。
不必担心,tradestaion能认识这样的数据。
最后把这些输入拷贝到文本文件中,取个名字叫“”,后面测试用。
(张轶注:
网友说可以一次性下载所有盘后数据,但我没有测试过。
)
如何收集期货数据?
这是最难的,因为在中国,期货数据被期货交易所垄断了,卖几万元。
所以,我根本搞不到。
我在淘宝网上买过,也是不完整的,当时很生气,立刻删除了。
现在的折中方式是使用富远行情软件的期货连续数据。
但即使如此,它的连续数据也不完整,因为中国的很多期货品种上市的时间都不长。
即使有10年的行情,中间也有断裂现象。
如此,只好用美国的连续数据代替了。
尽量选择连续10年的数据,否则没有测试意义。
如果谁有国内期货的文本数据,不管多少,不管长短,都请发邮件给我。
我想开始收集期货数据,有多少就收集多少,不怕重复。
如何收集外汇数据?
网上有很多免费的资源,可以自己去找。
东方华尔街论坛也有。
注意:
tradestation是英文软件,它不支持汉字。
所以收集了文本数据以后,要打开文件看看里面是否有汉字,如果有汉字,请删除。
文件名也必须是英文字母。
把文本数据导入
以下文字原文和思想来自一个期货论坛叫黑马的人(听说此人现在能用tradestation做国内期货的自动化交易,但具体不知),链接如下:
我把黑马的文字研究了多次,才搞懂如何导入文本数据。
为了尊重黑马,我尽量采用他的文字和图片,并加上我的个人体会。
希望没有侵权。
TradeStation读取文本数据的方法
TradeStation在很多功能上比TradeStation2000i增强了不少,不过为TradeStation安装文本数据比前面版本稍微麻烦一些。
首先,要先建立一个交易所:
在TradeStation安装目录(一般情况下是C:
\ProgramFiles\TradeStation)下的CAL目录下新建一个文本文件“”,内容可以就一行,例如:
CustomExchange1,45
其中45表示的是中国所在的时区:
东8区。
(张轶注:
此处强烈建议采用纳斯达克的交易所,也就是把“CustomExchange1,45”更改为“NASDAQ,10”,全部大写才行。
这样可以避免在日线图上看K线时每周缺少一天的现象。
具体原因见。
)
其次,确定你的文本数据文件存放的路径,假定文本数据存放在D:
\DATA目录下,假定里面有一个的文本数据文件。
然后,打开TradeStation,按照下面的步骤操作
第一步
(张轶注:
因为tradestation不对亚洲区提供行情服务,我们买了账号也没用,所以我们只在workoffline状态下做测试系统的相关工作。
数字1是双击“chartanalysis”,数字2,3是在黑色窗口里右击鼠标并选择第一项“formatsymbol”,数字4是点击“lookup”,数字7所在的图片中的“typeascii”是“数据类型为ascii,文本数据就要选择ascii”,“prefi”是“前缀”,你输入其它字母也可以,但注意不要引起软件的冲突,否则就无法进行下去。
建议就输入“TXT”。
每次打开一个新的文本数据,就要从数字4重新开始。
)
第二步
(张轶注:
这里要特别注意你的文本数据是什么格式,上面和下面要对应上。
不同的软件导出的文本数据有点点不同,这里要保证是对应的。
Date是日期,time是时间,open是开盘价,high是最高价,low是最低价,close是收盘价,volume是成交量,openinterest是持仓量,期货有持仓量,股票没有。
下面的“datafile”就是你要打开的文本数据的格式。
)
第三步
(张轶注:
上面的选项是选择你的日期格式是用“横杠”还是“斜杠”,具体看“datafile”里面是什么样子,就选择什么样子。
)
第四步
如果事先没有新建一个交易所,在这个对话框的Exchange这一项就是空的,无法进行下一步。
(张轶注:
category选择数据类型,一般是股票,期货,外汇。
其它选项都可以采用默认的。
如果是做测试,全部选择默认的并不影响测试结果。
)
第五步
根据数据文件的特征来配置交易节。
(张轶注:
这里就是设置交易时间,session1可以设置成上午,以股票为例,就是9:
00——11:
30,session2设置成下午1:
00——3:
00。
期货相应设置。
外汇没试过。
经过测试:
如果是股票和期货的日线数据,采用默认设置是没关系的。
)
第6步
如果指定目录下的文本数据文件都是一种类型的,那么就可以选择第二个选项,如果选择第一个选项那么TS会对这个文件单独保存它的配置文件。
完成,这样就可以在TS中显示出的图表了。
换品种也很方便:
只需要输入数据文件的名字即可,在前面需要加上前缀“TXT”。
例如现在要分析D:
\DATA\数据文件,只需要在图表上输入“+TXT:
”即可。
换其他品种以次类推。
(张轶注:
如果你的数据是日线数据。
进行到这步会发现没有出现上面的图。
因为默认的是5分钟图。
此时可以在黑色窗口中右击鼠标,选择第一项,里面有很多设置,修改为daily才会是日线图,默认的是5分钟图。
也可以把竹线改成K线。
软件默认的下跌是红色,也要改过来,多试试就行了。
)
不足之处:
本文只涉及到TradeStation8读取静态文本数据文件进行分析,尚未考虑使用GlobalServer中的数据。
使用GlobalServer的数据需要安装OwnData,在为OwnData配置了GlobalServer数据源之后,TradeStation不但可以通过OwnData从GlobalServer中读取盘后数据,还可以读取GlobalServer中提供的实时数据。
(限于实践水平如有不当或更好的办法敬请指正)
以上是黑马的文字。
进行到这步需要很多尝试。
比如要设置数据的开始点,每次都要根据你的文本数据修改起始日期,否则不显示k线。
图片如下:
在上图的“settings”里面,daily才代表日线图。
Firstdata代表数据开始的开始点,我们要按照美国的人习惯设置成:
“12/01/1990”。
然后在点击:
“style”,看下面的图。
上图中“candlestick”才是我们的K线,upbody(close>open)就是指上涨情况,我们要调成红色。
Downbody(close勾选“setasdefault”,再点击确定就行了。
黑马讲的步骤需要反复尝试,有个过程。
如果有问题,可以选择把D盘data文件下的和attributes删除,或者修改文本文件的名字,或者修改data文件夹的文字,再从头来,迟早能够成功的。
顺利导入5分钟数据的秘密
(张轶注:
以下文字是hcui网友在东方华尔街论坛的发言。
我抄过来的,同样希望没有侵权。
链接如下:
)
不需要OWNDATA可以直接导入TXT数据,而且速度超快,但按照网上公布的方法导入时,只能顺利导入日线以上级别数据,在导入日内级别数据(如5分钟线)时会出现很奇怪的问题,总之无法顺利导入,在苦心研究几天TS的HELP后,终于发现了导入5分钟数据的秘密。
TS导入时的时间是基于纽约时间的,我们在导入国内数据是设置时区为中国时区,两者之间存在12/13小时的时差,这就是显示“Nohistoricaldataforthissymbol”(无历史数据)的原因。
解决办法很简单:
1、在TradeStation安装目录下的CAL目录下“”里,用美国时区,即
NASDAQ,10
(张轶注:
由此看见,因为这个软件是美国的,采用纳斯达克的设置才比较好用。
)
编写交易系统
Tradestaion使用easylanguage(有人说叫“易语言”)编写指标和交易系统。
这个语言是最简单的语言,只是中国人没机会接触它。
懂编程的人学起来非常快,因为这个语言非常现代,你能想到的,它都提前想到了。
缺点是没有中文教材,只有英文教材。
只能慢慢学了。
下面开始编一个交易系统:
收盘价上了30日均线就以收盘价买入,收盘价下了30日均线就以收盘价平仓,并反手做空。
如此循环,永远在市场中。
一次只持有1份,以收盘价做为成交价。
在tradestation中点击:
“easylanguage=>neweasylanguagedocument=>strategy”。
Strategy就是交易系统的意思。
此时出现了一个对话框,在对话框中,name就是取名字,你随便取一个名字,我取了我的名字zhangyi1974。
Notes让你写注解,随便填,不填也可以。
Select让你选择,我们选择“(none)”,也就是什么都不选。
点击“OK”,进入编辑状态。
输入以下文字:
{longifclosecrossesover30maandshortifpricecrossesunder30ma}
ifclosecrossesoveraverage(close,30)andmarketposition=0thenbegin
buy1sharethisbarclose;
end;
ifclosecrossesoveraverage(close,30)andmarketposition=-1thenbegin
buytocover1sharethisbarclose;
buy1sharethisbarclose;
end;
ifclosecrossesunderaverage(close,30)andmarketposition=0thenbegin
sellshort1sharethisbarclose;
end;
ifclosecrossesunderaverage(close,30)andmarketposition=1thenbegin
sell1sharethisbarclose;
sellshort1sharethisbarclose;
end;
{copyright(c)2008zhangyi.allrightsreserved.}
我大概解释一下:
【{}里面的话都是废话,属于注释的,可以不管。
】
ifclosecrossesoveraverage(close,30)andmarketposition=0thenbegin
buy1sharethisbarclose;
end;
【如果收盘价和30日均线金叉,且之前是空仓的,那么就在收盘价买入1份。
】
ifclosecrossesoveraverage(close,30)andmarketposition=-1thenbegin
buytocover1sharethisbarclose;
buy1sharethisbarclose;
end;
【收盘价和30日均线金叉,且之前持有空头仓位,那么就在收盘价回补(买入)1份空头仓位,在收盘价买入1份。
】
ifclosecrossesunderaverage(close,30)andmarketposition=0thenbegin
sellshort1sharethisbarclose;
end;
【如果收盘价和30日均线死叉,且之前是空仓的,那么就在收盘价做空1份。
】
ifclosecrossesunderaverage(close,30)andmarketposition=1thenbegin
sell1sharethisbarclose;
sellshort1sharethisbarclose;
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份。
最后点击“确定”。
然后就回到“formatanalysistechniques&strategies”的对话框,点击“close”。
此时zhangyi1974这个交易系统已经被导入到999999的日线图中。
如上图:
日线图上出现了买卖信号。
系统导入是成功的。
我不会处理图,就在上图中加了一个奖章,奖章上面有个图标,把鼠标放在它上面会出现:
“strategyperformancereport”,这个按钮就是测试交易系统的意思。
点击它,专业的测试报告就自动生成了。
把这个测试报告存盘就行了。
存盘有2种格式——页面格式和excel格式。
但excel格式似乎没有页面格式好。
附件是测试报告《30日均线交易系统的测试报告》。
通过测试报告,我们可以知道,如果把大盘指数当作股指期货,不考虑杠杆因素,不考虑佣金,滑点等因素,从1991年05月30日到现在,能赚72倍。
当然了,考虑到很多因素,这个数字是不可能的。
我们只是用它来分析交易的细节。
如何解读测试报告
因为测试报告是英文版的,有人看不懂,解释一下。
具体内容在《30日均线交易系统的测试报告》中英对照版excel里面。
目前只翻译了自己懂的地方,不懂的以后再更新。
结束语
这是第3版。
如果有人支持,我会继续写下去的。