设为首页收藏本站

 找回密码
 注册
楼主: 穿堂风
打印 上一主题 下一主题

国外知名策略-dual thrust分享 [复制链接]

Rank: 5Rank: 5

精华
0
UID
15958
积分
1290
帖子
155
主题
22
阅读权限
60
注册时间
2010-9-9
最后登录
2021-1-25
跳转到指定楼层
1#
发表于 2011-7-24 03:45:15 |显示全部楼层 |倒序浏览
oliverzrl的老弟在一个贴子中提到他的股指系统是根据dual thrust系统为雏形,所以特意找了一下这个系统。
dual thrust是八几年一个老外写的,目前在自动化交易里应该还能排到前三吧。
这个系统核心相当简单,我一直都相信越简单越有效,而且作者的思想很有借鉴之处,为方便与大家分享,我重写了一个TB版本。
原形很简单,很多人经验都比我丰富,一定能扩充不少,如加入止损,止赢,加入资金/风险管理,改成日内系统等,从而打造成为自己的一个利器。

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

总评分: 威望 + 26   查看全部评分

我一生在纸上,被风吹乱

Rank: 5Rank: 5

精华
0
UID
15958
积分
1290
帖子
155
主题
22
阅读权限
60
注册时间
2010-9-9
最后登录
2021-1-25
2#
发表于 2011-7-24 03:47:17 |显示全部楼层
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;
复制代码
我一生在纸上,被风吹乱

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
15958
积分
1290
帖子
155
主题
22
阅读权限
60
注册时间
2010-9-9
最后登录
2021-1-25
3#
发表于 2011-7-24 03:49:33 |显示全部楼层
本人重写的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. //------------------------------------------------------------------------
复制代码
我一生在纸上,被风吹乱

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
15958
积分
1290
帖子
155
主题
22
阅读权限
60
注册时间
2010-9-9
最后登录
2021-1-25
4#
发表于 2011-7-24 03:53:09 |显示全部楼层
RB 5分钟周期
使用默认参数,未作优化
其它品种大家可以去试试

附件: 你需要登录才可以下载或查看附件。没有帐号?注册
我一生在纸上,被风吹乱

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
15958
积分
1290
帖子
155
主题
22
阅读权限
60
注册时间
2010-9-9
最后登录
2021-1-25
5#
发表于 2011-7-24 03:57:22 |显示全部楼层
参数设置说明
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
我一生在纸上,被风吹乱

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
15958
积分
1290
帖子
155
主题
22
阅读权限
60
注册时间
2010-9-9
最后登录
2021-1-25
6#
发表于 2011-7-24 04:03:53 |显示全部楼层
忘说了,重写的是使用V4版本。
编译时下边提示框提示编译警告,说“包含系列函数,可能有逻辑错误”,不用管。
虽然可以把openD放if外边去掉警告,但没必要那么做,因为我们自己知道,这里没有逻辑错误。
我一生在纸上,被风吹乱

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
15958
积分
1290
帖子
155
主题
22
阅读权限
60
注册时间
2010-9-9
最后登录
2021-1-25
7#
发表于 2011-7-24 04:26:27 |显示全部楼层
股指默认参数也是杠杠的
因本人现在连螺纹都买不起(不是想拉资金,本人现在一点想代客的心情都没有),IF更是没碰过,手续费设置的2%%,不知道对不对。

附件: 你需要登录才可以下载或查看附件。没有帐号?注册
我一生在纸上,被风吹乱

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
15958
积分
1290
帖子
155
主题
22
阅读权限
60
注册时间
2010-9-9
最后登录
2021-1-25
8#
发表于 2011-7-24 09:25:59 |显示全部楼层
If(CurrentBar > 44*Max(Mday,Nday))//使用的是5分钟周期,其它的周期自己做相应修改
这个44是采用相应周期 ...
Joseph0727 发表于 2011-7-24 07:12



    恩,是这个意思,我上边写错了,应该是45,不过没关系,这块写的不对,也只是影响测试的前边一两次交易

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
15958
积分
1290
帖子
155
主题
22
阅读权限
60
注册时间
2010-9-9
最后登录
2021-1-25
9#
发表于 2011-7-25 09:18:11 |显示全部楼层
如果当天走势一直在上下穿多空临界点怎么办啊。
weibo-lwb 发表于 2011-7-25 01:12



    趋势系统一般都会有这个问题,在原有模型上再扩充吧,比如上边我也说到了,设定一个最小波动范围,或者限定一段时间内的失败次数……

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
15958
积分
1290
帖子
155
主题
22
阅读权限
60
注册时间
2010-9-9
最后登录
2021-1-25
10#
发表于 2011-9-6 10:43:58 |显示全部楼层
提供参考参数:
if 5分钟周期,2%%手续费,无滑点(根据喜好自己加)


附件: 你需要登录才可以下载或查看附件。没有帐号?注册
我一生在纸上,被风吹乱

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-3 22:23

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部