Wrapping up

Here is the algorithm for calculating the DMAC in pseudocode:

  1. Calculate the short term and long term moving averages.
  2. If the short term crosses the long term from bottom to top, then buy.
  3. If the long term crosses the short term from bottom to top, then sell.
  4. 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.