Php 计算简单移动平均值时TA-LIB缺少数据点
我正在使用PHP,最近开始使用技术分析扩展来计算股票价格数据的指标。我在一个最简单的指标中得到了一个奇怪的结果,而我还没有找出原因。我已经在TA-LIB论坛上发布了一个类似的问题,但是那里的活动非常少,我怀疑我可能在很长一段时间内没有得到答案,如果有的话 SMA基于给定数量的先前价格数据点计算平均值。我遇到的问题最好用一个例子来说明。假设我有一组10个价格数据点,我想计算SMA。为了简单起见,让我们使用平均值4。在计算这一点时,我们希望得到一组新的7个平均值。但是,TA-LIB返回4,如下所示:Php 计算简单移动平均值时TA-LIB缺少数据点,php,pecl,moving-average,ta-lib,Php,Pecl,Moving Average,Ta Lib,我正在使用PHP,最近开始使用技术分析扩展来计算股票价格数据的指标。我在一个最简单的指标中得到了一个奇怪的结果,而我还没有找出原因。我已经在TA-LIB论坛上发布了一个类似的问题,但是那里的活动非常少,我怀疑我可能在很长一段时间内没有得到答案,如果有的话 SMA基于给定数量的先前价格数据点计算平均值。我遇到的问题最好用一个例子来说明。假设我有一组10个价格数据点,我想计算SMA。为了简单起见,让我们使用平均值4。在计算这一点时,我们希望得到一组新的7个平均值。但是,TA-LIB返回4,如下所示:
$sma=trader_sma($close,4);
echo"<pre>";
print_r($sma);
Array
(
[0] => Array
(
[0] =>
[1] => 0
[2] =>
)
[1] => Array
(
[0] =>
[1] => 1
[2] =>
)
[2] => Array
(
[0] =>
[1] => 2
[2] =>
)
[3] => Array
(
[0] =>
[1] => 3
[2] => 573.267
)
[4] => Array
(
[0] =>
[1] => 4
[2] => 565.307
)
[5] => Array
(
[0] =>
[1] => 5
[2] => 560.552
)
[6] => Array
(
[0] =>
[1] => 6
[2] => 557.382
)
)
正如您所看到的,我们在集合的开始处得到了空值,正如预期的那样。然而,我们在结尾缺少数据点,缺少数据点的数量总是与我平均的数据点数量相对应。当我根据价格数据绘制移动平均线时,这会在最后造成一个非同寻常的差距
有什么想法吗?结果证明我犯了一个愚蠢的错误,毫不奇怪。我实际上编写了自己的函数: 工作正常,但当将它的结果与TA-LIB的结果进行比较时,我意识到问题在于我对TA-LIB结果所做的分析错误。因此,我最初提出的问题是无效的。简单的错误,时间的消耗,但很高兴知道TA-LIB能按我所希望的那样工作 这是一个完美的测试=AsserteQualTrader_sma$close,4,sma$close,4;
function sma($array,$averagenr){
$length=count($array);
if($length<$averagenr)return(null);
$sma_result=array();
for ($x=1;$x<$averagenr;$x++){
array_push($sma_result,array('',$x,null));
}
for ($x=$averagenr;$x<$length+1;$x++){
$sum=0;
for ($counter=$x-$averagenr;$counter<$x;$counter++){
$sum=$sum+$array[$counter];
}
$avg=$sum/$averagenr;
array_push($sma_result,array('',$x,$avg));
}
return($sma_result);}
echo "<pre>";
print_r(sma($close,4));