#pragma once #include "OrderBookEntry.h" #include "CSVReader.h" #include #include class OrderBook { public: /* Construct, reading a csv data file */ OrderBook(std::string filename); /* return vector of all known products in the dataset */ std::vector getKnownProducts(); /* return vector of Orders according to the sent filters */ std::vector getOrders(OrderBookType type, std::string product, std::string timestamp); /** returns earliest time in the order book */ std::string getEarliestTime(); /** returns the next time after the sent time in the orderbook * If no next timestamp is found, wraps to the start */ std::string getNextTime(std::string timestamp); std::string getPrevTime(std::string timestamp); unsigned int getBookSize(); static double getHighPrice(std::vector& orderList); static double getLowPrice(std::vector& orderList); static double getLastPrice(std::vector& orderList); static double getAverage(std::vector& orderList); static double getSpread(std::vector& bids, std::vector& asks); double getChangePercent(std::vector& orderList); double getChangeNumber(std::vector& orderList); private: std::vector orders; }; /* About the Spread https://www.forex.com/en/markets/forex/ https://www.ig.com/en/trading-strategies/what-is-the-spread-in-forex-and-how-do-you-calculate-it-201126 Percentage variance https://www.tradingview.com/markets/currencies/rates-major/ */