#include <iterator> #include "decider.h" macd_decider::macd_decider(std::size_t limit) : prices(limit, .0), macd(limit, .0), signal(limit, .0), limit(limit) {} void macd_decider::process(double price) { prices.add(price); macd.add(ema<double>(prices.begin(), prices.begin() + 12) - ema<double>(prices.begin(), prices.begin() + 26)); signal.add(ema<double>(macd.begin(), macd.begin() + 9)); } void macd_decider::reset(double price) { prices = buffer<double>(limit, price); signal = buffer<double>(limit, .0); macd = buffer<double>(limit, .0); }