计算多个移动平均线交叉
Calculate multiple moving average crossovers
我想计算多个移动平均线交叉。
我的目标是从空头 = 20 和多头 = 21 开始。一旦空头移动平均线与多头交叉,我将在特定基础上做多。我想将 long 变量从 21 增加到 200,然后从头开始使用 short = 21 和 long = 22 并重复该过程。
我的嵌套循环如下所示:
#Calculate moving averages first
for GD in range(20,200,1):
aapl[GD] = aapl.Adj_Close.rolling(GD).mean()
#Calculate MA crossovers
short = 20
long = 21
while short < 200:
while long < 200:
aapl[short,long] = np.where(aapl[short] > aapl[long],1,0)
long = long + 1
short = short + 1
如何更改我的代码,使嵌套循环一直重复,直到我计算出所有可能的交叉点?
您需要重置 long
外循环的每次迭代。设置一次不行,每次都需要设置。我知道你希望它比 short
大 1,所以像这样:
short = 20
while short < 200:
long = short + 1
while long < 200:
aapl[short,long] = np.where(aapl[short] > aapl[long],1,0)
long = long + 1
short = short + 1
然后您可以通过使用 for
循环遍历范围来简化这两个循环。单个 for
循环将在一行中处理初始化、循环和递增循环变量。
for short in range(20, 200):
for long in range(short + 1, 200):
aapl[short,long] = np.where(aapl[short] > aapl[long],1,0)
我想计算多个移动平均线交叉。
我的目标是从空头 = 20 和多头 = 21 开始。一旦空头移动平均线与多头交叉,我将在特定基础上做多。我想将 long 变量从 21 增加到 200,然后从头开始使用 short = 21 和 long = 22 并重复该过程。
我的嵌套循环如下所示:
#Calculate moving averages first
for GD in range(20,200,1):
aapl[GD] = aapl.Adj_Close.rolling(GD).mean()
#Calculate MA crossovers
short = 20
long = 21
while short < 200:
while long < 200:
aapl[short,long] = np.where(aapl[short] > aapl[long],1,0)
long = long + 1
short = short + 1
如何更改我的代码,使嵌套循环一直重复,直到我计算出所有可能的交叉点?
您需要重置 long
外循环的每次迭代。设置一次不行,每次都需要设置。我知道你希望它比 short
大 1,所以像这样:
short = 20
while short < 200:
long = short + 1
while long < 200:
aapl[short,long] = np.where(aapl[short] > aapl[long],1,0)
long = long + 1
short = short + 1
然后您可以通过使用 for
循环遍历范围来简化这两个循环。单个 for
循环将在一行中处理初始化、循环和递增循环变量。
for short in range(20, 200):
for long in range(short + 1, 200):
aapl[short,long] = np.where(aapl[short] > aapl[long],1,0)