Table of Contents

Namespace ATAS.DataFeedsCore

Classes

AsyncConnectorMessage

Service message for passing continuations to the connector thread

AsyncConnector<TPortfolioKey, TSecurityKey>

Connector base that allows to use await to switch to the connector queue thread

This 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 SynchronizationContextAwaiter to allow explicit call of SwitchToConnectorThreadAsync()

AsyncConnector<TPortfolioKey, TSecurityKey>.AsyncAwaiterQueueFacade

Facade for SynchronizationContextQueueAwaiter to allow explicit call of ForceToConnectorThreadAsync()

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 the On... methods: OnConnect() (or OnConnectAsync()) reports the outcome with OnConnected() or OnDisconnected(); the market data, search and order requests go to the broker in OnSubscribeMarketData, 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 the Process... and Raise... 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 (OptionsSubscriptionService behind IOptionsDataProvider and 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 ConnectorSynchronizationContext This 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.Instrument via 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

NewsType

Kind of a News message.

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.