2012年10月27日星期六


Seasonality system
Backtest range: 2004.1-2012.10
CAR       Max system drawdown   CAR/MDD   Sharpe Ratio    Avg%Profit/Loss  Traders  %of winners
31.8%    -5.49%                          5.8               2.51                1.43                    1249      67.33





                                     
















                                                                                        -Oct.15-

练习:在Amibroker中建立S&P1200数据库


参考 http://www.amibroker.org/userkb/2008/03/25/ascii-import-standard-and-poors-global-1200/
Standard and Poor's Global 1200指数:覆盖70%的全球资本市场,由7个主要指标,包括31个地区的市场组成。
第一步:到标普官网下载SPG1200指数的成份股列表。http://www.standardandpoors.com Index Constituents
第二步:整理成份股板块分类信息。AB KB文章里的列表是直接在标普官网上下载的。现在官网上有已经没有具体成分个股的详细信息了。只好用VBA写了个excel工具从Yahoo Finance查询下载。很多公司在多个市场都有上市的股票,symbol重名的也很多,最后把不确定的股票都删掉,再去掉查不到industry和sector信息的,最终留下来969个股票。
第三步:将Sector和Industry序列分别存入broker.sectors 和broker.industries文件,在AB中建立新数据库SPG1200。然后是编辑SPG1200.format文件并保存在Formats目录下。还要把SPG1200.format手动添加到import.types文件里。文章说是自动添加,害得我跟只苍蝇一样在玻璃上撞来撞去,尝试了若干可能,最后才发现需要手动把SPG1200.format添到import.types文件里。
        sector和industry建立后,在第一个sector里面会有一堆industry185,186等直到industry256。如果是按照添加到方式,AB中原来的这些数字命名的sector就会都保留着。
        还有就是broker.industries中industry name+前面的数字的字符总数不能超过41个。超过的字符会在AB建立数据库的时候自动换行,变成一个新的industry,没有错误提示!比如有这么一个indusrty定义:3 Textile - Apparel Footwear & Accessories 在AB数据库里变成了两个industry:Textile - Apparel Footwear & Accessorie和s。逐一核对才找到原因。

第四步:把symbol,symbol full name,MarketID,IndustryID存入.csv文件导入AB中。这里又有一个地方文章没写清楚,查manual也没有明确的答案,我试了一下午才弄明白。在broker.industries文件里建立的是industry和sector的对应关系,所以多个industry前面可能是同样的数字(即多个industry对应同一个sector)。而在导入symbol时,每个industryID是依次排列的数字(!),且排列顺序必须同broker.industries文件里面的industry的排列顺序一致,这样导入的symbol才能同已经在AB数据库建立的市场结构对应好。附图是整理好的几个文件,一看应该就明白了。

      

还有一个地方值得注意,就是需要导入到.csv文件如果处于编辑状态,AB是不会导入的,但也没有错误提示。
                                                -Apr.14-

中文操作系统下Amibroker设置窗口显示异常的问题解决办法


AB安装后,很多setting window的显示不正常。下图是安装后的样子:














 

      原因是系统区域设定中的Non-Unicode程序的语言设定为中文,导致AB中的显示异常。把当前Non-Unicode语言设为英语应该就没问题了。
      但是我来回改了很多次这个设置,同时也把windos主题设置里面的窗口字体等设置也改了个遍,最后竟然出现了AB中References窗口字体变成了奇怪的大个子,而其他窗口全正常的情况。见下图:
   









  


      估计是把什么字体给改没了。下了一个英语语言包,安装后就OK了。
      因为Non-Unicode设成了英语,原来装的一些中文软件显示乱码,又安装了微软的AppLocale工具就一切解决了。

                                                                             -Apr.10-

通过google finance得到intraday 历史数据


      想把S&P Global 1200指数导到Amibroker中,Yahoo没有历史数据,Google有数据能看图,但是用Amiquote不能直接导进来。搜索到Google可以用网页查询的方式直接得到EOD和intraday的历史数据。搜索到的有用帖子:
http://www.marketcalls.in/database/google-realtime-intraday-backfill-data.html
http://www.codeproject.com/Articles/221952/Simple-Csharp-DLL-to-download-data-from-Google-Fin
      可以在excel用VBA来进行数据下载和整理,再通过csv导入到AB中。
      还搜到一个google文档说明,可以在google的spreadsheet中直接使用公式调用google finance的数据。
http://support.google.com/docs/bin/answer.py?hl=en&answer=155178
      新建一个sheet,在Cell A1中输入
=GoogleFinance("SPG1200", "all", "01/01/2009" , "4/8/2012" , "daily") 就得到S&P global 1200 的DOE数据了。不过数据需要修剪下才能导入AB中。
    Google spreadsheet sample

2012年10月26日星期五

Amibroker的外汇数据导入——Apr.3

       把AmiBroker的KB中关于data部分的帖子浏览一遍。按照 http://www.amibroker.com/kb/2006/08/09/amibroker-for-forex/ 提及的方法先通过ASCII文件导入历史数据,然后设置MT4作为DDE服务器,就可以得到实时数据了。
       本以为Oanda的正式帐号数据更好些,结果竟然严重丢数据,大段大段的丢啊,晕倒。试了几次还以为在AmiBroker中的设置有问题,后来在MT4里 面仔细看才发现AmiBroker中的异常时段原来是没数据。 另外,正式帐号的数据时间就是北京时间(GSM+8),而练习帐号的数据时间是美国东部时间(GSM-4)。
       两个关键地方试了半天才弄清楚,一个是时间的设置,一个是symbol的加入方式。
       先说时间设置。MT4的数据时间是GSM-4,本地时间是GSM+8,导入AmiBroker时,database两个地方需要设置: Intraday setting 中Pre-database settings的Time shift 要设为12小时,同时Configure中DDE plugin的Time offset设为-12小时。 无论database设置为local database还是DDE,前者同时影响在local database设置时导入到ASCII历史数据和DDE下的real time tick。我一开始无论设置0还是12,历史数据和实时数据总是时间对不上。所以 DDE plugin中的time offset也要设置。如果两个都设置为0,那么导入的数据是GSM-4时区的,而DDE进来的real time tick是local 时区(GSM+8)的,也对不上。
      另外一个问题是加入到symbol需要通过symbol菜单new的方式加入,然后导入ASCII历史数据,这样DDE的real time tick才能进来。我开始是直接导入ASCII的USDJPY历史数据,chart有,但DDE的数据就进不来。
新开一个博客,把原来关于交易的帖子都转这里来。这样原来的博客只留下旅游,摄影等内容。