Changelog for cTrader Algo API
5.9
July, 2026
What's new
- New
ClipboardAPI allows your algos to read text from and write text to the system clipboard. Accessing the clipboard requires user permission viaClipboardPermission. - New server-side Advanced Protection API allows you to declare a complete stop-loss / take-profit protection plan on a single trade call using
RelativeStopLossProtection,RelativeTakeProfitProtection/RelativeTakeProfitProtectionsand break-even rules. Partial take profits, a final take profit and break-even stop moves are then enforced by the server instead of your algo's polling loop. - New
TimeByValuemethod added to chart graphical objects (such as trend lines, channels and Andrews Pitchfork) complements the existingCalculateYand allows you to retrieve the time or value of a graphical object at any chosen bar. - New
IsVisibleproperty added toOutputAttributeandBarOutputAttributeallows an indicator to set the default visibility of its outputs. - Python cBots and indicators can now reference a custom indicator project (a user-written indicator, not only the built-in standard indicators) and instantiate it at runtime via
GetIndicatorusing the indicator's type name, exactly like a C# algo usesIndicators.GetIndicator<T>. - New Algo Config UI allows you to edit the
config.jsonalgo metadata and schema (settings, parameters, outputs, clouds, levels and enums) through a structured editor with validation and localization instead of editing the file by hand. - Code editor now supports showing and editing the other source files of an algo project, not just the main file.
- New Copy button in the Automate Build Result panel allows you to copy all build errors and warnings to the clipboard at once. Individual diagnostics can also be selected and copied with
Ctrl+C, andCtrl+Aselects all of them. - cBot
OnStopis now called when the CLI / cTrader Console is terminated viaSIGTERMorSIGINT, so cBots are notified of shutdown and can clean up. - Native
linux/arm64cTrader Console Docker image: the published image is now a multi-architecture manifest covering bothlinux/amd64andlinux/arm64, so ARM hosts such as Raspberry Pi, Apple Silicon and ARM64 cloud instances run natively instead of under QEMU emulation.
Improvements
- Backtesting now closes open positions at the end of the backtest so the equity chart reflects the true account value throughout the whole run instead of a simplified shape.
- Backtesting margin and stop-out logic aligned with live trading: opening new positions is blocked when the margin level is below 100% and a realistic stop-out is applied.
- Algo build now fails with a clear error when an algo declares its configuration through both
config.jsonand code attributes, so only one approach is used. - C# and Python algo templates updated to use the new
config.jsonfile and the Config source generator NuGet package. - Reduced CPU usage on cBot startup.
- Cloud cBot execution limits per account: cloud cBots are now subject to a per-account limit on the number of simultaneously running cloud cBots, and are automatically stopped when the account's trading activity requirement is not met.
Bug fixes
- Indicator
OnDestroynot being called when switching workspaces. Notifications.PlaySoundfailing with a service-not-registered error.- Backtesting report
Fitnessvalue being zero for some symbols. - Wrong "Python is not supported" build error for C# algos when using the embedded compiler.
5.7
March, 2026
What's new
- New
Floatingvalue added toChartModeenum allows you to set a chart container mode to the new floating mode. - New
Fileparameter type allows you to pass a file to an algo, allowing the algo to read from and write to the file. - New
File[]or multi file parameter type allows you to pass multiple files to an algo, allowing the algo to read from and write to any of the files. - New
Archived,CustomandEnabledcollection properties added toSymbolstype make querying symbols easier and more performant. - New
DATA-DIRoption for CLIbacktestcommand allows you to use a specific directory for saving and loading price data when backtesting cBots with CLI. This option eliminates the need to download historical price data multiple times when CLI is used via Docker.
Bug fixes
ChartTemplates.DefaultTemplatebeing null.
5.6
November, 2025
What's new
- New
ChartTemplatesAPI allows you to retrieve, create, update, remove and apply chart templates. - New
Symbol[]parameter type allows you to pass multiple symbols to an algo, with a multi-symbol picker UI representation. - New
Enum[]parameter type allows you to pass multiple values of an enum type to an algo, with a multi-enum value picker UI representation. - New
TimeFrame[]parameter type allows you to pass multipleTimeFramevalues to an algo, with a multi-period picker UI representation. - New
MultiSelectalgo control allows you to let users of your algo select multiple unique string values. - New
OpenDevToolsWindowmethod forWebViewcontrol allows you to open dev tools for a WebView control instance. - New
SwapCalculationTypefor symbol points.
Improvements
TimeFrameparameter types upgraded to support custom periods in plugins.DateTimeparameter type changed to use new hard coded default value of31/10/2025 00:00:00if not set by algo instead ofDateTime.MinValue.DateOnlyparameter type changed to use new hard coded default value of31/10/2025if not set by algo instead ofDateOnly.MinValue.TimeSpanparameter type changed to use new default value of00:00:00if not set by algo instead ofTimeSpan.MinValue.TimeSpanparameter type changed to use new min value of00:00:00and max value of23:59:59if not set by algo instead ofTimeSpan.MinValueandTimeSpan.MaxValue.- Some built-in algo samples added to the list of C# and Python algorithm templates and algo samples GitHub repositories.
- Source code of all built-in indicators added to the C# and Python algo samples GitHub repositories.
- Chart view-port data transfer to algos refactored from from eager to lazy. This change prevents unnecessary resource usage in cases where an algo does not use chart view-port API members.
Bug fixes
- Chart controls with coordinates resulting in problems when used alongside chart objects.
- Account related data, such as positions, pending orders and others, not being updated when trading account is switched for plugins.
DateTimePickercontrolValueChangedevent not being triggered when value is set by algo.
5.5
September, 2025
What's new
- New
Symbolparameter type allows you to select a symbol from your account symbols list and pass it to an algo. - New
TimeSpanparameter type allows you to pass a typed time interval or time of day to an algo, with a time picker UI representation. - New
DateTimeparameter type allows you to pass a typed date and time in your algo's time zone, with a date-time picker UI representation. - New
DateOnlyparameter type allows you to pass a typed date to an algo, with a date picker UI representation. - New
Parameterscollection property, added toPluginType(similar toIndicatorTypeandRobotType), allows you to access plugin parameters in code. - New
DateTimePickeralgo control allows you to easily get a date and time value from a user of your algo.
Improvements
- Changed loading for account deposit asset from eager to lazy mode to prevent deposit asset not found errors during algo start-up.
Bug fixes
- New loaded bars after calling
LoadMoreHistoryin plugins were not added to chart. - Chart bars were not being updated after switching chart symbol or time frame in plugins.
- Incorrect number of positions returned inside the position opened event handler when accessing
Positions.Count
5.4
July, 2025
What's new
- Plugin hotkeys API: New API objects for plugins allow you to add global hotkeys. These hotkeys behave like built-in cTrader hotkeys and work everywhere.
- Parameter and output descriptions: New
Descriptionproperty in parameter and output attributes shows tooltips in the UI when users hover over them. - Chart bars toggle: New
Barsflag in chart display settings allows you to hide chart bars. The flag removes the need for transparent colours and prevents scaling issues by not drawing bars. - Setting active frames: New
Activatemethod in theFrameclass allows plugins to set the active chart or frame. - Bar outputs: Indicators can now output
OHLCbars with volume instead of a single data series. The output allows displaying custom bar charts on panels or the main chart and can be reused by other indicators. - Data series for plugins: New
CreateDataSeriesmethod allows plugins to create data series. The created series can be passed as inputs to internal indicators. - Panel child properties: New
Children,HasChildandChildrenCountproperties let you access and work with panel contents. - Grid panel position info: New
GridChildPositionInfomethod returns a child’s position in the grid. - Main menu API for plugins: New API lets you add menu items with SVG icons to the main menu. Top menu items can show custom controls. Bottom menu items can trigger plugin handlers.
- Plugin parameters: Plugins can now use parameters the same way indicators and cBots do. The parameters are visible and editable in plugin settings.
Improvements
AssetsAPI is refactored to reduce resource usage.SleepAPI is improved to prevent freezing for cBots and indicators when the market is closed.
Bug fixes
- No API bugs were found or fixed in version 5.4.
5.3
June, 2025
What's new
- Custom timeframe API: New API lets plugins define custom timeframes and supply data for them.
- Custom symbol API: New API lets plugins create custom symbols. The created symbols can be based on existing ones or defined from scratch and behave like broker symbols.
- Custom backtesting data source: New API allows plugins to provide backtesting and optimisation data. The API supports external tick data and third-party feeds.
- Notification popups: Algos can now show popup alerts similar to built-in cTrader notifications.
- Symbol sentiment access: Algos can now read sentiment data for symbols.
Improvements
- Cross-timeframe backtesting: Improved error messages for incompatible timeframe use in backtesting and optimisation.
- Updated Help Centre link in default algo templates.
- Made
Account.UserIdandAccount.Nicknameavailable for cloud cBot instances. - CID disconnection handling: Algos keep running and return the last known account data when CID disconnects.
- Message timeouts: Timeout handling prevents algos from getting stuck while waiting for a response from cTrader.
- Help Centre API updates: Added protected API methods to the Help Centre reference.
Bug fixes
Account.BrokerNamereturned empty in the console.- Algos froze when loading all account transactions.
RiskRewardtool in backtest incorrectly placed live trades.- Typo in
ChartObject.IsLockedproperty documentation. ComboBox.SelectionChangedwas triggered after setting the selected item before render.
