用LinearRegSlope计算线性回归的斜率时第一根Bar总是返回0
今天测试时发现的,即使加载了足够公式回溯需要的Bar, 第一根Bar都是返回0,第二根Bar才开始返回数据函数文档: https://tbq3.tbquant.net/helper?product_id=991&keyword=1122&content_id=577&selectedkey=1622&type=article#linearregslope-%E7%BA%BF%E6%80%A7%E5%9B%9E%E5%BD%92%E7%9A%84%E6%96%9C%E7%8E%87 测试用的代码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系列的函数以及其它数学函数也是这种表现。