dxFeed Graal CXX API
|
Order event is a snapshot for a full available market depth for a symbol. More...
#include <Order.hpp>
Public Types | |
using | Ptr = std::shared_ptr<Order> |
The alias to a type of shared pointer to the Order object. | |
using | Unique = std::unique_ptr<Order> |
The alias to a type of unique pointer to the Order object. | |
Public Types inherited from MarketEvent | |
using | Ptr = std::shared_ptr<MarketEvent> |
The alias to a type of shared pointer to the MarketEvent object. | |
Public Types inherited from EventTypeWithSymbol< std::string > | |
using | Ptr |
The alias to a type of shared pointer to the EventTypeWithSymbol's child object. | |
Public Types inherited from EventType | |
using | Ptr = std::shared_ptr<EventType> |
The alias to a type of shared pointer to the EventType object. | |
Public Types inherited from SharedEntity | |
using | Ptr = std::shared_ptr<SharedEntity> |
The alias to a type of shared pointer to the SharedEntity object. | |
Public Types inherited from IndexedEvent | |
using | Ptr = std::shared_ptr<IndexedEvent> |
The alias to a type of shared pointer to the IndexedEvent object. | |
Public Member Functions | |
void * | toGraal () const override |
Allocates memory for the dxFeed Graal SDK structure (recursively if necessary). | |
Order () noexcept=default | |
Creates new order event with default values. | |
Order (std::string eventSymbol) noexcept | |
Creates new order event with the specified event symbol. | |
virtual Order & | withEventSymbol (const std::string &eventSymbol) noexcept |
Changes event's symbol and returns the current order. | |
Order & | withEventTime (std::int64_t eventTime) noexcept |
Changes event's creation time and returns the current order. | |
Order & | withSource (const OrderSource &source) noexcept |
Changes event's source and returns the current order. | |
Order & | withEventFlags (std::int32_t eventFlags) noexcept |
Changes transactional event flags and returns the current order. | |
Order & | withEventFlags (const EventFlagsMask &eventFlags) noexcept |
Changes transactional event flags and returns the current order. | |
Order & | withIndex (std::int64_t index) noexcept |
Changes unique per-symbol index of this order and returns it. | |
Order & | withTime (std::int64_t time) noexcept |
Changes time of this order and returns it. | |
Order & | withTimeNanoPart (std::int32_t timeNanoPart) noexcept |
Changes microseconds and nanoseconds time part of this order. | |
Order & | withSequence (std::int32_t sequence) noexcept |
Changes sequence number of this order. | |
Order & | withTimeNanos (std::int64_t timeNanos) noexcept |
Changes time of this order and returns it. | |
Order & | withAction (const OrderAction &action) noexcept |
Changes action of this order and returns it. | |
Order & | withActionTime (std::int64_t actionTime) noexcept |
Changes time of the last action and returns current order. | |
Order & | withOrderId (std::int64_t orderId) noexcept |
Changes order ID. | |
Order & | withAuxOrderId (std::int64_t auxOrderId) noexcept |
Changes auxiliary order ID. | |
Order & | withPrice (double price) noexcept |
Changes price of this order. | |
Order & | withSize (double size) noexcept |
Changes size of this order. | |
Order & | withExecutedSize (double executedSize) noexcept |
Changes executed size of this order. | |
Order & | withCount (std::int64_t count) noexcept |
Changes number of individual orders in this aggregate order. | |
Order & | withTradeId (std::int64_t tradeId) noexcept |
Changes trade ID. | |
Order & | withTradePrice (double tradePrice) noexcept |
Changes trade price. | |
Order & | withTradeSize (double tradeSize) noexcept |
Changes trade size. | |
Order & | withExchangeCode (char exchangeCode) noexcept |
Changes exchange code of this order. | |
Order & | withExchangeCode (std::int16_t exchangeCode) noexcept |
Changes exchange code of this order. | |
Order & | withOrderSide (const Side &side) noexcept |
Changes side of this order. | |
Order & | withScope (const Scope &scope) noexcept |
Changes scope of this order. | |
const std::string & | getMarketMaker () const &noexcept |
Returns market maker or other aggregate identifier of this order. | |
const std::optional< std::string > & | getMarketMakerOpt () const &noexcept |
Returns market maker or other aggregate identifier of this order. | |
void | setMarketMaker (std::string marketMaker) noexcept |
Changes market maker or other aggregate identifier of this order. | |
Order & | withMarketMaker (std::string marketMaker) noexcept |
Changes market maker or other aggregate identifier of this order. | |
std::string | toString () const noexcept override |
Returns a string representation of the current object. | |
Public Member Functions inherited from OrderBase | |
OrderBase () noexcept=default | |
Creates new order event with default values. | |
OrderBase (std::string eventSymbol) noexcept | |
Creates new order event with the specified event symbol. | |
const OrderSource & | getSource () const &noexcept override |
Returns source of this event. | |
void | setSource (const OrderSource &source) noexcept |
Changes source of this event. | |
std::int32_t | getEventFlags () const noexcept override |
Returns transactional event flags. | |
EventFlagsMask | getEventFlagsMask () const noexcept override |
Returns transactional event flags. | |
void | setEventFlags (std::int32_t eventFlags) noexcept override |
Changes transactional event flags. | |
void | setEventFlags (const EventFlagsMask &eventFlags) noexcept override |
Changes transactional event flags. | |
void | setIndex (std::int64_t index) override |
Changes unique per-symbol index of this order. | |
std::int64_t | getIndex () const noexcept override |
Returns unique per-symbol index of this order. | |
std::int64_t | getTimeSequence () const noexcept |
Returns time and sequence of this order packaged into single long value. | |
void | setTimeSequence (std::int64_t timeSequence) noexcept |
Changes time and sequence of this order. | |
std::int64_t | getTime () const noexcept |
Returns time of this order. | |
void | setTime (std::int64_t time) noexcept |
Changes time of this order. | |
void | setTimeNanoPart (std::int32_t timeNanoPart) noexcept |
Changes microseconds and nanoseconds time part of this order. | |
std::int32_t | getTimeNanoPart () const noexcept |
Returns microseconds and nanoseconds time part of this order. | |
std::int32_t | getSequence () const noexcept |
Returns sequence number of this order to distinguish orders that have the same time. | |
void | setSequence (std::int32_t sequence) |
Changes sequence number of this order. | |
std::int64_t | getTimeNanos () const noexcept |
Returns time of this order in nanoseconds. | |
void | setTimeNanos (std::int64_t timeNanos) noexcept |
Changes time of this order. | |
const OrderAction & | getAction () const &noexcept |
Returns order action if available, otherwise - OrderAction::UNDEFINED. | |
void | setAction (const OrderAction &action) noexcept |
Changes action of this order. | |
std::int64_t | getActionTime () const noexcept |
Returns time of the last action. | |
void | setActionTime (std::int64_t actionTime) noexcept |
Changes time of the last action. | |
std::int64_t | getOrderId () const noexcept |
Returns order ID if available. | |
void | setOrderId (std::int64_t orderId) noexcept |
Changes order ID. | |
std::int64_t | getAuxOrderId () const noexcept |
Returns auxiliary order ID if available: | |
void | setAuxOrderId (std::int64_t auxOrderId) noexcept |
Changes auxiliary order ID. | |
double | getPrice () const noexcept |
Returns price of this order. | |
void | setPrice (double price) noexcept |
Changes price of this order. | |
double | getSize () const noexcept |
Returns size of this order. | |
void | setSize (double size) noexcept |
Changes size of this order. | |
bool | hasSize () const noexcept |
Returns true if this order has some size (sizeAsDouble is neither 0 nor NaN ). | |
double | getExecutedSize () const noexcept |
Returns executed size of this order. | |
void | setExecutedSize (double executedSize) noexcept |
Changes executed size of this order. | |
std::int64_t | getCount () const noexcept |
Returns number of individual orders in this aggregate order. | |
void | setCount (std::int64_t count) noexcept |
Changes number of individual orders in this aggregate order. | |
std::int64_t | getTradeId () const noexcept |
Returns trade (order execution) ID for events containing trade-related action. | |
void | setTradeId (std::int64_t tradeId) noexcept |
Changes trade ID. | |
double | getTradePrice () const noexcept |
Returns trade price for events containing trade-related action. | |
void | setTradePrice (double tradePrice) noexcept |
Changes trade price. | |
double | getTradeSize () const noexcept |
Returns trade size for events containing trade-related action. | |
void | setTradeSize (double tradeSize) noexcept |
Changes trade size. | |
std::int16_t | getExchangeCode () const noexcept |
Returns exchange code of this order. | |
std::string | getExchangeCodeString () const noexcept |
Returns exchange code of this order as UTF8 string. | |
void | setExchangeCode (char exchangeCode) |
Changes exchange code of this order. | |
void | setExchangeCode (std::int16_t exchangeCode) noexcept |
Changes exchange code of this order. | |
const Side & | getOrderSide () const &noexcept |
Returns side of this order. | |
void | setOrderSide (const Side &side) noexcept |
Changes side of this order. | |
const Scope & | getScope () const &noexcept |
Returns scope of this order. | |
void | setScope (const Scope &scope) noexcept |
Changes scope of this order. | |
std::string | baseFieldsToString () const noexcept |
Returns string representation of this order event's fields. | |
Public Member Functions inherited from MarketEvent | |
const std::string & | getEventSymbol () const &noexcept override |
Returns symbol of this event. | |
const std::optional< std::string > & | getEventSymbolOpt () const &noexcept override |
Returns symbol of this event. | |
void | setEventSymbol (const std::string &eventSymbol) noexcept override |
Changes symbol of this event. | |
std::int64_t | getEventTime () const noexcept override |
Returns time when event was created or zero when time is not available. | |
void | setEventTime (std::int64_t eventTime) noexcept override |
Changes event creation time. | |
Public Member Functions inherited from SharedEntity | |
template<typename T > | |
bool | is () const noexcept |
Checks that pointer to the current type could be converted to type T* In other words: whether type T belongs to the type hierarchy in which the current type resides. | |
template<typename T > | |
std::shared_ptr< T > | sharedAs () noexcept |
Returns a pointer to the current object wrapped in a smart pointer to type T. | |
template<typename T > | |
std::shared_ptr< T > | sharedAs () const noexcept |
Returns a pointer to the current object wrapped in a smart pointer to type T. | |
Public Member Functions inherited from Entity | |
virtual | ~Entity () noexcept=default |
The default virtual d-tor. | |
Static Public Member Functions | |
static Ptr | fromGraal (void *graalNative) |
Creates an object of the current type and fills it with data from the the dxFeed Graal SDK structure. | |
static void | freeGraal (void *graalNative) |
Releases the memory occupied by the dxFeed Graal SDK structure (recursively if necessary). | |
Static Public Attributes | |
static const EventTypeEnum & | TYPE = EventTypeEnum::ORDER |
Type identifier and additional information about the current event class. | |
Static Public Attributes inherited from OrderBase | |
static constexpr std::uint32_t | MAX_SEQUENCE = (1U << 22U) - 1U |
Maximum allowed sequence value. | |
Static Public Attributes inherited from IndexedEvent | |
static const EventFlag | TX_PENDING = EventFlag::TX_PENDING |
0x01 - A bitmask to get transaction pending indicator from the value of eventFlags property. | |
static const EventFlag | REMOVE_EVENT = EventFlag::REMOVE_EVENT |
0x02 - A bitmask to get removal indicator from the value of eventFlags property. | |
static const EventFlag | SNAPSHOT_BEGIN = EventFlag::SNAPSHOT_BEGIN |
0x04 - A bitmask to get snapshot begin indicator from the value of eventFlags property. | |
static const EventFlag | SNAPSHOT_END = EventFlag::SNAPSHOT_END |
0x08 - A bitmask to get snapshot end indicator from the value of eventFlags property. | |
static const EventFlag | SNAPSHOT_SNIP = EventFlag::SNAPSHOT_SNIP |
0x10 - A bitmask to get snapshot snip indicator from the value of eventFlags property. | |
static const EventFlag | SNAPSHOT_MODE = EventFlag::SNAPSHOT_MODE |
0x40 - A bitmask to set snapshot mode indicator into the value of eventFlags property. | |
Additional Inherited Members | |
Protected Member Functions inherited from MarketEvent | |
MarketEvent (std::string eventSymbol) noexcept | |
Protected constructor for concrete implementation classes that initializes eventSymbol property. | |
Order event is a snapshot for a full available market depth for a symbol.
The collection of order events of a symbol represents the most recent information that is available about orders on the market at any given moment of time. Order events give information on several levels of details, called scopes - see Scope. Scope of an order is available via scope property.
Order events arrive from multiple sources for the same market symbol and are distinguished by their index. Index is a unique per symbol identifier of the event. It is unique across all the sources of depth information for the symbol. The event with size either 0
or NaN
is a signal to remove previously received order for the corresponding index. The method Order::hasSize() is a convenient method to test for size presence.
Events from finer-grained Scope of detail give more information and include events from coarse-grained Scope of detail. For a consistent representation of the market depth to the end-user, order events must be filtered to remove coarse-grained events that are superseded by the finer-grained events.
Some order event sources provide a consistent view of the price-level or detailed order book. Their updates may incorporate multiple changes to price levels or to individual orders that have to be processed at the same time. The corresponding information is carried in eventFlags property.
See Event Flags
section of OrderBase class documentation for details.
The composite quotes with Scope::COMPOSITE and regional quotes with Scope::REGIONAL come individually from different venues and are not related to each other in any transactional way. The result of Order::getEventFlags method for them is always zero.
When publishing an order event with DXPublisher::publishEvents() method, least significant 32 bits of order index must be in a range of from 0 to std::numeric_limits<std::int32_t>::max()
inclusive. Use Order::setSource() method after Order::setIndex() to properly include source identifier into the index.
A snapshot has to be published in the descending order of index, starting with an event with the largest index and marking it with EventFlag::SNAPSHOT_BEGIN bit in eventFlags, and finishing the snapshot with an event that has zero 32 least significant bits of index. EventFlag::SNAPSHOT_END bit in eventFlags is optional during publishing. It will be properly set on receiving end anyway.
This event type cannot be used with DXFeed::getLastEvent() method.
Some feeds provide support for "Full Order Book" (FOB) where additional fields will be available:
This event is implemented on top of QDS record Quote
for composite quotes with Scope::COMPOSITE, record Quote&X
for regional exchange best quotes with Scope::REGIONAL, record MarketMaker
for market-maker quotes and futures price level aggregates with Scope::AGGREGATE, record Order
for the most fine-grained Scope::ORDER with zero source id, and records Order#<source-id>
for specific source ids, where <source-id>
is up to 4 ASCII characters with a mnemonic for the source like "NTV".
|
inlineexplicitnoexcept |
Creates new order event with the specified event symbol.
eventSymbol | The event symbol. |
|
static |
Releases the memory occupied by the dxFeed Graal SDK structure (recursively if necessary).
graalNative | The pointer to the dxFeed Graal SDK structure. |
|
static |
Creates an object of the current type and fills it with data from the the dxFeed Graal SDK structure.
graalNative | The pointer to the dxFeed Graal SDK structure. |
std::invalid_argument |
|
inlinenoexcept |
Returns market maker or other aggregate identifier of this order.
This value is defined for Scope::AGGREGATE and Scope::ORDER orders.
std::string{"<null>"}
).
|
inlinenoexcept |
Returns market maker or other aggregate identifier of this order.
This value is defined for Scope::AGGREGATE and Scope::ORDER orders.
std::nullopt
.
|
inlinenoexcept |
Changes market maker or other aggregate identifier of this order.
marketMaker | market maker or other aggregate identifier of this order. |
|
overridevirtual |
Allocates memory for the dxFeed Graal SDK structure (recursively if necessary).
Fills the dxFeed Graal SDK structure's fields by the data of the current entity (recursively if necessary). Returns the pointer to the filled structure.
Implements EventType.
Reimplemented in OtcMarketsOrder.
|
overridevirtualnoexcept |
Returns a string representation of the current object.
Reimplemented from EventType.
Reimplemented in OtcMarketsOrder.
|
inlinenoexcept |
Changes action of this order and returns it.
action | The side of this order. |
References OrderBase::setAction().
Referenced by AnalyticOrder::withAction(), and OtcMarketsOrder::withAction().
|
inlinenoexcept |
Changes time of the last action and returns current order.
actionTime | The last order action time. |
References OrderBase::setActionTime().
Referenced by AnalyticOrder::withActionTime(), and OtcMarketsOrder::withActionTime().
|
inlinenoexcept |
Changes auxiliary order ID.
Returns the current order.
auxOrderId | The auxiliary order ID. |
References OrderBase::setAuxOrderId().
Referenced by AnalyticOrder::withAuxOrderId(), and OtcMarketsOrder::withAuxOrderId().
|
inlinenoexcept |
Changes number of individual orders in this aggregate order.
Returns the current order.
count | The number of individual orders in this aggregate order. |
References OrderBase::setCount().
Referenced by AnalyticOrder::withCount(), and OtcMarketsOrder::withCount().
|
inlinenoexcept |
Changes transactional event flags and returns the current order.
See EventFlag "Event Flags" section.
eventFlags | transactional event flags' mask. |
|
inlinenoexcept |
Changes transactional event flags and returns the current order.
See EventFlag "Event Flags" section.
eventFlags | transactional event flags. |
|
inlinevirtualnoexcept |
Changes event's symbol and returns the current order.
eventSymbol | The symbol of this event. |
Reimplemented in AnalyticOrder, and OtcMarketsOrder.
References MarketEvent::setEventSymbol().
Referenced by AnalyticOrder::withEventSymbol(), and OtcMarketsOrder::withEventSymbol().
|
inlinenoexcept |
Changes event's creation time and returns the current order.
eventTime | the difference, measured in milliseconds, between the event creation time and midnight, January 1, 1970 UTC. |
References MarketEvent::setEventTime().
Referenced by AnalyticOrder::withEventTime(), and OtcMarketsOrder::withEventTime().
|
inlinenoexcept |
Changes exchange code of this order.
Returns the current order.
exchangeCode | The exchange code of this order. |
|
inlinenoexcept |
Changes exchange code of this order.
Returns the current order.
exchangeCode | The exchange code of this order. |
|
inlinenoexcept |
Changes executed size of this order.
Returns the current order.
executedSize | The executed size of this order. |
References OrderBase::setExecutedSize().
Referenced by AnalyticOrder::withExecutedSize(), and OtcMarketsOrder::withExecutedSize().
|
inlinenoexcept |
Changes unique per-symbol index of this order and returns it.
Note, that this method also changes source, whose id occupies highest bits of index. Use OrderBase::setSource() after invocation of this method to set the desired value of source.
index | unique per-symbol index of this order. |
References OrderBase::setIndex().
Referenced by AnalyticOrder::withIndex(), and OtcMarketsOrder::withIndex().
|
inlinenoexcept |
Changes market maker or other aggregate identifier of this order.
Returns the current order.
marketMaker | The market maker or other aggregate identifier of this order. |
|
inlinenoexcept |
Changes order ID.
Returns the current order.
orderId | The order ID. |
References OrderBase::setOrderId().
Referenced by AnalyticOrder::withOrderId(), and OtcMarketsOrder::withOrderId().
Changes side of this order.
Returns the current order.
side | The side of this order. |
References OrderBase::setOrderSide().
Referenced by AnalyticOrder::withOrderSide(), and OtcMarketsOrder::withOrderSide().
|
inlinenoexcept |
Changes price of this order.
Returns the current order.
price | The price of this order. |
References OrderBase::setPrice().
Referenced by AnalyticOrder::withPrice(), and OtcMarketsOrder::withPrice().
Changes scope of this order.
Returns the current order.
scope | The scope of this order. |
References OrderBase::setScope().
Referenced by AnalyticOrder::withScope(), and OtcMarketsOrder::withScope().
|
inlinenoexcept |
Changes sequence number of this order.
Returns the current order.
sequence | the sequence. |
References OrderBase::setSequence().
Referenced by AnalyticOrder::withSequence(), and OtcMarketsOrder::withSequence().
|
inlinenoexcept |
Changes size of this order.
Returns the current order.
size | The size of this order. |
References OrderBase::setSize().
Referenced by AnalyticOrder::withSize(), and OtcMarketsOrder::withSize().
|
inlinenoexcept |
Changes event's source and returns the current order.
This method changes highest bits of the index of this event.
source | source of this event. |
References OrderBase::setSource().
Referenced by AnalyticOrder::withSource(), and OtcMarketsOrder::withSource().
|
inlinenoexcept |
Changes time of this order and returns it.
Time is measured in milliseconds between the current time and midnight, January 1, 1970 UTC.
time | time of this order. |
References OrderBase::setTime().
Referenced by AnalyticOrder::withTime(), and OtcMarketsOrder::withTime().
|
inlinenoexcept |
Changes microseconds and nanoseconds time part of this order.
Returns the current order.
timeNanoPart | microseconds and nanoseconds time part of this order. |
References OrderBase::setTimeNanoPart().
Referenced by AnalyticOrder::withTimeNanoPart(), and OtcMarketsOrder::withTimeNanoPart().
|
inlinenoexcept |
Changes time of this order and returns it.
Time is measured in nanoseconds between the current time and midnight, January 1, 1970 UTC.
timeNanos | The time of this order in nanoseconds. |
References OrderBase::setTimeNanos().
Referenced by AnalyticOrder::withTimeNanos(), and OtcMarketsOrder::withTimeNanos().
|
inlinenoexcept |
Changes trade ID.
Returns the current order.
tradeId | The trade ID. |
References OrderBase::setTradeId().
Referenced by AnalyticOrder::withTradeId(), and OtcMarketsOrder::withTradeId().
|
inlinenoexcept |
Changes trade price.
Returns the current order.
tradePrice | The trade price. |
References OrderBase::setTradePrice().
Referenced by AnalyticOrder::withTradePrice(), and OtcMarketsOrder::withTradePrice().
|
inlinenoexcept |
Changes trade size.
Returns the current order.
tradeSize | The trade size. |
References OrderBase::setTradeSize().
Referenced by AnalyticOrder::withTradeSize(), and OtcMarketsOrder::withTradeSize().