KeyError: Timestamp ('2018-01-01 00:00:00') - это ошибка, возникающая из-за следующего кода, я не совсем уверен, почему я получаю ошибку отметки времени, когда все даты являются целыми или в настоящее время Я попытался использовать целые числа и попытаться сделать дату и время даты, где это было необходимо, но все еще не работает. Функция MACD () работает сама по себе, только когда в течение l oop возникают ошибки.
def macd(input):
day_input = input
d = (day_input - BDay(1)).to_pydatetime()
d100 = (day_input - BDay(100)).to_pydatetime()
AAPL_closed = AAPL_stock[['Adj Close']]
AAPL_closed.columns = ['y']
AAPL_snippet = AAPLClosed[d100:d]
stock_12day = AAPL_snippet.y.ewm(span=12, adjust=False).mean()
stock_26day = AAPL_snippet.y.ewm(span=26, adjust=False).mean()
macd_value = (stock_12day - stock_26day)
signal_line = macd_value.ewm(span=9, adjust=False).mean()[d]
macd_value = macd_value[d]
if macd_value > 1.1 * signal_line:
signal = "Buy"
elif abs(abs(macd_value) - abs(signal_line)) < abs(1.1 * signal_line):
signal = "Hold"
else:
signal = "Sell"
print(signal)
def Backtest(start_year, start_month, start_day, end_year, end_month, end_day):
startdate = datetime.datetime(start_year, start_month, start_day)
enddate = datetime.datetime(end_year, end_month, end_day)
length = (end_date - start_date).days
noOfStocksOwned = 0
Cash = 100000
Invested = 0
PortfolioValue = list()
for i in range(0, length):
dayToUse = (start_date + BDay(i)).to_pydatetime()
print(type(day_to_use))
MACD(day_to_use)
Backtest(2018, 1, 1, 2018, 1, 30)