Category: User
Permissions: Operator, Trading, AccountReadOnly
Call Type: Synchronous
Subscribes the user to notifications about the status of account-level events: orders, trades, position updates, deposits, and withdrawals for a specific account on the Order Management System (OMS). The subscription reports all events associated with a given account; there is no filter at the call level to subscribe to some events and not others.
Account event information is supplied in comma-separated-value (CSV) format. For specific CSV formatting information, see the APEX Extract CSV Data Dictionary, available from AlphaPoint.
Request
{
"AccountId": 1,
"OMSId": 1
}
Key
Value
AccountId
integer. The ID of the account for the logged-in user.
OMSId
integer. The ID of the Order Management System to which the account belongs.
Response
{
"Subscribe": true
}
Key
Value
Subscribe
Boolean. A successful subscription returns true; otherwise, false.
The Events
When you call SubscribeAccountEvents, you subscribe to all of the following list of events. The Order Management System may supply them at irregular intervals and in any order; software must listen for these events. The system sends each of these events in a message frame.
AccountPositionEvent
AccountPositionEvent The balance in your account changes.
{
"OMSId":4, //The OMSId. [Integer]
"AccountId":4, // account id number. [Integer]
"ProductSymbol":"BTC", //The Product Symbol for this balance message. [String]
"ProductId":1, //The Product Id for this balance message. [Integer]
"Amount":10499.1, //The total balance in the account for the specified product. [Dec]
"Hold": 2.1, //The total amount of the balance that is on hold. Your available //balance for trading and withdraw is (Amount - Hold). [Decimal]
"PendingDeposits":0, //Total Deposits Pending for the specified product. [Decimal]
"PendingWithdraws":0, //Total Withdrawals Pending for the specified product. [Decimal]
"TotalDayDeposits":0, //The total 24-hour deposits for the specified product. UTC. [Dec]
"TotalDayWithdraws":0, //The total 24-hour withdraws for the specified product. UTC [Dec]
"NotionalHoldAmount": 0.0,
"NotionalRate": 0.0,
"TotalDayDepositNotional": 0.0,
"TotalMonthDepositNotional": 0.0,
"TotalDayWithdrawNotional": 0.0,
"TotalMonthWithdrawNotional": 0.0
}
Trigger: The balance in your account changes.
CancelAllOrdersRejectEvent
CancelAllOrdersRejectEvent All orders for your account are rejected.
{
"OMSId": 1, // OMS ID [Integer]
"AccountId": 4, // ID of the account being tracked [Integer]
"InstrumentId": 0, // ID of the instrument in the order [Long Integer]
"Status": "Rejected", // Accepted/Rejected [String]
"RejectReason": "Instrument not found." // Reason for rejection [String]
}
Trigger: All orders for your account are rejected.
CancelOrderRejectEvent
CancelOrderRejectEvent Your order is canceled.
{
"OMSId": 1, //OMS Id [Integer] Always 1
"AccountId": 4, //Your Account ID. [Integer]
"OrderId": 1, //The Order ID from your Cancel request. [64 Bit Integer]
"OrderRevision": 0, //The Revision of the Order, if any was found. [64 Bit Integer]
"OrderType": "Unknown", // See "Order Types" in Introduction
"InstrumentId": 1, // The InstrumentId from your Cancel request. [Integer]
"Status": "Rejected", //Always "Rejected" [String]
"RejectReason": "Order Not Found" //A message describing the reason for the rejection. // [String]
}
Trigger: Your order is canceled.
CancelReplaceOrderRejectEvent
CancelReplaceOrderRejectEvent Your order is rejected even if a cancel-replace order was placed.
{
"OMSId": 1, // ID of the OMS [integer]
"AccountId": 4, // ID of the account [integer]
"OrderId": 9342, // The ID of the rejected order [integer]
"ClientOrderId": 1234, // The client-supplied order ID [long integer]
"LimitPrice": 99.1, // The limit price of the order.
"OrderIdOCO": 0, // The ID of the other ordre to cancel if this is executed.
"OrderType": "Limit", // See "Order Types" in Introduction.
"PegPriceType": "Bid", // Where to peg the stop/trailing order.
"OrderIdToReplace": 9333, // The ID of the order being cancelled and replaced.
"InstrumentId": 1, // ID of the instrument traded in the order.
"ReferencePrice": 99.1, // used internally.
"Quantity": 1.0, // Quantity of the replacement order
"Side": "Buy", // Side of the order: Buy, Sell, Short (future)
"StopPrice":0, // The price at which to execute the new order.
"TimeInForce":"GTC", // Period when new order can be executed.
"Status":"Rejected", // Status of the order – always "rejected"
"RejectReason":"Order Not Found" // Reason the order was rejected.
}
Trigger: Your order is rejected even if a cancel-replace order was placed.
MarketStateUpdate
MarketStateUpdate The market state is altered administratively.
{
"ExchangeId":1, // Exchange Id [Integer]
"VenueAdapterId":1, // Internal [Integer]
"VenueInstrumentId":1, // Instrument Id on a specific venue [Integer]
"Action":"ReOpen",
// Market State Action [String] Values are
// "Pause", "Resume", "Halt", "ReOpen"
"PreviousStatus":"Stopped",
// Previous Market Status for Instrument [String] Values are
// "Running", "Paused", "Stopped", "Starting"
"NewStatus":"Running",
// Market Status for Instrument [String] Values are
// "Running", "Paused", "Stopped", "Starting"
"ExchangeDateTime":"2016-04-21T21:48:22Z"
// ISO 8601 format UTC time zone
}
Trigger: The market state is altered administratively.
NewOrderRejectEvent
NewOrderRejectEvent An order associated with your account is rejected.
{
"OMSId": 1, //OMS Id [Integer] Always 1
"AccountId": 4, //Your Account Id [Integer]
"ClientOrderId": 1234, //Your Client Order Id [64 Bit Integer]
"Status": "Rejected", //Always "Rejected"
"RejectReason": "No More Market" //A message describing the reason for the reject.
}
Trigger: An order associated with your account is rejected.
OrderStateEvent
OrderStateEvent The status changes for an order associated with your account.
{
"Side":"Sell",
// The side of your order. [String] Values are "Sell",
// "Buy", "Short"
"OrderId": 9849, //The Server-Assigned Order Id. [64-bit Integer]
"Price": 97, //The Price of your order. [Decimal]
"Quantity":1,
// The Quantity (Remaining if partially or fully executed) of
// your order. [Decimal]
"Instrument":1, // The InstrumentId your order is for. [Integer]
"Account":4, // Your AccountId [Integer]
"OrderType":"Limit",
// The type of order. [String] Values are "Market", "Limit",
// "StopMarket", "StopLimit", "TrailingStopMarket", and
// "TrailingStopLimit"
"ClientOrderId":0, // Your client order id. [64-bit Integer]
"OrderState":"Working", // The current state of the order. [String]
// Values are "Working", "Rejected", "FullyExecuted", "Canceled",
// "Expired"
"ReceiveTime":0, // Timestamp in POSIX format
"OrigQuantity":1, // The original quantity of your order. [Decimal]
"QuantityExecuted":0, // The total executed quantity. [Decimal]
"AvgPrice":0, // Avergage executed price. [Decimal]
"ChangeReason":"NewInputAccepted"
// The reason for the order state change. [String] Values are
// "NewInputAccepted", "NewInputRejected", "OtherRejected",
// "Expired", "Trade", SystemCanceled BelowMinimum",
// "SystemCanceled NoMoreMarket", "UserModified"
}
Trigger: The status changes for an order associated with your account.
OrderTradeEvent
OrderTradeEvent An order associated with your account results in a trade.
{
"OMSId":1, //OMS Id [Integer]
"TradeId":213, //Trade Id [64-bit Integer]
"OrderId":9848, //Order Id [64-bit Integer]
"AccountId":4, //Your Account Id [Integer]
"ClientOrderId":0, //Your client order id. [64-bit Integer]
"InstrumentId":1, //Instrument Id [Integer]
"Side":"Buy", //[String] Values are "Buy", "Sell", "Short" (future)
"Quantity":0.01, //Quantity [Decimal]
"Price":95, //Price [Decimal]
"Value":0.95, //Value [Decimal]
"TradeTime":635978008210426109, // TimeStamp in Microsoft ticks format
"ContraAcctId":3,
// The Counterparty of the trade. The counterparty is always
// the clearing account. [Integer]
"OrderTradeRevision":1, //Usually 1
"Direction":"NoChange", //"Uptick", "Downtick", "NoChange"
"CounterPartyClientUserId": 0, // [Integer] Indicates counterparty source of trade (OMS, Remarketer, FIX)
"NotionalProductId": 0, // [Integer] Notional product
"NotionalRate": 0.0, // Notional rate from base currency at time of trade [Decimal]
"NotionalValue": 0.0 // Notional value in base currency of venue at time of trade [Decimal]
}
Trigger: An order associated with your account results in a trade.
PendingDepositUpdate
PendingDepositUpdate Deposit pending on your account.
{
"AccountId": 4, // Your account id number. [Integer]
"AssetId": 1, // The ProductId of the pending deposit. [Integer]
"TotalPendingDepositValue": 0.01 //The value of the pending deposit. [Decimal]
"Requires2FA": false,
"TwoFAType": "",
"TwoFAToken": "",
}