Extension kinds and common rules
The developer API lets you add your own code to the platform in several places. Every kind of extension is an ordinary .NET class library that references the platform API; the same DLL runs in the classic ATAS and in ATAS X, as long as it does not use WPF types (see ATAS X and macOS).
| Extension | What it is | Base type or marker | Article |
|---|---|---|---|
| Chart indicator | Calculates and draws on a chart from bars, trades and the order book | Indicator |
Your first indicator |
| Chart strategy | An indicator that also trades | ChartStrategy |
Chart strategies |
| Heatmap indicator | Draws on top of the Heatmap module from trades, profiles and MBO data | HeatmapIndicator<TSettings>, [HeatmapIndicator] |
Heatmap indicators |
| SmartDOM column | A column of the SmartDOM that draws its cells | SmartDomColumn, [SmartDomColumn] |
SmartDOM columns |
| Watchlist column | A column of the Watchlist: one value per instrument | WatchlistColumn, [WatchlistColumn] |
Watchlist columns |
| Custom module | A panel (classic ATAS) or widget (ATAS X) whose whole area your code draws | PlatformModule, [PlatformModule] |
Custom modules |
| Connector | A data feed: the instruments, trades and order book of an external source | BaseConnector<…> with BaseConnectorSettings<…> |
Connectors |
Stable ids
Heatmap indicators, columns and modules are identified by a stable id in their attribute, <vendor>.<name>
(the vendor atas is reserved). The platform saves them in workspaces and templates under that id, so you can rename
classes and namespaces freely, and a workspace keeps them, with their settings, while the DLL is missing.
One DLL, several extensions
A single assembly may contain any number of chart indicators, heatmap indicators, SmartDOM columns, Watchlist columns and custom modules: the platform scans every loaded assembly for all these kinds, so related tools (an indicator, the matching SmartDOM column and a dashboard module) can share code and ship as one file.
Connectors are the exception: they are loaded from a different folder, once at start-up, and cannot be unloaded while the platform runs. Ship a connector as a separate DLL that contains nothing else.
Where the DLL goes
The folders of each kind, the Add custom indicator button and the reload rules are described in Project setup.
Tariffs and distribution
Some parts of the API can be restricted by the user's tariff; a restricted extension stays listed, keeps its settings
and must keep working with less data: Tariffs. Giving other users access to your DLL
through the Personal Area, with the [FeatureId] attribute: Distribution.