设为首页收藏本站

 找回密码
 注册
查看: 39227|回复: 55
打印 上一主题 下一主题

再发个简单的双均线系统,提供源码 [复制链接]

Rank: 5Rank: 5

精华
0
UID
15958
积分
1290
帖子
155
主题
22
阅读权限
60
注册时间
2010-9-9
最后登录
2021-1-25
跳转到指定楼层
1#
发表于 2011-6-22 12:43:08 |只看该作者 |倒序浏览
很古老的均线系统,随手写的,初学者可以参考
根据核心原理,大家可以拿去扩充一下,我刚才试着扩充加入其它因子,提升不大,可能是没找到合适的组合吧
RB 1H周期,malen1=10,malen2=50

附件: 你需要登录才可以下载或查看附件。没有帐号?注册
已有 1 人评分威望 收起 理由
htzq61302908 + 2

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

我一生在纸上,被风吹乱

Rank: 5Rank: 5

精华
0
UID
15958
积分
1290
帖子
155
主题
22
阅读权限
60
注册时间
2010-9-9
最后登录
2021-1-25
2#
发表于 2011-6-22 12:43:47 |只看该作者
  1. //------------------------------------------------------------------------
  2. // 简称:
  3. // 名称:
  4. // 类别: 公式应用
  5. // 类型: 用户应用
  6. // 输出: 穿堂风
  7. //------------------------------------------------------------------------

  8. Params
  9. Numeric maLen1(10);
  10. Numeric maLen2(50);
  11. Numeric lots(1);
  12. Numeric offset(0);
  13. Vars
  14. Numeric ma1;
  15. Numeric ma2;
  16. Numeric i_offset;

  17. Begin

  18. ma1 = Average(Open,maLen1);
  19. ma2 = Average(Open,maLen2);

  20. PlotNumeric("ma1",ma1);
  21. PlotNumeric("ma2",ma2);

  22. i_offset = offset*MinMove*PriceScale;
  23. If(CurrentBar > maLen2)
  24. {
  25.         If(MarketPosition == 0)
  26.         {
  27.                 If(Open>ma1 and ma1>ma2)
  28.                 {
  29.                         Buy(lots,Open+i_offset);
  30.                         Return;
  31.                 }

  32.                 If(Open < ma1 and ma1<ma2)
  33.                 {
  34.                         SellShort(lots,Open-i_offset);
  35.                         Return;
  36.                 }
  37.         }

  38.         If(MarketPosition == 1)
  39.         {
  40.                 If(Open < ma1)
  41.                 {
  42.                         Sell(lots,Open-i_offset);
  43.                         Return;
  44.                 }
  45.         }

  46.         If(MarketPosition == -1)
  47.         {
  48.                 If(Open > ma1)
  49.                 {
  50.                         BuyToCover(lots,Open+i_offset);
  51.                         Return;
  52.                 }
  53.         }
  54. }
  55. End


  56. //------------------------------------------------------------------------
  57. // 编译版本        GS2010.12.08
  58. // 用户版本        2011/06/21 15:59
  59. // 版权所有        穿堂风
  60. // 更改声明        TradeBlazer Software保留对TradeBlazer平台
  61. //                        每一版本的TrabeBlazer公式修改和重写的权利
  62. //------------------------------------------------------------------------
复制代码
我一生在纸上,被风吹乱

使用道具 举报

Rank: 4

精华
0
UID
6842
积分
450
帖子
66
主题
10
阅读权限
50
注册时间
2010-2-2
最后登录
2019-3-30
3#
发表于 2011-7-6 23:40:03 |只看该作者
I_Offset  是滑点吧


If(MarketPosition == 0)
        {
                If(Open>ma1 and ma1>ma2)
                {
                        Buy(lots,Open+i_offset);
                        Return;
                }

                If(Open < ma1 and ma1<ma2)
                {
                        SellShort(lots,Open-i_offset);
                        Return;
                }
        }

两个Return有什么意义呢?第一个是不是Returen之后程序不再执行     If(Open < ma1 and ma1<ma2)及之后的判断,请指教一下

使用道具 举报

Rank: 4

精华
0
UID
6842
积分
450
帖子
66
主题
10
阅读权限
50
注册时间
2010-2-2
最后登录
2019-3-30
4#
发表于 2011-7-7 00:02:49 |只看该作者
Return 就是让后面的代码无效,相当于goto EndIf

请问一下,这个系统测试下来效果还行啊,如果就拿这个系统实盘会出现什么问题呢?

使用道具 举报

Rank: 4

精华
0
UID
3746
积分
518
帖子
118
主题
66
阅读权限
50
注册时间
2009-3-6
最后登录
2019-3-30
5#
发表于 2011-7-7 00:18:44 |只看该作者
ma1>ma2

这里得改成 ma1[1]>ma2[1],并且我觉得里面所有比较的都应该加上[1];

因为用的是开盘价,但这个ma1>ma2在收盘后才能确定,所以用开盘价开仓会造成信号闪烁;

使用道具 举报

Rank: 4

精华
0
UID
6842
积分
450
帖子
66
主题
10
阅读权限
50
注册时间
2010-2-2
最后登录
2019-3-30
6#
发表于 2011-7-7 09:21:51 |只看该作者
楼上的朋友说得不错,因为ma1这时已经是用Close进行描绘的了

相当于未来函数,必须用Close[1]描绘的Ma1[1]才行,或者用Close进行Buy or Sell

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
15958
积分
1290
帖子
155
主题
22
阅读权限
60
注册时间
2010-9-9
最后登录
2021-1-25
7#
发表于 2011-7-7 12:43:14 |只看该作者
Return 就是让后面的代码无效,相当于goto EndIf

请问一下,这个系统测试下来效果还行啊,如果就拿这个系 ...
kings425 发表于 2011-7-7 00:02



    因为有两种情况,达到哪种情况,都不再往下走,直接return。

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
15958
积分
1290
帖子
155
主题
22
阅读权限
60
注册时间
2010-9-9
最后登录
2021-1-25
8#
发表于 2011-7-7 12:45:26 |只看该作者
ma1>ma2

这里得改成 ma1[1]>ma2[1],并且我觉得里面所有比较的都应该加上[1];

因为用的是开盘价,但这个 ...
hal5667 发表于 2011-7-7 00:18



    我均线都是用open算的,K线一出来就决定了ma1是否大于小于ma2,并且持续到K线结束也不会改变,怎么会闪烁?
我很多系统确实用了xxx[1]的办法来防止闪烁和未来数据引用,但这里没必要啊

使用道具 举报

Rank: 4

精华
0
UID
6842
积分
450
帖子
66
主题
10
阅读权限
50
注册时间
2010-2-2
最后登录
2019-3-30
9#
发表于 2011-7-7 12:51:39 |只看该作者
ma1 = Average(Open,maLen1);

是的哦,没有注意这句,的确是用OPEN来计算的均线    

请问这类系统可以用于实盘么?具体要注意哪些问题?

使用道具 举报

Rank: 5Rank: 5

精华
0
UID
15958
积分
1290
帖子
155
主题
22
阅读权限
60
注册时间
2010-9-9
最后登录
2021-1-25
10#
发表于 2011-7-7 12:52:38 |只看该作者
楼上的朋友说得不错,因为ma1这时已经是用Close进行描绘的了

相当于未来函数,必须用Close[1]描绘的Ma1[1] ...
kings425 发表于 2011-7-7 09:21



    你们所说的问题,我知道这是大家最容易犯的错误。
所以我在设计系统的时候,首先就是查看所有交易逻辑,确保没有引用未来数据,并且成交价格,成交时机都不会出现矛盾点,比如不能出现多种情况同时出现,无法区分先后,还有就是很多人都没考虑跳空。

使用道具 举报

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

bottom

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

GMT+8, 2024-5-7 12:53

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部