gpt4 book ai didi

php - pine-script linreg 函数如何工作

转载 作者:行者123 更新时间:2023-12-05 06:07:09 32 4
gpt4 key购买 nike

我想将一个 pine 脚本的 linreg 函数传输到 php,我需要一些帮助,哪些值被准确地传递给了 linreg 函数。

即我在 pine-script 中的 linreg 函数如下所示:

linreg(close, 20, 0)

为了在 php 中计算线性回归,我有以下函数:

public static function linear_regression($x, $y) {

// calculate number points
$n = count($x);

// ensure both arrays of points are the same size
if ($n != count($y)) {

trigger_error("linear_regression(): Number of elements in coordinate arrays do not match.", E_USER_ERROR);

}

// calculate sums
$x_sum = array_sum($x);
$y_sum = array_sum($y);

$xx_sum = 0;
$xy_sum = 0;

for($i = 0; $i < $n; $i++) {

$xy_sum+=($x[$i]*$y[$i]);
$xx_sum+=($x[$i]*$x[$i]);

}

// calculate slope
$m = (($n * $xy_sum) - ($x_sum * $y_sum)) / (($n * $xx_sum) - ($x_sum * $x_sum));

// calculate intercept
$b = ($y_sum - ($m * $x_sum)) / $n;

// return result
return array("m"=>$m, "b"=>$b);
}

我现在的问题是我必须将哪些数据传递给我的 php 函数才能获得与 pine 脚本中相同的结果。

最佳答案

我已经根据您的 PHP 脚本创建了一个纯 Pine linreg 函数。这会产生与内置 ta.linreg 完全相同的结果。

pine_linreg(src, len, offset=0) =>
// These are constants, we need to calculate them only on the 1st bar
var float x_sum = 0.0
var float xx_sum = 0.0
if bar_index == 0
for i = 0 to len - 1
x_sum += i
xx_sum += i * i

y_sum = math.sum(src, len)
xy_sum = 0.0
for i = len - 1 to 0
xy_sum += i * src[len - 1 - i]

// slope
slope = (len * xy_sum - x_sum * y_sum) / (len * xx_sum - x_sum * x_sum)
// intercept
intercept = (y_sum - slope * x_sum) / len

linreg = intercept + slope * (len - 1 - offset)

诀窍在于 x 数组是时间轴,并且总是 [0, 1, ..., len-1]。 y 数组是源。然后你应该使用的公式是 pine 函数的最后一行,也记录在 ta.linreg 的文档中。

关于php - pine-script linreg 函数如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65541564/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com