ScotlandPHP 2016

trader_linearreg_slope

(PECL trader >= 0.2.0)

trader_linearreg_slopeLinear Regression Slope

Description

array trader_linearreg_slope ( array $real [, integer $timePeriod ] )

Parameters

real

Array of real values.

timePeriod

Number of period. Valid range from 2 to 100000.

Return Values

Returns an array with calculated data or false on failure.

add a note add a note

User Contributed Notes 1 note

up
1
Angel J. Salinas
6 months ago
// If you don't have the php_trader library or needs more than 3 precision digits,
// you can use this function:
public static function linearreg_slope( $valuesIn, $period )
{
  $valuesOut = array();
 
  $startIdx = 0;
  $endIdx = count($valuesIn) - 1;
 
  $sumX = $period * ( $period - 1 ) * 0.5;
  $sumXSqr = $period * ( $period - 1 ) * ( 2 * $period - 1 ) / 6;
  $divisor = $sumX * $sumX - $period * $sumXSqr;
 
  for ( $today = $startIdx, $outIdx = 0; $today <= $endIdx; $today++, $outIdx++ )
  {
    $sumXY = 0;
    $sumY = 0;
    if ( $today >= $period - 1 ) {
      for( $aux = $period; $aux-- != 0; )
      {
        $sumY += $tempValue = $valuesIn[$today - $aux];
        $sumXY += (double)$aux * $tempValue;
      }
      $valuesOut[$outIdx] = ( $period * $sumXY - $sumX * $sumY) / $divisor;
    }
  }
 
  return $valuesOut;
}
To Top