设为首页收藏本站

 找回密码
 注册
楼主: lilei19733
打印 上一主题 下一主题

根据卡夫曼自适应移动平均写的交易系统 [复制链接]

Rank: 5Rank: 5

精华
0
UID
85182
积分
849
帖子
302
主题
11
阅读权限
60
注册时间
2011-12-8
最后登录
2013-10-28
21#
发表于 2011-12-20 17:31:10 |只看该作者
这个有价值的地方恐怕在过滤器了
http://qpic.cn/NifLLplMk若能一切随它去,便世间自在人。
      ---Derivatives

使用道具 举报

Rank: 1

精华
0
UID
182975
积分
6
帖子
4
主题
1
阅读权限
10
注册时间
2014-3-20
最后登录
2015-1-13
22#
发表于 2014-12-25 20:36:04 |只看该作者
收藏了!

使用道具 举报

Rank: 2

精华
0
UID
217043
积分
69
帖子
38
主题
17
阅读权限
30
注册时间
2015-8-14
最后登录
2024-4-21
23#
发表于 2016-9-9 16:22:24 |只看该作者
Params
         Numeric        FilterSet(0.1);//过滤器偏移量
        Numeric        lots(1);
         Numeric        terms(10);//自适应计算周期
        Numeric        AMAOffSetPercent(0.55);//前后两日均线差值触发值百分比
Vars
         NumericSeries        AMAValue;
         Numeric        ExtHigh;//前高
        Numeric        ExtLow;//前低
        Numeric        filter;
         Numeric        AMAOffSet;
         Bool        LongEntryCon(false);
         Bool        ShortEntryCon(false);
Begin
         AMAValue = AdaptiveMovAvg(close,terms,2,30);
         if(close == AMAValue)
                 return;                                     //如果bar个数小于计算周期,直接返回
                                 
                                 
        AMAOffSet=AvgPrice()*AMAOffSetPercent/100;       //取当前均价的0.0055作为均线触发值
               
        filter = StandardDev(AMAValue,20,2)*FilterSet;        //计算过滤器的值
               
        if(AMAValue[1]>AMAValue[2]and AMAValue[2]<AMAValue[3])
                 ExtLow = AMAValue[2];        //计算前低
                                 
        if(AMAValue[1]<AMAValue[2]and AMAValue[2]>AMAValue[3])
                 ExtHigh = AMAValue[2];       //计算前高
        

         if(AMAValue[1]>AMAValue[2])   //如果今天的均线值大于昨天
        {
                 if(ExtLow!=0)    //如果前低不为零
                {
                                if((AMAValue[1] - ExtLow)>filter)     //将均线值减去最低值,看是否大于过滤器
                                                                {
                                LongEntryCon = true;
                                                                }
                 }Else  if((AMAValue[1]-AMAValue[2])>AMAOffSet )   //如果前低为零,即没有产生前低,则直接比较两日的均线值是否大于触发值
                                                 {
                                        LongEntryCon = true;
                         }
         }
                 
         if(AMAValue[1]<AMAValue[2])
         {
                 if(ExtHigh!=0)
                 {
                         if((AMAValue[1] - ExtHigh)>filter)
                                                 {
                                 ShortEntryCon = true;
                                                 }
                 }Else   if((AMAValue[2]-AMAValue[1])>AMAOffSet )
                                                 
                                                 {
                                 ShortEntryCon = true;
                                                 }
                 }
         
         Commentary("AMA:"+TEXT(AMAValue));
         Commentary("filter:"+TEXT(filter));
         Commentary("ExtLow:"+TEXT(ExtLow));
         Commentary("ExtHigh:"+TEXT(ExtHigh));
         Commentary("LongCon:"+IIFString(LongEntryCon,"true","false"));
         Commentary("ShortCon:"+IIFString(ShortEntryCon,"true","false"));
         Commentary("AMAOffSet:"+text(AMAOffSet));

         if(MarketPosition !=1 and LongEntryCon)
                 buy(lots,Open);
         if(MarketPosition !=-1 and ShortEntryCon)
                 SellShort(lots,Open);
end

根据楼主的修改了一下。

使用道具 举报

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

bottom

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

GMT+8, 2024-5-12 06:19

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部