After taking a quick look at your code I found at least two possible causes of your issues.
def next(self):
current_time = datetime.now()
if current_time.weekday() >= 5: # Skip weekends
return
the datetime.now() function gives you the actual current date not the current date in your backtest. If you run your backtest on a weekend it will not even attempt to buy anything.
We could give you a better answer if you would have included a data sample and a sample log of your program. Maybe another look at documentation could help. DateTime Management