开拓者期货期权程序化系统交易论坛

标题: 版主看看sma函数哪里出错了 [打印本页]

作者: cqalan    时间: 2018-5-8 23:48:07     标题: 版主看看sma函数哪里出错了

Params
        Numeric Length(14);                       
        Numeric SlowLength(3);      
        Numeric SmoothLength(3);
Vars
        NumericSeries HighestValue;                              
        NumericSeries LowestValue;                                       
        NumericSeries K1;
        NumericSeries D1;
        NumericSeries RSV1;
Begin
        HighestValue = HighestFC(High, Length);   
        LowestValue = LowestFC(Low, Length);   
        RSV1 = (Close-LowestValue)/(HighestValue-LowestValue)*100;
        K1 =  SMA(RSV1,SlowLength,1);
        D1 =  SMA(K1,SmoothLength,1);   
        PlotNumeric("K",K1);
        PlotNumeric("D",D1);
        PlotNumeric("RSV",RSV1);
        Commentary("K1"+text(k1));   
End
很简单的kd指标公式,rsv1值正常显示,但是k1,d1不显示,用  Commentary("K1"+text(k1));  查看k1值,发现k1值是n/a,到底哪里出问题了啊?
作者: 小米    时间: 2018-5-9 09:04:13

换成日线图上看看是什么效果,还会有无效值吗?
作者: Yuen_Lee    时间: 2018-5-9 14:50:21

如下改动:
        K1 =  SMA(IntPart(RSV1),SlowLength,1);

作者: cqalan    时间: 2018-5-9 20:41:50

谢谢小米和Yuen_Lee,我找到原因了,如果出现了涨停和跌停,在日线之下的周期就会出现那个问题。
作者: Yuen_Lee    时间: 2018-5-10 13:27:42

好像不全是因为涨、跌停。如果你看I9000的M15周期,在20170307的14:00的K线开始,就会出错了。而这之前没有涨停或跌停额情况。
作者: 小米    时间: 2018-5-10 14:32:50

cqalan 发表于 2018-5-9 20:41
谢谢小米和Yuen_Lee,我找到原因了,如果出现了涨停和跌停,在日线之下的周期就会出现那个问题。 ...

是的。因为在连续涨跌停里,lowestvalue的值是可能与highestvalue以及close等相同,导致RSV1的值 为0。
使用0参与SMA的计算就会是这样结果了。
让你换成日线图上看看就是为了排查这个可能性。




欢迎光临 开拓者期货期权程序化系统交易论坛 (http://bbs.tb18.net/) Powered by Discuz! X2