# Change Log
# 2026-11-10 Breaking changes
- The ability to configure the portfolio's trading schedule separately for each day of the week has been added. In connection with this:
- The portfolio TradingDays parameter has been removed;
- The Trading days column has been added to the Timetable table of the portfolio;
- The
Group TradingDaysitem has been removed from theActionsmenu of the Portfolios table widget.
- The ability to configure the calculation schedule for indicators values separately for each day of the week has been added. In connection with this:
- In connection with the removal of the portfolio TradingDays parameter and its addition to each interval in the Timetable table of the portfolio:
- If this parameter was used in any way through the WebSocket API, the client code implementation must be changed, as the changes in the robot DO NOT maintain backward compatibility;
- The current settings of ALL portfolios also do not maintain backward compatibility: all intervals in the schedule will have all days of the week set as the Trading days value by default, and users will have to change the days to the required ones themselves for all intervals of all portfolios.
# How to migrate
# WebSocket API
The trading_days field has been removed from the portfolio object and added to each element of the timetable array. The value format has not changed: a bitmask of days of the week (bitmask_select), 1 is Sunday, 2 is Monday, 4 is Tuesday, 8 is Wednesday, 16 is Thursday, 32 is Friday, 64 is Saturday, the default is 127 (all days). See api.md and Timetable for the field descriptions.
At the portfolio level:
| Before | After |
|---|---|
| |
At the schedule level (timetable):
| Before | After |
|---|---|
| |
If a client read or wrote the portfolio trading_days, it must now:
- read
trading_daysfrom each interval of the portfoliotimetableinstead of from the portfolio itself; - write
trading_daysinto everytimetableinterval: the field is required (for example, Monday to Friday is2 + 4 + 8 + 16 + 32 = 62); the allowed range is1to127; - not send
trading_daysat the portfolio level: a request containing this field is rejected with an error.
# Existing portfolios
In all existing portfolios, trading_days in every timetable interval will be 127 (all days of the week). The former portfolio value is not carried over, so users must set Trading days for each interval themselves.
# C++
A constructor with a bitmask of days of the week has been added to interval:
interval(int trading_days, day_time b, day_time e)
The conditions b < e and must hold; otherwise, std::invalid_argument is thrown. The previous interval(day_time b, day_time e) works as before and sets all days of the week.
An overloaded is_in method has been added to schedule:
bool is_in(int wd, const day_time& dt) const
wd is the day of the week, (0 is Sunday, 1 is Monday, and so on); like is_in(const day_time& dt), the method returns true if the schedule is empty.
# 2026-10-20
- Added non-editable portfolio parameter Pos0;
- Added the lot_qty() method to the C++ interface for the instrument object;
- Changed the behavior and description of the lot_round() method in the C++ interface for the instrument object.
# 2026-09-29
- Added
ring_dequeobject to the C++ interface, which can save and load its values on robot restart; - Due to the addition of collections placed in
shared_memoryto the C++ interface, the sectionIndicators and Mathematical Statisticshas been renamed toIndicators, Mathematical Statistics, and Collections.
# 2026-09-14
- Added a limit of 8 identical subscriptions to one WebSocket session in the WebSocket API;
- Added portfolio parameter Calculation method, responsible for the new spread calculation method, which resulted in updated calculation formulas for Sell/Buy, Price_s/Price_b, Equal prices.
# 2026-08-21
- Added portfolio parameters Shift mode, Shift formula, X, v_side, responsible for new algorithms of Lim_sell and Lim_buy price moving;
- Added portfolio methods to C++ interface for accessing and editing Shift mode, X, v_side;
- Added deal() method to C++ interface for portfolio object.
# 2026-08-04
- Added
void log_show(const std::string&)function to C++ interface - Added ability to save and load indicator values on robot restart to C++ interface
# 2026-03-05
- The
Sell/BuyandLim_S/Lim_Bfields have been added to the Finres history and Finres for today widgets. TheBuy/Sellfield has been renamed toDirectionin both widgets.
# 2026-02-27
# 2026-01-27
- Added the ability to restrict access to the platform by allowing access only to IP addresses from the whitelist.
# 2026-01-16
- Disabled checking of security statuses for the next connections: SPB, OREX, IMEX, and ITS connections.
# 2026-01-14
- A field with instrument type codes has been added to the EXANTE connection settings.
# 2025-10-21
- Changes have been made to the Ctrader connection.
# 2025-09-26
- Added daily limit of virtual trades executed by the robot.
# 2025-09-22
- In all notifications, comparison operator has been changed to strict ("strictly greater" everywhere);
- Added the ability to stop trading from any notification.
# 2025-07-22
- Added a non-editable portfolio parameter Is trading;
- Added a new status for trade and market data connections: "disabled by time";
- Updated widget interface descriptions Robots table, Data connections, Trade connections accordingly.
# 2025-07-15
- Added a dedicated section with detailed system requirements.
The FAQ question on system requirements FAQ now refers to this section.
# 2025-06-22
- Storage of historical data for trades, financial results, and logs is now retained for 6 months.
# 2025-06-19
- Added ability to edit trading schedule intervals for multiple portfolios at once in the web interface.
# 2025-06-04
- Added constant
NULL_VALUEto the C++ API for indicating missing values in WebSocket API charts; - Updated WebSocket API documentation to describe "missing values" that are not displayed in charts.
# 2025-06-02
- Added C++ API methods
bool is_sell_ok(),bool is_buy_ok(),
bool is_price_s_ok(),bool is_price_b_ok()in the portfolio object for validating current field valuesSell,Buy,Price_s,Price_b.
# 2025-05-29
- Clarified that all strings in the C++ API and WebSocket API must be valid
UTF-8, and length limits are specified in bytes; - Added recommended debugging approach for user formulas to the C++ API documentation;
- Added market data filtering recommendations to the C++ API documentation.
# 2025-05-16
- In the WebSocket API, the field
tin objects of thetrslist inportfolio_fin_res.*methods was replaced withdt.
# 2025-04-08
- Added methods
std::string color()andvoid set_color(const std::string& v)to the portfolio object in the C++ API; - Updated C++ API setters for
std::stringfields to accept arguments by reference (const std::string&).
# 2025-02-10
- Added two-factor authentication support on the website.
# 2025-02-06
- Reduced connection rate limit.
# 2024-11-21
- Added notes for parameters affected by
lot_size: Curpos, Count, Market volume, Return first. - Updated formulas for Opened, Commission sum, Fin res, Fin res wo C to include the instrument's
lot_size.
# 2024-11-01
- Added user field pointer arrays to the C++ API for accessing and editing "user fields".
# 2024-10-30
- Added methods
shift(double),empty(),size()for all indicator objects in the C++ API; - Added RSI indicator to the C++ API;
- Added timer objects to the C++ API.
# 2024-10-17
- Added
clear()method for all indicator objects in the C++ API.
# 2024-09-26
- Removed
set_fin_res()andset_fin_res_wo_c()methods from the portfolio object in the C++ API.
# 2024-09-24
- Portfolio parameters v_min/v_max are now measured in portfolio units.
# 2024-09-16
- Added TradingDays parameter to portfolio schedule settings;
- Added method mid_price() for security objects in the C++ API;
- Added indicator calculation objects to the C++ API.
# 2024-06-26
- Removed portfolio parameter
Timetable only stop.
# 2024-06-20
- Changed and expanded logic of the portfolio parameter Timetable.
# 2024-05-13
- Added portfolio parameter Threshold;
- Only maker is now a portfolio parameter instead of a security parameter;
- Certain parameters directly affecting the placement of Is first instruments and/or available only for Is first instruments moved into a separate portfolio section
FIRST LEG SETTINGS.
# 2024-05-02
- Added tgr_notify() function for sending notifications to Telegram in the C++ API.
# 2024-04-19
- Added portfolio creator information in the WebSocket API subscription to available portfolios.
# 2023-12-13
- Removed
extra()method from the portfolio object in the C++ API; - Removed
dict_doublestructure from the C++ API; - Removed
__extrafield from portfolios in the WebSocket API; - Added methods
uf0(), ..., uf19()andset_uf0(), ..., set_uf19()for "user fields" to the portfolio object in the C++ API; - Added
user_valuestructure to the C++ API; - Added iteration over portfolio instruments in the C++ API (
restart_sec_iter(),has_next_sec(),next_sec()); - Added fields
uf0, ..., uf19to portfolios in the WebSocket API.
# 2022-06-22
- Removed order-per-session limits in FIX connections to the Moscow Exchange equity and FX markets (previously caused by long client codes);
- Binance connections switched to more granular order book feeds.
# 2022-06-15
- Added methods min_step() and lot_round() for security objects in the C++ API;
- Added methods funding_rate() and funding_time() for security objects in the C++ API (for some exchanges).
# 2022-02-03
- Added support for Deribit connections with fast market data (requires re-creating the trade connection to Deribit);
- Changed behavior of all market data connections requiring authorization (Exante FIX, LMAX FIX, Bequant FIX, Deribit). Such market data connections are now always tied to the corresponding trade connection and can only be enabled/disabled together;
- Added
extra()method to the portfolio object in the C++ API; - Added log output support in the C++ API (log_* functions);
- Added "To0" action on the main page menu;
- Added portfolio field __extra to the WebSocket API for storing custom user settings.