我有 supertrend 实现的 python 代码。我正在使用 pandas 数据框。代码工作正常,但是随着数据帧长度的增加,超级趋势函数运行得越来越慢。我想知道是否可以在代码中更改任何内容来优化它并使其运行得更快,即使数据帧长度很大。
def trueRange(df):
df['prevClose'] = df['close'].shift(1)
df['high-low'] = df['high'] - df['low']
df['high-pClose'] = abs(df['high'] - df['prevClose'])
df['low-pClose'] = abs(df['low'] - df['prevClose'])
tr = df[['high-low','high-pClose','low-pClose']].max(axis=1)
return tr
def averageTrueRange(df, peroid=12):
df['trueRange'] = trueRange(df)
the_atr = df['trueRange'].rolling(peroid).mean()
return the_atr
def superTrend(df, peroid=5, multipler=1.5):
df['averageTrueRange'] = averageTrueRange(df, peroid=peroid)
h2 = ((df['high'] + df['low']) / 2)
df['Upperband'] = h2 + (multipler * df['averageTrueRange'])
df['Lowerband'] = h2 - (multipler * df['averageTrueRange'])
df['inUptrend'] = None
for current in range(1,len(df.index)):
prev …Run Code Online (Sandbox Code Playgroud) 这是我现在写的代码:
a = 1
if (a := a + 1) == 2:
print(a)
Run Code Online (Sandbox Code Playgroud)
我想知道是否存在这样的事情:
a = 1
if (a +:= 1) == 2:
print(a)
Run Code Online (Sandbox Code Playgroud) 如果有人可以通过在 PEMDAS 中添加 W 来给出答案,那将非常有用。谢谢。