Pinescript 相关性(source_a、source_b、长度)-> 到 python
Pinescript correlation(source_a, source_b, length) -> to python
我需要帮助将 pine 相关函数翻译成 python,我已经翻译了 stdev 和 swma 函数,但是这个让我有点困惑。
我也找到了这个解释,但不太明白如何实现它:
in python try using pandas
with .rolling(window).corr
where window
is
the correlation coefficient period, pandas
allow you to compute any
rolling statistic by using rolling()
. The correlation coefficient from
pine is calculated with : sma(y*x,length) - sma(y,length)*sma(x,length)
divided by
stdev(length*y,length)*stdev(length*x,length)
where stdev
is based on
the naïve algorithm.
此功能的 Pine 文档:
> Correlation coefficient. Describes the degree to which two series tend
> to deviate from their sma values. correlation(source_a, source_b,
> length) → series[float] RETURNS Correlation coefficient.
参数
source_a
(系列) 来源系列。
source_b
(系列)目标系列。
length
(整数)长度(后面的柱数)。
使用pandas确实是最好的选择,TA-Lib也有CORREL
的功能。为了让您更好地了解 pine 中的 correlation
函数是如何实现的,这里是一个使用 numpy 的 python 代码,请注意,这不是一个有效的解决方案。
import numpy as np
from matplotlib import pyplot as plt
def sma(src,m):
coef = np.ones(m)/m
return np.convolve(src,coef,mode="valid")
def stdev(src,m):
a = sma(src*src,m)
b = np.power(sma(src,m),2)
return np.sqrt(a-b)
def correlation(x,y,m):
cov = sma(x*y,m) - sma(x,m)*sma(y,m)
den = stdev(x,m)*stdev(y,m)
return cov/den
ts = np.random.normal(size=500).cumsum()
n = np.linspace(0,1,len(ts))
cor = correlation(ts,n,14)
plt.subplot(2,1,1)
plt.plot(ts)
plt.subplot(2,1,2)
plt.plot(cor)
plt.show()
我需要帮助将 pine 相关函数翻译成 python,我已经翻译了 stdev 和 swma 函数,但是这个让我有点困惑。
我也找到了这个解释,但不太明白如何实现它:
in python try using
pandas
with.rolling(window).corr
wherewindow
is the correlation coefficient period,pandas
allow you to compute any rolling statistic by usingrolling()
. The correlation coefficient from pine is calculated with :sma(y*x,length) - sma(y,length)*sma(x,length)
divided bystdev(length*y,length)*stdev(length*x,length)
wherestdev
is based on the naïve algorithm.
此功能的 Pine 文档:
> Correlation coefficient. Describes the degree to which two series tend
> to deviate from their sma values. correlation(source_a, source_b,
> length) → series[float] RETURNS Correlation coefficient.
参数
source_a
(系列) 来源系列。
source_b
(系列)目标系列。
length
(整数)长度(后面的柱数)。
使用pandas确实是最好的选择,TA-Lib也有CORREL
的功能。为了让您更好地了解 pine 中的 correlation
函数是如何实现的,这里是一个使用 numpy 的 python 代码,请注意,这不是一个有效的解决方案。
import numpy as np
from matplotlib import pyplot as plt
def sma(src,m):
coef = np.ones(m)/m
return np.convolve(src,coef,mode="valid")
def stdev(src,m):
a = sma(src*src,m)
b = np.power(sma(src,m),2)
return np.sqrt(a-b)
def correlation(x,y,m):
cov = sma(x*y,m) - sma(x,m)*sma(y,m)
den = stdev(x,m)*stdev(y,m)
return cov/den
ts = np.random.normal(size=500).cumsum()
n = np.linspace(0,1,len(ts))
cor = correlation(ts,n,14)
plt.subplot(2,1,1)
plt.plot(ts)
plt.subplot(2,1,2)
plt.plot(cor)
plt.show()