您现在的位置:程序化交易>> 期货公式>> 交易开拓者(TB)>> 开拓者知识>>正文内容

国外知名策略-dual thrust分享 [开拓者 TB]

  • 咨询内容: oliverzrl的老弟在一个贴子中提到他的股指系统是根据dual thrust系统为雏形,所以特意找了一下这个系统。
    dual thrust是八几年一个老外写的,目前在自动化交易里应该还能排到前三吧。
    这个系统核心相当简单,我一直都相信越简单越有效,而且作者的思想很有借鉴之处,为方便与大家分享,我重写了一个TB版本。
    原形很简单,很多人经验都比我丰富,一定能扩充不少,如加入止损,止赢,加入资金/风险管理,改成日内系统等,从而打造成为自己的一个利器。

    写在前面的话:
    从看dual thrust的原形到重写TB代码,用时大概半小时,因为我本人是从事研发工作,代码从构思开始就会首先考虑逻辑思维的严密和健壮性,但也很可能有疏忽之处,比如这个系统我就没有加入涨跌停和最小幅度控制(我只想原汁原味重写,其它的大家自己扩充吧),所以大家在提问的时候,不要先入为主的认为我会犯很多低级错误,一定要认真读过代码,并对TB机制有足够的了解,这也是对我的尊重吧,坦白说,前几次发分享系统,看到大家的回复,我有些失落。
    另外:很多朋友通过QQ直接跟我沟通,因为本人用于维持生计的工作跟期货没任何关系,而且一直都很忙,写系统时要么是在上班的时候忙里偷闲偷偷摸摸的写上一段,要么就是利用休息时间,像重写这个系统就是在凌晨3点多,所以很多留言和询问我可能没有时间去关注,碰到没有回复的朋友,还请谅解。
    如果以后有时间的话,我会再重写一些MT4上比较有价值的策略和大家分享。

     

  • TB技术人员: dual thrust系统原形
    1. Inputs: K1(.5),K2(.5),Mday(1),Nday(1);
    2. Vars: BuyRange(0), SellRange(0);
    3. Vars: BuyTrig(0),SellTrig(0);
    4. Vars: HH(0),LL(0),HC(0),LC(0);

    5. If CurrentBar > 1 Then Begin
    6. HH = Highest(High,Mday);
    7. HC = Highest(Close,Mday);
    8. LL = Lowest(Low,Mday);
    9. LC = Lowest(Close,Mday);

    10. If (HH - LC) >= (HC - LL) Then Begin
    11. SellRange = HH - LC;
    12. End Else Begin
    13. SellRange = HC - LL;
    14. End;

    15. HH = Highest(High,Nday);
    16. HC = Highest(Close,Nday);
    17. LL = Lowest(Low,Nday);
    18. LC = Lowest(Close,Nday);

    19. If (HH - LC) >= (HC - LL) Then Begin
    20. BuyRange = HH - LC;
    21. End Else Begin
    22. BuyRange = HC - LL;
    23. End;

    24. BuyTrig = K1*BuyRange;
    25. SellTrig = K2*SellRange;

    26. If MarketPosition = 0 Then Begin
    27. Buy at Open of next bar + BuyTrig Stop;
    28. Sell at Open of next bar - SellTrig Stop;
    29. End;

    30. If MarketPosition = -1 Then Begin
    31. Buy at Open of next bar + Buytrig Stop;
    32. End;

    33. If MarketPosition = 1 Then Begin
    34. Sell at Open of next bar - SellTrig Stop;
    35. End;

    36. End;
    复制代码

     

  • TB客服: 本人重写的TB源码
    转载注明出处
    1. //------------------------------------------------------------------------
    2. // 简称: dual_thrust
    3. // 名称:
    4. // 类别: 公式应用
    5. // 类型: 用户应用
    6. // 输出: 穿堂风
    7. //------------------------------------------------------------------------


    8. Params
    9. Numeric K1(0.5);
    10. Numeric K2(0.5);
    11. Numeric Mday(1);
    12. Numeric Nday(1);
    13. Numeric lots(1);
    14. Numeric offset(0);

    15. Vars
    16. Numeric BuyRange(0);
    17. Numeric SellRange(0);
    18. Numeric BuyTrig(0);
    19. Numeric SellTrig(0);
    20. Numeric HH;
    21. Numeric LL;
    22. Numeric HC;
    23. Numeric LC;
    24. Numeric i_offset;
    25. Numeric BuyPosition;
    26. Numeric SellPosition;

    27. Begin
    28. If(CurrentBar > 44*Max(Mday,Nday))//使用的是5分钟周期,其它的周期自己做相应修改
    29. {
    30.         i_offset = offset*MinMove*PriceScale;
    31.         HH = Highest(HighD(1),Mday);
    32.         HC = Highest(CloseD(1),Mday);
    33.         LL = Lowest(LowD(1),Mday);
    34.         LC = Lowest(CloseD(1),Mday);

    35.         If((HH - LC) >= (HC - LL))
    36.         {
    37.                 SellRange = HH - LC;
    38.         }
    39.         Else
    40.         {
    41.                 SellRange = HC - LL;
    42.         }

    43.         HH = Highest(HighD(1),Nday);
    44.         HC = Highest(CloseD(1),Nday);
    45.         LL = Lowest(LowD(1),Nday);
    46.         LC = Lowest(CloseD(1),Nday);

    47.         If((HH - LC) >= (HC - LL))
    48.         {
    49.                 BuyRange = HH - LC;
    50.         }
    51.         Else
    52.         {
    53.                 BuyRange = HC - LL;
    54.         }

    55.         BuyTrig = K1*BuyRange;
    56.         SellTrig = K2*SellRange;
    57.        
    58.         BuyPosition = OpenD(0)+BuyTrig;
    59.         SellPosition = OpenD(0)-SellTrig;
    60.        
    61.         PlotNumeric("BuyPosition",BuyPosition);
    62.         PlotNumeric("SellPosition",SellPosition);

    63.         If(MarketPosition == 0)
    64.         {
    65.                 If(High>=BuyPosition)
    66.                 {
    67.                         Buy(lots,Max(Open,BuyPosition)+i_offset);
    68.                         Return;
    69.                 }
    70.                
    71.                 If(Low<=SellPosition)
    72.                 {
    73.                         SellShort(lots,Min(Open,SellPosition)-i_offset);
    74.                         Return;
    75.                 }
    76.         }

    77.         If(MarketPosition == -1)
    78.         {
    79.                 If(High>=BuyPosition)
    80.                 {
    81.                         Buy(lots,Max(Open,BuyPosition)+i_offset);
    82.                         Return;
    83.                 }
    84.         }

    85.         If(MarketPosition == 1)
    86.         {
    87.                 If(Low<=SellPosition)
    88.                 {
    89.                         SellShort(lots,Min(Open,SellPosition)-i_offset);
    90.                         Return;
    91.                 }
    92.         }
    93. }
    94. End

    95. //------------------------------------------------------------------------
    96. // 编译版本        GS2010.12.08
    97. // 用户版本        2011/07/24 02:14
    98. // 版权所有        穿堂风
    99. // 更改声明        TradeBlazer Software保留对TradeBlazer平台
    100. //                        每一版本的TrabeBlazer公式修改和重写的权利
    101. //------------------------------------------------------------------------
    复制代码

     

  • 网友回复: RB 5分钟周期
    使用默认参数,未作优化
    其它品种大家可以去试试
    1.jpg (93.48 KB, 下载次数: 27) 2011-7-24 03:52:55 上传 下载次数: 27
    2.jpg (69.76 KB, 下载次数: 10) 2011-7-24 03:52:56 上传 下载次数: 10

     

  • 网友回复: 参数设置说明
    3.jpg (40.65 KB, 下载次数: 7) 2011-7-24 03:57:13 上传 下载次数: 7

 

如果以上指标公式不适用于您常用的行情软件

或者您想改编成选股公式,以便快速选出某种形态个股的话,

可以联系我们相关技术人员 QQ: 262069696  点击在线交流进行 有偿 改编!

 


【字体: 】【打印文章】【查看评论

相关文章

    指定的模型还没有相关内容!