i have problem with line
if (value[1]['Longs']==1.0) & (self.df['Long_Market'].rolling(20).sum()==0):
self.long_market=1
I want it to forbid code from opening to many long positions, but i get the error
The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
I would love to know is it a function that checks previous 20 cells for specified value (1) and if there is one, it goes to another
Heres whole function
def generate_signals(self):
self.df['Z-Score']=(self.df['Spread']-self.df['Spread'].rolling(window=self.ma).mean())/self.df['Spread'].rolling(window=self.ma).std()
self.df['Prior Z-Score']=self.df['Z-Score'].shift(1)
self.df['Longs']=(self.df['Z-Score']<=self.floor)*1.0
self.df['Shorts']=(self.df['Z-Score']>=self.ceiling)*1.0
self.df['Exit']=(np.abs(self.df['Z-Score'])<=self.exit_zscore)*1.0
self.df['Long_Market']=0.0
self.df['Short_Market']=0.0
self.long_market=0
self.short_market=0
for i,value in enumerate(self.df.iterrows()):
if (value[1]['Longs']==1.0) & (self.df['Long_Market'].rolling(20).sum()==0):
self.long_market=1