今天测试时发现的,即使加载了足够公式回溯需要的Bar, 第一根Bar都是返回0,第二根Bar才开始返回数据
测试用的代码
OnBar(ArrayRef<Integer> indexs)
{
if(CurrentBar >= 10 AND CurrentBar <= 20)
{
//求线性回归的斜率
Numeric value = LinearRegSlope(High, 5);
Print("Bar #:" + Text(CurrentBar) + " -> LinearRegSlope:" + Text(value));
}
}
输出的结果如下
这种情况我建议的是,数据计算部分不要return掉,保证函数都执行,但是调用判断信号的时候再return
老师的意思是不是就像MA函数一样,每根Bar都持续的计算,用到MA数值判断信号的时候直接用就是了?
对
因为linearregslope是一个序列类型的对象
放在或有执行的结构中就可能存在数据缺口导致的计算错误
原来如此,老师这么一说就清楚了
这样呢?
OnBar(ArrayRef<Integer> indexs)
{
//求线性回归的斜率
Numeric value = LinearRegSlope(High, 5);
if(CurrentBar >= 10 AND CurrentBar <= 20)
{
Print("Bar #:" + Text(CurrentBar) + " -> LinearRegSlope:" + Text(value));
}
}
谢谢老师回复,这样可以,意识到这个问题后我已经提前调用一次Liear函数来确保在我需要的bar获得数据,不过我想知道为什么第一次计算是0, 是不是Linear系列的函数以及其它数学函数也是这种表现。