如何在 Python 中重写线性偏差代码?

问题描述

Thinkscript 在他们的网站上有 Lindev 代码:

script LinDevTS {
    input data = close;
    input length = 12;
    def avgData = Average(data,length);
    plot LinDevTS = ( fold i = 0 to length with LD do LD + AbsValue(avgData - GetValue(data,i)) ) / length;
}

declare lower;

input length = 12;

#plot LinDev1 = LinDev(close,length);
plot LinDev2 = LinDevTS(close,length);

此处的原始代码:https://tlc.thinkorswim.com/center/reference/thinkScript/Functions/Statistical/LinDev

我正在尝试将其转换为 python,但遇到关键错误。我的代码如下:

length = 12    
df["avgData"] = df["close"].rolling(window=length).mean()
df["LinDevTS"] = np.repeat(nan,len(df))
for i in range(0,len(df)):
    for j in range(0,length):
        buffer = np.isnan(df['j'])
        df['j'] = df['j'].fillna(0)
        df['j'] = df['j'].astype(int)
        df["GetValue"] = np.repeat(0.00,length)
        for k in range(0,length):
            if pd.isnull(df.close[k]) == False and k - df["j"][k] < length:
                df["GetValue"][k] = df["close"][k - df["j"][k]]
        df.loc[buffer,'j'] = np.nan
        df.loc[df['GetValue'] == 0.00,'GetValue'] = np.nan
        df.loc[buffer,'GetValue'] = np.nan 
    df["LinDevTS"][i] = df["LinDevTS"][i-1] + (abs(df["avgData"][i] - df["GetValue"][i])) / length

有什么想法吗? 谢谢,

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)