- 精华
- 0
- 在线时间
- 59 小时
- UID
- 116726
- 积分
- 166
- 帖子
- 57
- 阅读权限
- 40
- 注册时间
- 2013-4-2
- 最后登录
- 2014-7-16
- 精华
- 0
- UID
- 116726
- 积分
- 166
- 帖子
- 57
- 主题
- 8
- 阅读权限
- 40
- 注册时间
- 2013-4-2
- 最后登录
- 2014-7-16
|
本帖最后由 米小兔 于 2013-4-9 15:10 编辑
DualThrust简称DT,是海外top10交易系统中的其一.属于开盘区间突破类交易系统,以今日开盘价加\减一定比例的昨日振幅,确定上下轨.日内突破上轨时平空做多,突破下轨时平多做空.DualThrust在形式上和开盘区间突破策略类似.不同点主要体现在两个方面: DualThrust在Range的设置上,引入前N日的四个价位,使得一定时期内的Range相对稳定,可以适用于日间的趋势跟踪;DualThrust对于多头和空头的触发条件,考虑了非对称的幅度,做多和做空参考的Range可以选择不同的周期参数,也可以通过参数K1和K2来确定.
原版本DT在RB000中的测试效果,时间范围20090101-20130101.
关键绩效数据:
资金曲线:
针对缺陷的修改:
1) 日内宽幅震荡,高低点反复穿越开多触发价格和开空触发价格,导致日内反复被洗,这种心情相信实盘在用趋势跟随类策略的人都能理解.效果图如下:
针对此种情况,我们设置一个参数TimesMaxToday,用于限制当天的开仓次数,避免在震荡行情中反复被洗.
TimesMaxToday的值设置为1,意思为限定当天开仓次数1次, 有效避免了当天反复被洗的悲剧.修改过后的效果图如下:
修改后的版本命名为ITF_T_DualThrust_V101,在RB000中的测试环境设置同上,关键数据的对照,:
从关键数据的对照中可以看出,减小最大回撤的同时也损失了部分利润.
其他参数优化列表:
- //------------------------------------------------------------------------
- // 简称: ITF_T_DualThrust_V101
- // 名称: 国贸期货上海营业部量化交易 客户群:186100158
- // 类别: 公式应用
- // 类型: 用户应用
- // 输出:
- //------------------------------------------------------------------------
- Params
- Numeric Lots(1);
- Numeric TimesMaxToday(1); //限制当天开仓最多次数;
- Numeric K1(0.5);
- Numeric K2(0.5);
- Numeric Mday(1);
- Numeric Nday(1);
- Numeric offset(0);
-
- Vars
- Numeric BuyRange(0);
- Numeric SellRange(0);
- Numeric BuyTrig(0);
- Numeric SellTrig(0);
- Numeric HH;
- Numeric LL;
- Numeric HC;
- Numeric LC;
- Numeric i_offset;
- Numeric BuyPosition;
- Numeric SellPosition;
- NumericSeries TimesToday(0); //记录当天开仓次数;
- Begin
- If(Barstatus==2 )
- {
- If( Time==0.090000 And CurrentTime<=0.090001) Return;
- If( Time==0.101500 And CurrentTime<=0.103001) Return;
- If( Time==0.133000 And CurrentTime<=0.133001) Return;
- }
-
- If(CurrentBar > 44*Max(Mday,Nday))//使用的是5分钟周期,其它的周期自己做相应修改
- {
- i_offset = offset*MinMove*PriceScale;
- HH = Highest(HighD(1),Mday);
- HC = Highest(CloseD(1),Mday);
- LL = Lowest(LowD(1),Mday);
- LC = Lowest(CloseD(1),Mday);
- If((HH - LC) >= (HC - LL))
- {
- SellRange = HH - LC;
- }
- Else
- {
- SellRange = HC - LL;
- }
- HH = Highest(HighD(1),Nday);
- HC = Highest(CloseD(1),Nday);
- LL = Lowest(LowD(1),Nday);
- LC = Lowest(CloseD(1),Nday);
- If((HH - LC) >= (HC - LL))
- {
- BuyRange = HH - LC;
- }
- Else
- {
- BuyRange = HC - LL;
- }
- BuyTrig = K1*BuyRange;
- SellTrig = K2*SellRange;
- BuyPosition = OpenD(0)+BuyTrig;
- SellPosition = OpenD(0)-SellTrig;
- PlotNumeric("BuyPosition",BuyPosition);
- PlotNumeric("SellPosition",SellPosition);
-
- //开盘第一根K线将当天开仓次数清零;
- If(BarsSinceToday==0)
- {
- TimesToday = 0;
- }
- //开仓;
- If(TimesToday<TimesMaxToday And CurrentBar>90)
- {
- If(MarketPosition!=1)
- {
- If(High>=BuyPosition)
- {
- Buy(lots,Max(Open,BuyPosition)+i_offset);
- TimesToday = TimesToday+1;
- Return;
- }
- }
- If(MarketPosition!=-1)
- {
- If(Low<=SellPosition)
- {
- SellShort(lots,Min(Open,SellPosition)-i_offset);
- TimesToday = TimesToday+1;
- Return;
- }
- }
- }
- //平仓;
- If(MarketPosition==1 and Low<=SellPosition)
- {
- Sell(lots,Min(Open,SellPosition)-i_offset);
- TimesToday = TimesToday+1;
- Return;
- }
- If(MarketPosition==-1 and High>=BuyPosition)
- {
- BuyToCover(lots,Max(Open,BuyPosition)+i_offset);
- TimesToday = TimesToday+1;
- Return;
- }
- }
- Commentary("当天开仓次数="+Text(TimesToday));
-
- End
- //------------------------------------------------------------------------
- // 编译版本 GS2010.12.08
- // 用户版本 2013/03/28 11:02
- // 版权所有 国贸期货上海营业部量化交易 客户群:186100158
- // 更改声明 TradeBlazer Software保留对TradeBlazer平台
- // 每一版本的TrabeBlazer公式修改和重写的权利
- //------------------------------------------------------------------------
复制代码 |
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
|