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

标题: for while if else 中包含序列函数,可能存在潜在的逻辑错误! [打印本页]

作者: 开心    时间: 2013-5-9 15:00:37     标题: for while if else 中包含序列函数,可能存在潜在的逻辑错误!

//CurrentBar>20是因为CoefficientR函数中,如果序列值的CurrentBar小于Length时,该函数返回无效值
        //CurrentBar-20>=19 是为了使得从close[20]开始往后还有20个日线k柱,这样才能使得算CoefficientR时两组数据都能够准备好。
        if(CurrentBar>20 && CurrentBar-20>=19)
        {
                CoefficientPearson=CoefficientR(Close,Close[20],20);
               
                //某K柱的日线相关性达到要求,则开始考虑该k柱的分钟时间序列的相关性
                if(abs(CoefficientPearson)>=relevancy)
                {
                       
                }
        }

for while if else 中包含序列函数,可能存在潜在的逻辑错误!这个是什么问题!
作者: ample    时间: 2013-5-9 16:27:36

序列变量的赋值不能放到条件语句里,因为满足条件才能赋值,会导致有的bar没有,有的有,会出现问题的
作者: 开心    时间: 2013-5-10 10:26:27

ample 发表于 2013-5-9 16:27
序列变量的赋值不能放到条件语句里,因为满足条件才能赋值,会导致有的bar没有,有的有,会出现问题的 ...

能不能说明白点呀!好像问题处在CoefficientPearson=CoefficientR(Close,Close[20],20);这句话上。如何修改呢!
作者: Transcend    时间: 2013-5-10 10:40:52

其实很好理解的,你把赋值放在IF里面了,当IF满足的时候,你的变量参与了K线的计算,当IF不满足的时候,你的变量又不参与K线的计算,这样的结果就是,你的变量并没有在所有K线上计算,只是部分K线的计算结果,所以这个变量的值,肯定是有偏差的
作者: TBLearning    时间: 2014-4-16 10:25:43

那如果不进行赋值的话,会有影响吗?
作者: ample    时间: 2014-4-16 15:09:11

楼上说的不赋值是什么意思?后面用到了该值进行判断啊





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