一直做美盘,最近对国内期货有些兴趣,买了些数据来做测试。发现有一个系统在白糖上不错。这个系统是 Michael Chalek 在80 年代开发的 Dual Thrust。基本原理很简单,描述出来如下,这样不懂编程的人都可以明白: 1. 在今天的收盘,计算两个值: 最高价-收盘价, 和 收盘价-最低价。然后取这两个值较大的那个,乘以k值0.7。把结果称为 触发值。 2. 在明天的开盘,记录开盘价,然后在价格超过(开盘+触发值)时马上买入,或者价格低于(开盘-触发值)时马上卖空。 3. 没有明确止损。这个系统是反转系统,也就是说,如果在价格超过(开盘+触发值)时手头有一口空单,则买入两口。同理,如果在价格低于(开盘-触发值)时手上有一口多单,则卖出两口。 我用TradeStation测试的结果如下: 测试条件: 一口合约,已减去交易费用50元 时期: 2006-1-6 (白糖开始交易)至 2009-1-8 交易次数: 249 胜率: 48.59% 平均赢利: 223.17元 最大连亏: 5880 元 要求不高的话,这已经是一个可以投入实盘交易的系统了。k是唯一的参数,在大范围内变动(0.5-1.1)时,系统赢利都不错。有兴趣的同好可以试验各种滤网,看哪种滤网能显著提高绩效。如果有时间,我会在其他的品种上都测试一下。 因为交易美盘,我没法人工交易国内期货。哪位朋友可以编出TB的代码,或者有自动交易的建议,请告诉我一下。谢谢。
有两个过程: 1. 拼接:取交易量最大的合约,将数据拼在一起。 2. 补差:切换时,计算前月合约与后月合约在切换日前一天的差值,将这个差值补到所有切换日之前的数据中。 这是美盘中常说的 back-adjusted continuous data。 把国内期货的数据转换到这种格式确实花了俺好几个钟头。
对于白糖K取值为1的情况下似乎结果更理想。 如果K取值0.7, 我在文华的白糖指数30分钟上测试,只以30分钟收盘价判断是否满足下单条件并只以收盘价下单,从06年8月份(我的数据最早就那么多)到现在,始终交易1收共盈利26329元,交易费用5960元(考虑滑点假定每手20元),胜率43%,profit factor 1.77 需注意系统的一大段盈利出现在06年的初期,当时是强烈的单边行情。
我想不能一概而论。可以就这个系统,用你说的两种方式都做试验,一定会有收获,这样做出的结论是一手的,对你的交易更有指导意义。 现在有TradeStation了吗?neo_cn 坛友写过TS的用法教程,正好可以上手。
hi Maharaj兄, TS是有了,不过还没搞定怎么用,导入30分钟的历史数据总是有问题,老是显示不出来,所以还没去研究TS的CODING,回头我去看看neo_cn坛友写的教程 呵呵。 我还是在我原来用C++写的测试程序上,测试了一下你提到的这个方法,不过我测的是日内交易就是了 呵呵 发现和ATR比,交易次数增加了,成功率增加了1个百分点,优势率差不多,但整体的盈利额增加了,我估计是因为交易次数增加的缘故。至于K值,我的程序同样发现1.1的效果比0.7的好
可以把ATR的C++ 程序(只需算法)贴出来看看吗? 怎么选择不同的k值我觉得是有讲究的,是个讨论的好题目。不过,首先要统一数据,慢慢来。clm 坛友也有兴趣。 另外,如果你喜欢C#,可以试试 QuantDeveloper, 我在另一帖给了下载,搜索下新贴就找到了。