SyntaxError:Can't assign to function call -coding on a Financial analysis tool

SyntaxError:Can't assign to function call -coding on a Financial analysis tool

def SMMA(column,N):
    for i in range(len(column)):
        if i <= N:
            SMMA(i) = np.nan()
        elif i == N + 1:
            SMMA(i) = column[:N].mean()
        else:
            SMMA(i) = (SMMA(i-1)*N + column[i])/ N

平滑移动平均线 (SMMA) 是我最喜欢的财务分析之一 tool.It 不同于广为人知的简单移动平均线工具。下面是定义,上面是我的代码,但是 IDE 一直告诉我 syntaxError:

  File "<ipython-input-13-fdcc1fd914c0>", line 6
SMMA(i) = column[:N].mean()
^SyntaxError: can't assign to function call

SMMA定义:

此平滑移动平均线的第一个值计算为简单移动平均线 (SMA):

SUM1 = SUM (CLOSE (i), N)

SMMA1 = SUM1 / N

第二个移动平均线是根据这个公式计算的:

SMMA (i) = (SMMA1*(N-1) + CLOSE (i)) / N

后续移动平均线根据以下公式计算:

PREVSUM = SMMA (i - 1) * N

SMMA (i) = (PREVSUM - SMMA (i - 1) + CLOSE (i)) / N

SMMA(i) 的写法就像调用函数一样。可以将变量分配给函数的输出,但将函数作为变量调用并将其设置为等于值是没有意义的。例如 moving_average = SMMA(i) 会将变量 moving_average 分配给函数 SMMA(i) 的输出,但 SMMA(i) = moving_average 没有意义。希望我有所帮助。 `

SMMA(i) = 4
Traceback (most recent call last):
Python Shell, prompt 5, line 1
Syntax Error: can't assign to function call: <string>, line 1, pos 0

`

你的想法是这样的吗?

def SMMA(column,N):
    result = np.empty(len(column))
    for i, e in enumerate(column):
        if i <= N:
            result[i] = np.nan()
        elif i == N + 1:
            result[i] = column[:N].mean()
        else:
            result[i] = (result[i-1]*N + e) / N
    return result

您可以在 Python 中分配给 result[i] 这样的下标。

除非您 return 或产生一个值或改变一个参数或其他东西,否则该函数不会做任何事情。

以上代码生成并 returns 一个 NumPy 浮点数组,它可能是也可能不是您想要的。 (如果这还不够,请编辑您的问题以阐明预期用途。)