- 精华
- 0
- 在线时间
- 908 小时
- UID
- 112594
- 积分
- 333
- 帖子
- 281
- 阅读权限
- 50
- 注册时间
- 2012-9-20
- 最后登录
- 2013-12-4
- 精华
- 0
- UID
- 112594
- 积分
- 333
- 帖子
- 281
- 主题
- 8
- 阅读权限
- 50
- 注册时间
- 2012-9-20
- 最后登录
- 2013-12-4
|
本帖最后由 sorakiraa 于 2012-10-12 11:37 编辑
本人初学程序化交易,刚通读了柯蒂斯的《海龟交易法则》,所以迫不及待的就测试了一下几个经典系统。
以下为本次测试系统的源码:- //------------------------------------------------------------------------
- // 简称: ATR_Breaker
- // 名称: 波动性突破系统
- // 类别: 公式应用
- // 类型: 用户应用
- // 输出:
- //------------------------------------------------------------------------
- Params
- Numeric range(1.5);
- Numeric length(10);
- Numeric N(20);
- Numeric lots(1);
- Vars
- NumericSeries TR;
- NumericSeries ATR;
- BoolSeries DT;
- BoolSeries KT;
- BoolSeries DT2;
- BoolSeries KT2;
-
- Begin
- TR=Max(Max(High-Low,Abs(Close[1]-High)),Abs(Close[1]-Low));
- ATR=Average(TR[1],length);
- DT=Close>Close[1]+ATR[1]*range;
- KT=Close<Close[1]-ATR[1]*range;
- DT2=(CountIf(DT,2)==1)&&DT;
- KT2=(CountIf(KT,2)==1)&&KT;
-
- PlotNumeric("UpperBand",Close+ATR*range);
- PlotNumeric("LowerBand",Close-ATR*range);
-
- If(DT[1])
- Buy(lots,Open);
- If(KT[1])
- SellShort(lots,Open);
- If(CountIf(DT[1],N)==0||DT2[1])
- Sell(lots,Open);
- If(CountIf(KT[1],N)==0||KT2[1])
- BuyToCover(lots,Open);
- End
- //------------------------------------------------------------------------
- // 编译版本 GS2010.12.08
- // 用户版本 2012/10/07 08:52
- // 版权所有 sora4you
- // 更改声明 TradeBlazer Software保留对TradeBlazer平台
- // 每一版本的TrabeBlazer公式修改和重写的权利
- //------------------------------------------------------------------------
复制代码 本次测试品种为ME888(甲醇连续),测试周期为日线交易,样本数为300
全局设置:
参数优化:
实际上我并没有直接对整个样本进行四参数优化,那样不仅耗时而且也无法说明一些问题
这里采用了滚动最优化窗口(rolling optimization window)方法
简单地说,就是先截取2011年11月到2012年2月的数据进行参数优化,将length和N两个日期值定死为10,40。
接着将2012年2月到4月的数据添上来,再依次对range和lots进行优化;当把lots限定为10时对range在(0.5-2.0 步长0.1)进行测试,结果发现range为1.5时结果最佳;
再固定range为1.5,测试lots,发现当lots为40,50时结果最佳。
同上,依次将测试终止期推后到6月,8月,直到今天。分别测试,最后我们发现:range为1.5,lots为40时最佳。
注意两点:1.由于这里测试期只有两年,所以窗口测试效果还不算太理想,如果有炒外汇的朋友可以试着对10年前的数据进行优化。
2.关于最优化的目标,可以见仁见智。这里用的是净利润最大,当然考虑系统的健壮性,可以参考R方或者夏普系数。
以下为优化后的系统性能报告:
总盈亏:
交易分析:
月度分析:
交易盈亏曲线:
交易明细图:
望各路神仙不吝赐教!!!!!
|
|