Namespace ATAS.DataFeedsCore
Classes
- AsyncConnectorMessage
Service message for passing continuations to the connector thread
- AsyncConnector<TPortfolioKey, TSecurityKey>
Connector base that allows to use
awaitto switch to the connector queue threadThis connector implements its own SynchronizationContext that allows to call await that will return to the connector thread. This works only if call is made from the connector queue thread
To move to the connector thread in the first place just call:
await SwitchToConnectorThreadAsync();This class seals the OnProcess method.
- AsyncConnector<TPortfolioKey, TSecurityKey>.AsyncAwaiterFacade
Facade for
SynchronizationContextAwaiterto allow explicit call ofSwitchToConnectorThreadAsync()
- AsyncConnector<TPortfolioKey, TSecurityKey>.AsyncAwaiterQueueFacade
Facade for
SynchronizationContextQueueAwaiterto allow explicit call ofForceToConnectorThreadAsync()
- AsyncConnector<TPortfolioKey, TSecurityKey>.ConnectorSynchronizationContext
Custom synchronization context to forward await continuations to the connector queue
- BaseConnector<TMessage, TPortfolioKey, TSecurityKey>
BaseConnector<TMessage, TPortfolioKey, TSecurityKey, TSecurityPositionManager> with ISecurityPositionManager as the position manager type: the base class of most connectors.
- BaseConnector<TMessage, TPortfolioKey, TSecurityKey, TSecurityPositionManager>
The base class of a connector. It implements the connection lifecycle of IDataFeedConnector (connect, automatic reconnection, connect and disconnect timeouts), keeps the securities, portfolios, positions, orders and own trades, counts the market data subscriptions and restores them after a reconnect, and tracks the order actions until the broker answers them.
A derived connector implements the transport in theOn...methods: OnConnect() (or OnConnectAsync()) reports the outcome with OnConnected() or OnDisconnected(); the market data, search and order requests go to the broker inOnSubscribeMarketData,OnSearchSecurities, OnRegisterOrder(Order) and OnCancelOrder(Order, long). The data received is queued with Enqueue(TMessage), handled in OnProcess(TMessage) on the connector's queue thread and reported with theProcess...andRaise...methods, which update the entities and raise the events.
- BaseMarketDataOnlyConnectorSettings<T, TSelf>
Base settings of a connector that supports market-data-only connections. While the user has not entered a custom connection name, the name follows the settings, for example
Bybit Only Market Data.Added in ATAS 8.0.15.
- BaseMessageQueue<TMessage, TItem>
A queue processed by its own thread.
The queue runs in sessions: Start(IDataFeedConnector, Action<TMessage>) begins one (the first connector of a shared queue), Stop(IDataFeedConnector) ends it (the last connector). An item belongs to the session it was queued in: the items still queued when the session ends are dropped - also when the next session has already begun (a connect issued right after a disconnect) and the thread of the stopped session goes on to serve it. A message or an action queued while no session runs waits for the next session (unless a thread of the stopped queue is still alive and drops it); a continuation (EnqueueContinuation(IDataFeedConnector, Action)) queued after a session ended is dropped, it never runs in a later session.
- ConnectionRefusalExtensions
Helpers that find a ConnectionRefusedException in a connection error.
<p>Added in ATAS 8.0.15.</p>
- ConnectionStateEventArgs
Arguments of a change of the connection state of a connector.
- DailyNote
Note the user wrote for a day in the trading journal calendar.
<p>Added in ATAS 8.0.15.</p>
- Exchange
Exchange with its time zone and weekly trading sessions; used to convert data feed times and to find session, week and month boundaries.
- Extensions
Helper extension methods for orders, positions, securities, trades, connectors and price/money formatting.
- HistoryMyTrade
Represents a historical trade record.
- MarketByOrder
Market by Order (MBO) describes an order-based data feed that provides the ability to view individual queue position, full depth of book and the size of individual orders at each price level.
- MarketDepth
Represents a market depth entry.
- MboAnalyticsDataStatus
Runtime state of Market-By-Order data reaching MBO analytics.
Added in ATAS 8.0.15.
- MboAnnotatedTrade
Trade fill enriched with MBO-derived classification and matching-event metadata.
Added in ATAS 8.0.15.
- MboHiddenDetectEvidence
Data behind one hidden-volume detection of an iceberg order.
Added in ATAS 8.0.15.
- MboIcebergOrderEvent
Order book update of an iceberg order.
Added in ATAS 8.0.15.
- MboIcebergRecord
Current iceberg state for one exchange order.
Added in ATAS 8.0.15.
- MboIcebergTrade
Fill of an iceberg order, either passive or as the aggressor.
Added in ATAS 8.0.15.
- MboOrderEvent
Normalized Market-By-Order update consumed and stored by MBO analytics.
Added in ATAS 8.0.15.
- MboPriorityRefreshEvidence
Data behind one queue priority change of an iceberg order.
Added in ATAS 8.0.15.
- MyTrade
Represents a trade entity in the system.
- News
Text message sent to the user by a connector or the trading server; raised through the connector news event.
- OptionRequestGuard
Connector-level limit on option requests that come past the budgeted options API.
The options API (
OptionsSubscriptionServicebehindIOptionsDataProviderand the Options Board, PLAT-5011) budgets its own subscriptions and lookups per connector and marks its connector calls with EnterBudgetedScope(). Everything else that reaches a connector for options - a chart or DOM opened on an option, or a third-party indicator that took the connector itself instead of the provider - is a direct caller. Direct callers get a small allowance meant for a person opening option charts, not for a program walking a whole option chain: at most MaxDirectOptions options held at once (an option shared with the options API counts too), a token bucket for the subscribe requests they send to the broker (a subscription restored after a reconnect costs a token too) and one for series/chain lookups. A request over the allowance is refused locally and never reaches the broker. The unattended server hosts (ReconnectOnFirstConnect) are our own infrastructure; the base connector does not consult the guard for them.The holdings are counted per origin and per subscription type, mirroring the connector's subscription counter: the budgeted and the direct holders of one option are tracked apart, so a direct caller cannot ride on a subscription of the options API and keep it after the API released it. The connector serialises the guard with its own counter (see
BaseConnector); the guard's own lock only protects its state.Background: on 2026-09-28 Rithmic blocked clients of 8.0.15.271 that ran an indicator subscribing ~4 000 option strikes straight through the connector, around the budget of the options API, and re-subscribing all of them after every reconnect.
The scope is a guard against bugs, not a security boundary: indicators run in-process with full trust.
Added in ATAS 8.0.15.
- Order
Represents an order for trading on a financial exchange.
- OrderExtendedOptions
Represents additional options for an order.
- Playbook
Playbook of the trading journal: a named trading setup that own trades can be tagged with.
<p>Added in ATAS 8.0.15.</p>
- Portfolio
Represents a portfolio entity with various properties related to account balance, Profit and Loss (PnL), permissions, trading options, and more.
- PortfolioBrokerInfo
Broker attribution of a portfolio as reported by the connector. The values are kept raw, without any normalization: telemetry maps them to canonical broker names on the server side (PLAT-4619).
Not in ATAS 8.0.15 yet: available from the next version.
- PortfolioChange
Balance or leverage change of a portfolio on the ATAS trading server, stored in the portfolio change history.
- PortfolioGroup
Represents a portfolio group used in the application.
- PortfolioViewer
Represents a portfolio viewer used in the application.
- Position
Represents a trading position.
- RiskInfo
Contains information about marginal trading for a position null fields values means value is not received
- Security
Represents a security entity used in the application.
- SecurityFilter
Criteria of a security search request sent to a connector (
SearchSecurities). Each connector uses the fields it supports; empty strings and zero values mean that the criterion is not set.
- SecurityRoute
Rule of SecurityRoutes that routes orders for securities matching Code and Exchange to the real account Account.
*in the code or exchange matches any value.
- SecurityRouteCache
Set of SecurityRoute rules of one TradingOptions, indexed by exchange and code. Not thread-safe.
- SecuritySummary
Summary (daily statistics) of a security, such as best prices and volumes, published by a connector through SecuritySummaryChanged for securities subscribed to Summary. A connector keeps one instance per security and updates it in place; values not received yet are null.
- SimpleMessageQueue<TMessage>
The queue of a single connector with its own process thread; the default queue of BaseConnector<TMessage, TPortfolioKey, TSecurityKey, TSecurityPositionManager>.
- SubscriptionStatistics
Market data subscription load of a single connector: how many instruments are subscribed at the moment (state, by SecType) and how many subscribe/unsubscribe requests actually reached the broker (flow, since the last Reset()). Flow divided by state is the flood signature: a normal number of subscribed instruments with a huge number of requests for them means somebody re-subscribes in a loop (PLAT-5011).
Added in ATAS 8.0.15.
- SubscriptionStatisticsSnapshot
Immutable set of SubscriptionStatistics values taken at a single moment. Current values describe the state right now, maximum values and request counters describe the period since the last Reset(). The state is kept per SecType: CurrentOf(SecType) and MaxOf(SecType).
Added in ATAS 8.0.15.
- Trade
Represents an tick on a financial exchange.
- TradingOptions
Trading and risk rules that the ATAS emulation (simulated trading) server applies to portfolios: commissions, leverage, allowed securities, position and order limits and drawdown limits. Assigned to a UserGroup or to an individual Portfolio; the portfolio's own options take precedence over its group's options. For every numeric limit, 0 means the limit is not applied. Money values are in the portfolio currency, volumes are in lots.
- User
User account of the ATAS trading server.
- UserChange
Record of an administrator's change of a user's access expiration date.
- UserGroup
Group of users of the ATAS emulation (simulated trading) server. Defines the prefix of new account numbers, the exchanges whose market data the users may subscribe to and the default TradingOptions of their portfolios. Groups form a hierarchy through Parent.
- UserRole
Named set of administrative rights (EntityAction values) of the ATAS emulation server.
- WorkingTime
Weekly trading session of an Exchange, in exchange local time.
Structs
- AsyncConnector<TPortfolioKey, TSecurityKey>.SynchronizationContextAwaiter
Custom awaiter to control continuation execution on the
ConnectorSynchronizationContext
- AsyncConnector<TPortfolioKey, TSecurityKey>.SynchronizationContextQueueAwaiter
Custom awaiter to control continuation execution on the
ConnectorSynchronizationContextThis awaiter always passes the continuation to the connector's queue
- CurrencyInfo
Represents currency information for a decimal value
- MarketDepthHistoryLevel
One historical order-book level update: at TimeNanos (UTC, Unix-epoch nanoseconds) the resting volume at Price on the given side became Volume (0 removes the level). Replaying the chronologically ordered updates rebuilds the historical book.
Added in ATAS 8.0.15.
- MarketDepthHistoryQuote
The historical top of book at TimeNanos (UTC, Unix-epoch nanoseconds).
Aggregated depth history describes level changes but not every level removal, so a book replayed from it drifts and eventually crosses. The service's own best bid/ask is the authority that keeps the replayed book honest; a zero price means the side had no quote.
Not in ATAS 8.0.15 yet: available from the next version.
- Money
Represents decimal amount in some currency
- OptionRequestGuard.BudgetedScope
Ends the budgeted scope entered by EnterBudgetedScope().
Added in ATAS 8.0.15.
- OptionSeries
An option series of an underlying instrument: the options with one expiration, as returned by GetOptionSeriesAsync(Security) and passed back to GetOptionsAsync(OptionSeries) to get its contracts.
- PriceUnit
A price distance (for example a stop-loss or take-profit offset) together with its unit. The default value is a zero Price distance.
Interfaces
- IConnectionWarningSource
A connector that reports problems of a live connection which do not end it, for example Rithmic "PnL Connection - Heartbeat has been quiet for 55 seconds": the connection stays open, but positions, balances and order statuses shown by the platform may be out of date.
Error is not used for that: it reports the failure of the connection itself.Not in ATAS 8.0.15 yet: available from the next version.
- IConnectorExchangeInfoProvider
Defines methods to retrieve exchange information based on security or exchange codes.
Added in ATAS 8.0.15.
- IConnectorLatencyManager
Read-only view of the latency statistics of a connector: order round-trip latency, market data delay and the time of the last market data update.
- IDataFeedConnector
A connection to a broker or a data feed: connects and reconnects, provides securities, portfolios, positions, orders and own trades, places orders and streams market data through its events.
A connector is normally built on BaseConnector<TMessage, TPortfolioKey, TSecurityKey, TSecurityPositionManager> or AsyncConnector<TPortfolioKey, TSecurityKey>, which implement this contract. The events are raised on the connector's threads (the thread that processes its data, a thread-pool thread for the connection state), not on the UI thread; a handler must not block them.
- IEntity
Represents an entity in the application.
- IEntityFactory
Creates the entities a connector produces, or returns existing instances, so that a host can share one instance per identifier (for example a database cache or a basket connector). The default connector implementation always calls the supplied factory.
- IKnowSession
Detects trading session, week and month boundaries between two times; implemented by Exchange.
- ILiquidationFeed
Provides liquidation orders stream for securities
- IMarketDataPublisher
Reports the outcome of the market data subscription requests of a connector.
- IMarketDepth
Represents a market depth entry.
- IMarketDepthHistoryProvider
Optional connector capability: historical order book (market depth) data, e.g. the dxFeed ORCS service. Consumers (the heatmap) probe for this interface on the instrument's connectors and backfill the book history when supported.
Added in ATAS 8.0.15.
- IMboAnalyticsDataProvider
Optional online-provider capability for MBO-derived analytics.
Added in ATAS 8.0.15.
- IMboCapabilitiesProvider
Implemented by connectors that publish market by order data to declare what the stream contains.
Not in ATAS 8.0.15 yet: available from the next version.
- IMessageQueue<TMessage>
The queue that serializes the processing of a connector: the messages and actions put into it are processed one by one by the connector's thread, and the messages are passed to the handler registered by Start(IDataFeedConnector, Action<TMessage>). BaseConnector<TMessage, TPortfolioKey, TSecurityKey, TSecurityPositionManager> starts the queue when it connects and stops it when it ends up disconnected.
- IOptionsDataFeed
Implemented by a connector that can look up option series and option contracts for the options board.
- IOrderOptionCloseOnTrigger
Represents an order option for closing a position when triggered.
- IOrderOptionPostOnly
Represents an order option for placing a post-only order.
- IOrderOptionReduceOnly
Represents an order option for reducing the position size.
- IPortfolioExtendedInfo
Base interface for extended portfolio information. Each connector can have its own implementation with unique parameters.
Added in ATAS 8.0.15.
- IPriceFormatter
Exposes the subset of trading-entity properties required to format prices and derive instrument classification (US bonds, MOEX futures). Implemented by Security directly and by
OFT.Platform.Models.Instrumentvia explicit interface implementation.Added in ATAS 8.0.15.
- ISecurityPositionManager
Maintains one Position of a connector: applies position values received from the server, own trades and market prices, and reports whether the position changed.
- ISecurityTradingOptions
Represents an interface for providing trading options related to a security or trading connector.
- ISupportChangePosition
Implemented by a connector that lets the user override the average price of a position it calculates itself.
- ISupportMarketDataOnly
Implemented by connector settings that can open a connection for market data only, without trading.
- ISupportMarketDataRejects
A connector whose server can refuse the market data of one security while the connection stays up: the ATAS servers (SBE) refuse a subscription to a security of an exchange the user's group has no rights to (
Emulation/Server/Server_SBE.cs,ProcessMarketDataRequest: "Access denied."). Nothing comes for that security until the connector subscribes it again and the server grants it.Not in ATAS 8.0.15 yet: available from the next version.
Enums
- AccountKind
Whose money a trading account holds, as agreed for telemetry in PLAT-4891. Not the server the connector talks to: a broker's paper account and an exchange testnet are both Demo, a prop firm's challenge and funded accounts are both Prop.
Not in ATAS 8.0.15 yet: available from the next version.
- CommissionSource
Where the commission of a MyTrade came from (PLAT-4891). Telemetry has to tell a figure measured by the broker from one estimated by the user.
Not in ATAS 8.0.15 yet: available from the next version.
- ConnectionRefusalReason
Why the counterparty refused the connection in a way that a retry cannot fix. An error carrying one of these (see ConnectionRefusedException) stops the automatic reconnection of BaseConnector<TMessage, TPortfolioKey, TSecurityKey>: the user has to act first.
Added in ATAS 8.0.15.
- Currencies
Represents a list of currency values used in the application.
- EntityAction
Administrative action of the ATAS trading server: the request type of an administration session and the permission stored in Rights.
- EntityType
Represents the types of entities used in the application.
- MarketByOrderFlags
Batch boundary markers carried by market by order rows from feeds that deliver atomic batches.
Not in ATAS 8.0.15 yet: available from the next version.
- MarketByOrderReason
Why a market by order row changed. Feeds that state the reason natively set it in the connector; feeds that only attribute fills to order ids get it resolved downstream from the trade stream.
Not in ATAS 8.0.15 yet: available from the next version.
- MarketByOrderUpdateTypes
Type of market by order update.
- MarketDataDelayPeriods
Delay of the market data provided by a feed; a delayed feed is taken into account when connector latency is measured.
- MarketDataType
Specifies the type of market data.
- MboCapabilities
What a market by order source can actually deliver for a security. Checked against data, not tariff names.
Not in ATAS 8.0.15 yet: available from the next version.
- MboIcebergStatus
Lifecycle state of an iceberg order.
Added in ATAS 8.0.15.
- MboOrderSide
Side of a Market-By-Order entry.
Added in ATAS 8.0.15.
- MboOrderUpdateType
Normalized Market-By-Order update type.
Added in ATAS 8.0.15.
- MboReasonSource
Where the Reason of a normalized order event came from.
Not in ATAS 8.0.15 yet: available from the next version.
- MboTradeKind
MBO-derived trade classification.
Added in ATAS 8.0.15.
- MissingDataCases
Describes what part of the HistoryMyTrade was incomplete
- OptionSeriesType
Kind of an option series by its expiration schedule.
Added in ATAS 8.0.15.
- OptionTypes
Type of an option contract.
- OrderDirections
Specifies the direction of an order.
- OrderStates
Represents the possible states of an order.
- OrderStatus
Represents the possible status of an order.
- OrderTypes
Specifies the type of an order.
- PnlPercentType
Represents the type of percentage calculation for profit and loss (PNL).
- PortfolioChangeType
Kind of a PortfolioChange.
- PositionAveragePriceValueTypes
Represents different types of values for the average price of a position. The average price is the average cost of all the trades that make up a position.
- PriceUnitTypes
Unit in which a PriceUnit distance is expressed, for example a stop-loss or take-profit offset. An unknown value read from settings is deserialized as Tick.
- RebateResult
The result of the check of an exchange account against the ATAS referral (rebate) program.
- SecType
Represents the type of security or financial instrument.
- SubscriptionType
Kinds of market data a subscription covers. The values are flags and can be combined.
- TPlusLimits
Represents different T+ (settlement) periods for trading. T+ refers to the number of days it takes for a trade to settle and for the funds and securities to be exchanged between the parties involved in the transaction.
- TimeInForce
Specifies the time in force options for an order.
- TradeDirection
Represents the trade direction.
- TriggerPriceType
Defines price source for conditional order trigger
- UserChangeTypes
Kind of change of a user's access expiration date.
Delegates
- ConnectorEventHandler
Handles a connector event without arguments.
- ConnectorEventHandler<T>
Handles a connector event with one argument.
- ConnectorEventHandler<T1, T2>
Handles a connector event with two arguments.
- ConnectorEventHandler<T1, T2, T3>
Handles a connector event with three arguments.