Wrapping up
Here is the algorithm for calculating the DMAC in pseudocode:
- Calculate the short term and long term moving averages.
- If the short term crosses the long term from bottom to top, then buy.
- If the long term crosses the short term from bottom to top, then sell.
- Otherwise do nothing.
This is the code we started with, which passed all the tests:
def get_crossover_signal(self, on_date): cpl = [] for i in range(11): chk = on_date.date() - timedelta(i) for price_event in reversed(self.price_history): if price_event.timestamp.date() > chk: pass if price_event.timestamp.date() == chk: cpl.insert(0, price_event) break if price_event.timestamp.date() < chk: cpl.insert(0, price_event) break # Return NEUTRAL signal if len(cpl) < 11: return 0 # BUY signal ...
Get Test-Driven Python Development now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.