My current dataframe looks like this:
midprice ema12 ema26 difference
0 0.002990 0.002990 0.002990 0.000000e+00
1 0.002990 0.0029
I think you need:
m1= df['difference'] < df['difference'].shift(-1)
m2= df['difference'] < df['difference'].shift(-2)
m3= df['difference'] < df['difference'].shift(-3)
df['action'] = np.select(condlist=[m1 | m2 | m3, df.ema12 < df.ema26 ],
choicelist=['buy', 'sell'],
default='do nothing')
print (df)
midprice ema12 ema26 difference action
0 0.002990 0.002990 0.002990 0.000000e+00 buy
1 0.002990 0.002990 0.002990 4.227920e-08 buy
2 0.003018 0.002994 0.002992 2.295777e-06 buy
3 0.003025 0.002999 0.002994 4.579221e-06 buy
4 0.003067 0.003009 0.003000 9.708765e-06 buy
5 0.003112 0.003025 0.003008 1.718520e-05 do nothing