自适应均线

这个自适应均线程序哪里有问题,请老师改写一下,谢谢Params Series<Numeric> Price(1); //数值型序列值 Numeric EffRatioLength(10); //自适应周期数 Numeric FastAvgLength(2); //短周期数 Numeric SlowAvgLength(30); //长周期数//系统相关Numeric ConfirmPeriod(3); //确认均线趋势次数 Numeric StdMultiplier(1); //过滤器百分比//交易相关Numeric Slipes(2); //滑点Vars//AMA相关Numeric STDLen(0); //标准差长度Numeric PriceSTD(0);Numeric STDRatio(1); //进入标准差的倍数Bool LongIndicator(True);Bool ShortIndicator(True);Numeric i;Numeric NetChg(0); Numeric TotChg(0); Numeric EffRatio(0); Numeric ScaledSFSqr(0); Series<Numeric> AMAValue; Numeric SFDiff;EventsOnBar(ArrayRef<Integer> indexs){ 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] ); } STDLen=SlowAvgLength; PriceSTD=StandardDev(Close[1],STDLen);//当不持多仓的情况下,如果做多条件满足,则做多 If(MarketPosition <>1 && AMAValue[1]-Lowest(AMAValue[1],ConfirmPeriod) > PriceSTD*STDRatio*StdMultiplier/100 ) { Buy(0,Open+Slipes); PlotString ("top","jdc",Portfolio_TotalProfit,Red); }//当不持空仓的情况下,如果做空条件满足,则做空 If(MarketPosition <>-1 && Highest(AMAValue[1],ConfirmPeriod)-AMAValue[1] > PriceSTD*STDRatio*StdMultiplier/100 ) { SellShort(0,Open-Slipes); PlotString ("top","jkc",Portfolio_TotalProfit,Red); } PlotNumeric("PL",Portfolio_TotalProfit);}

懂了,谢谢老师。这个问题出现很多此,现在才明白。

编译报了一个错误一个警告错误是这一行序列变量只能作为函数参数,不可以作为公式参数而警告是这一行警告不是错误,是提醒你这么写可能计算结果是错误的。序列对象不能放在分支结构中,否则可能造成计算结果错误。原因这个帖子里由简单介绍 https://bbs.tbquant.net/thread/forum12050

语法问题,这里sum求和不对,不过我已经找到了老师的正确答案,写法不一样.sum函数不能用吗

您好!如果不是语法问题的话,您应该描述清楚哪里有问题,否则我们也不知道该改动哪里。这就好比检查英文文章,只有拿着中文文章参照意思才能确认英文文章表达的意思对不对。