Cache#

MarketByPrice#

struct MarketByPrice#

Interface.

Public Functions

inline virtual ~MarketByPrice()#
virtual std::string_view exchange() const = 0#
virtual std::string_view symbol() const = 0#
virtual uint16_t max_depth() const = 0#
virtual double price_increment() const = 0#
virtual double quantity_increment() const = 0#
virtual Precision price_precision() const = 0#
virtual Precision quantity_precision() const = 0#
virtual uint16_t stream_id() const = 0#
virtual std::chrono::nanoseconds exchange_time_utc() const = 0#
virtual uint64_t exchange_sequence() const = 0#
virtual uint32_t checksum() const = 0#
virtual std::pair<size_t, size_t> size() const = 0#
virtual bool empty() const = 0#
virtual void clear() = 0#
virtual std::pair<std::span<MBPUpdate const>, std::span<MBPUpdate const>> extract(std::span<MBPUpdate> const &bids, std::span<MBPUpdate> const &asks, bool allow_truncate = false) const = 0#
virtual void extract_2(std::vector<MBPUpdate> &bids, std::vector<MBPUpdate> &asks, size_t max_depth = 0) const = 0#
virtual std::span<Layer const> extract(std::span<Layer> const&, bool fill_zero = false) const = 0#
virtual void extract_2(std::vector<Layer>&, size_t max_depth = 0) const = 0#
virtual bool exists(Side, double price) const = 0#
virtual std::pair<size_t, bool> find_index(Side, double price) const = 0#
virtual bool is_bad() const = 0#
virtual Layer compute_vwap(double total_quantity) const = 0#
virtual Layer compute_impact_price(double total_quantity) const = 0#
inline void operator()(auto const &value)#
inline void operator()(std::span<MBPUpdate const> const &bids, std::span<MBPUpdate const> const &asks)#
template<typename Callback>
inline void operator()(MarketByPriceUpdate const &market_by_price_update, std::vector<MBPUpdate> &bids, std::vector<MBPUpdate> &asks, Callback callback)#
inline void operator()(Side side, MBPUpdate const &mbp_update)#
template<typename Callback>
inline void create_snapshot(std::vector<MBPUpdate> &bids, std::vector<MBPUpdate> &asks, Callback callback) const#
virtual void create_depth_update(MarketByPriceUpdate const&, size_t depth, std::vector<MBPUpdate> &bids, std::vector<MBPUpdate> &asks) const = 0#

MarketByOrder#

struct MarketByOrder#

Public Functions

inline virtual ~MarketByOrder()#
virtual std::string_view exchange() const = 0#
virtual std::string_view symbol() const = 0#
virtual uint16_t max_depth() const = 0#
virtual double price_increment() const = 0#
virtual double quantity_increment() const = 0#
virtual Precision price_precision() const = 0#
virtual Precision quantity_precision() const = 0#
virtual uint16_t stream_id() const = 0#
virtual std::chrono::nanoseconds exchange_time_utc() const = 0#
virtual uint64_t exchange_sequence() const = 0#
virtual uint32_t checksum() const = 0#
virtual std::pair<size_t, size_t> size() const = 0#
virtual bool empty() const = 0#
virtual void clear() = 0#
template<typename ...Args>
inline void operator()(Args&&... args)#
virtual void extract(std::vector<MBOUpdate>&, size_t max_depth = 0) const = 0#
virtual void extract(std::vector<MBOUpdate>&, Side, double price) const = 0#
virtual void extract(std::vector<Layer>&, size_t max_depth = 0) const = 0#
virtual bool exists(Side, double price) const = 0#
virtual std::pair<size_t, bool> find_index(Side, double price) const = 0#
virtual double total_quantity(Side, double price) const = 0#
virtual double accumulated_quantity(Side, double price, bool excluding_price = false) const = 0#
virtual double accumulated_quantity_price_index(Side, size_t index, bool excluding_price = false) const = 0#
virtual std::pair<MBOUpdate, bool> find_order(Side, std::string_view const &order_id) const = 0#
virtual std::pair<Position, bool> get_queue_position(Side, std::string_view const &order_id) const = 0#
inline void operator()(std::span<MBOUpdate const> const &orders)#
template<typename Callback>
inline void operator()(MarketByOrderUpdate const &market_by_order_update, std::vector<MBOUpdate> &orders, Callback callback)#
template<typename Callback>
inline void create_snapshot(std::vector<MBOUpdate> &orders, Callback callback) const#
struct OrderUpdate#

Public Members

Side side = {}#
UpdateAction action = {}#
double remaining_quantity = NaN#
double last_modified_quantity = NaN#
double total_traded_quantity = NaN#
double last_traded_quantity = NaN#
double total_queue_quantity = NaN#
double queue_position_quantity = NaN#
size_t queue_position = {}#
bool iceberg = false#
struct Position#

Public Members

double quantity = NaN#
double before = NaN#
double total = NaN#