设为首页收藏本站

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

哪位大神帮我看一下这个程序 [复制链接]

Rank: 1

精华
0
UID
113075
积分
37
帖子
11
主题
4
阅读权限
10
注册时间
2012-10-24
最后登录
2012-11-7
跳转到指定楼层
1#
发表于 2012-10-25 14:36:55 |只看该作者 |倒序浏览
我的想法是:AMA(20)上捌 且价格向上突破AMA(20)线买入开仓,价格向下碰到AMA(20)卖出平仓;同样AMA(20)下捌 且价格向下突破AMA(20)线卖出开仓,价格向上碰到AMA(20)买入平仓;
我是一个刚学的菜鸟,以下程序请帮忙修正,万分感谢!
Params
        NumericSeries Price(1);
        Numeric EffRatioLength(20);
        Numeric FastAvgLength(2);
        Numeric SlowAvgLength(30);
Vars
        Numeric NetChg(0);
        Numeric TotChg(0);
        Numeric EffRatio(0);
        Numeric ScaledSFSqr(0);
        NumericSeries AMAValue;       
        Numeric SFDiff;

Begin
if(CurrentBar == 0)
        {
                AMAValue = Price;
        }Else
        {
                NetChg = Abs( Price - Price[EffRatioLength] );
                TotChg = Summation( Abs( Price - Price[1] ), EffRatioLength );               
                EffRatio = IIF(TotChg > 0, NetChg / TotChg, 0);
                SFDiff = 2 / ( FastAvgLength + 1 ) - 2 / ( SlowAvgLength + 1 );               
                ScaledSFSqr = Sqr( 2 / ( SlowAvgLength + 1 ) + EffRatio * SFDiff );               
                AMAValue = AMAValue[1] + ScaledSFSqr * ( Price - AMAValue[1] );
        }
        Return AMAValue;       
       
        If(Price >AMAValue && AMAValue[1] > AMAValue[2])
        {
                Buy(1,Open);
        }
       
        If(Price <AMAValue)
        {
                SellShort(1,Open);
        }
        If(Price <AMAValue && AMAValue[1] < AMAValue[2])
        {
                Sell(1,Open);
        }
        If(Price >AMAValue)
        {
                BuyToCover(1,Open);
        }
        PlotNumeric("AMA",AMAValue);
        PlotNumeric("PL",Portfolio_TotalProfit);
        PlotNumeric("AdpMa",AdaptiveMovAvg(Close,EffRatioLength,FastAvgLength,SlowAvgLength));
End

Rank: 1

精华
0
UID
113075
积分
37
帖子
11
主题
4
阅读权限
10
注册时间
2012-10-24
最后登录
2012-11-7
2#
发表于 2012-10-25 14:53:40 |只看该作者
大神们,出来活动一下,帮我修改一下。

使用道具 举报

Rank: 8Rank: 8

精华
0
UID
17581
积分
5464
帖子
275
主题
27
阅读权限
100
注册时间
2010-10-13
最后登录
2021-8-30
3#
发表于 2012-10-26 10:53:06 |只看该作者
AMA有函数AdaptiveMovAvg,不需要自己写
Params

        Numeric EffRatioLength(20);
        Numeric FastAvgLength(2);
        Numeric SlowAvgLength(30);
Vars

        NumericSeries AMAValue;        


Begin
                AMAValue=AdaptiveMovAvg(Close,EffRatioLength,FastAvgLength,SlowAvgLength);
        
        If(close >AMAValue && AMAValue[1] > AMAValue[2])
        {
                Buy(1,close);
        }
        
        If(close <AMAValue)
        {
                SellShort(1,close);
        }
        If(close <AMAValue && AMAValue[1] < AMAValue[2])
        {
                Sell(1,close);
        }
        If(close >AMAValue)
        {
                BuyToCover(1,close);
        }
        PlotNumeric("AMA",AMAValue);

End

使用道具 举报

Rank: 4

精华
0
UID
112594
积分
333
帖子
281
主题
8
阅读权限
50
注册时间
2012-9-20
最后登录
2013-12-4
4#
发表于 2012-10-26 13:10:04 |只看该作者
1.参数里不能有序列变量,你的Price类型是错的,而且以你的意思Price将永远是1
2.判断曲线上拐不是上升。。。应该用(AMA[1]+AMA[3])/2>AMA[2]
3.平仓是BuyToCover(0,Open)和Sell(0,Open)
4.另外不知是不是你贴错了,你应该是先定义了一个AdaptiveMovAvg的函数,然后再调用,但是你的代码都混在了一起

你再看看吧

使用道具 举报

Rank: 1

精华
0
UID
113075
积分
37
帖子
11
主题
4
阅读权限
10
注册时间
2012-10-24
最后登录
2012-11-7
5#
发表于 2012-10-26 14:47:20 |只看该作者
大哥们,太感谢了。

使用道具 举报

Rank: 1

精华
0
UID
113075
积分
37
帖子
11
主题
4
阅读权限
10
注册时间
2012-10-24
最后登录
2012-11-7
6#
发表于 2012-10-30 09:07:37 |只看该作者
大哥们,这个程式为什么平仓时会出现多次信号,而且出现了信号一会还可能会消失,应该怎么改?谢谢!另外我这个程式会有哪些问题?菜鸟求解中!

Params

        Numeric EffRatioLength(20);
        Numeric FastAvgLength(2);
        Numeric SlowAvgLength(30);
Vars

        NumericSeries AMAValue;
Begin

AMAValue=AdaptiveMovAvg(Close,EffRatioLength,FastAvgLength,SlowAvgLength);

if(MarketPosition==0)
{
    If(Close >AMAValue&&(AMAValue[1]+AMAValue[3])/2>AMAValue[2])
            {
                    Buy(1,Open);
                        Return;
                }
       
        Else If(Close<AMAValue && (AMAValue[1]+AMAValue[3])/2<AMAValue[2])
            {
                    SellShort(1,Open);
                        Return;
                }
}
If(MarketPosition==-1)
{
     If(Close>=AMAValue)
             {
                 BuyToCover(1,open);
                 }
}
If(Marketposition==1)
{
     If(Close<=AMAValue)
             {
                 Sell(1,Open);
                 }
}
End

使用道具 举报

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

bottom

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

GMT+8, 2024-5-22 04:51

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部