Important November 10: breaking changes to the WebSocket API and portfolio schedules. Learn more here

#
#
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 ability to configure the calculation schedule for indicators values separately for each day of the week has been added. In connection with this:
    • A new constructor accounting for days of the week has been added to the interval object in the C++ interface;
    • A new overloaded is_in method accounting for the day of the week has been added to the schedule object in the C++ interface.
  • 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
{
  "trading_days": 127,
  "name": "qwe",
  "decimals": 4,
  "securities": { … },
  "timetable": [ … ],
  // …
}
{
  "name": "qwe",
  "decimals": 4,
  "securities": { … },
  "timetable": [ … ],
  // …
}

At the schedule level (timetable):

Before After
{
  "begin": 36000,
  "end": 67200,
  "a_sell": 2,
  "a_buy": 2,
  "auto_close": false,
  "auto_to_market": false,
  "auto_to0": 2,
  "save_history": false
}
{
  "trading_days": 127,
  "begin": 36000,
  "end": 67200,
  "a_sell": 2,
  "a_buy": 2,
  "auto_close": false,
  "auto_to_market": false,
  "auto_to0": 2,
  "save_history": false
}

If a client read or wrote the portfolio trading_days, it must now:

  • read trading_days from each interval of the portfolio timetable instead of from the portfolio itself;
  • write trading_days into every timetable interval: the field is required (for example, Monday to Friday is 2 + 4 + 8 + 16 + 32 = 62); the allowed range is 1 to 127;
  • not send trading_days at 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 1≤trading_days≤1271 \le trading\_days \le 127 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≤wd≤60 \le wd \le 6 (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

#
#
2026-09-14

#
#
2026-08-21

#
#
2026-08-04

#
#
2026-03-05

  • The Sell/Buy and Lim_S/Lim_B fields have been added to the Finres history and Finres for today widgets. The Buy/Sell field has been renamed to Direction in both widgets.

#
#
2026-02-27

  • Changes have been made to the description of API keys for connecting to BINANCE

#
#
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

#
#
2025-10-21

  • Changes have been made to the Ctrader connection.

#
#
2025-09-26

#
#
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

#
#
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

#
#
2025-06-04

#
#
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 values Sell, Buy, Price_s, Price_b.

#
#
2025-05-29

#
#
2025-05-16

  • In the WebSocket API, the field t in objects of the trs list in portfolio_fin_res.* methods was replaced with dt.

#
#
2025-04-08

  • Added methods std::string color() and void set_color(const std::string& v) to the portfolio object in the C++ API;
  • Updated C++ API setters for std::string fields to accept arguments by reference (const std::string&).

#
#
2025-02-10

#
#
2025-02-06

#
#
2024-11-21

#
#
2024-11-01

#
#
2024-10-30

#
#
2024-10-17

#
#
2024-09-26

  • Removed set_fin_res() and set_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

#
#
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

#
#
2023-12-13

  • Removed extra() method from the portfolio object in the C++ API;
  • Removed dict_double structure from the C++ API;
  • Removed __extra field from portfolios in the WebSocket API;
  • Added methods uf0(), ..., uf19() and set_uf0(), ..., set_uf19() for "user fields" to the portfolio object in the C++ API;
  • Added user_value structure to the C++ API;
  • Added iteration over portfolio instruments in the C++ API (restart_sec_iter(), has_next_sec(), next_sec());
  • Added fields uf0, ..., uf19 to 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

#
#
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.