I'm trying to get a signal out of aapl data but i got this error
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from datetime import datetime
apple_stock = pd.read_csv('AAPL.csv')
apple_stock = apple_stock.set_index(pd.DatetimeIndex(apple_stock['Date'].values))
ma30 = pd.DataFrame()
ma30['AM'] = apple_stock['Adj Close'].rolling(window=30).mean()
ma100 = pd.DataFrame()
ma100['AM'] = apple_stock['Adj Close'].rolling(window=100).mean()
data = pd.DataFrame()
data['AAPL'] = apple_stock['Adj Close']
data['MA30'] = ma30['AM']
data['MA100'] = ma100['AM']
def signal(data):
signal_buy = []
signal_sell = []
f = -1
for i in range(0, len(data)):
if data['MA30'][i] > data['MA100']:
if f != 1:
signal_buy.append(data['AAPL'][i])
signal_sell.append(np.nan)
f = 1
else:
signal_buy.append(np.nan)
signal_sell.append(np.nan)
elif data['MA30'][i] < data['MA100']:
if f != 0:
signal_buy.append(np.nan)
signal_sell.append(data['AAPL'][i])
f = 0
else:
signal_buy.append(np.nan)
signal_sell.append(np.nan)
else:
signal_buy.append(np.nan)
signal_sell.append(np.nan)
return signal_buy, signal_sell
buy_sell = signal(data)
data['buy signal'] = buy_sell[0]
data['sell signal'] = buy_sell[1]
print(data)
This is the error it gives:
Traceback (most recent call last): File "C:/Users/k.taherinia/Desktop/Stock analysis and forecasting/moving_average_indicator.py", line 53, in buy_sell = signal(data) File "C:/Users/k.taherinia/Desktop/Stock analysis and forecasting/moving_average_indicator.py", line 28, in signal if data['MA30'][i] > data['MA100']: File "C:\Users\k.taherinia\AppData\Local\Programs\Python\Python38\lib\site-packages\pandas\core\generic.py", line 1527, in nonzero raise ValueError( ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
Some people had the same problem with(and/or in pandas), but I could not find a solution for my code