﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.com/css/bbeditor.css'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html">Community. StockSharp</title>
  <id>https://stocksharp.com/handlers/atom.ashx?category=community&amp;page=8</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-11T20:11:02Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=community&amp;page=8" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/topic/25577/</id>
    <title type="text">Seamless Setup: Installing Interactive Brokers IB Gateway on Linux with Easy-to-Follow Instructions</title>
    <published>2024-03-19T01:24:32Z</published>
    <updated>2024-03-19T01:24:32Z</updated>
    <author>
      <name>FMZ Quant</name>
      <uri>https://stocksharp.com/users/185552/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <category term="#trading" />
    <category term="#cryptocurrency" />
    <category term="#data" />
    <category term="#market" />
    <category term="#fmz" />
    <category term="#exchange" />
    <category term="#linux" />
    <category term="#brokers" />
    <category term="#robot" />
    <category term="#server" />
    <content type="html">FMZ platform now supports the integration of Interactive Brokers (IB). It&amp;#39;s quite simple on Windows, so we won&amp;#39;t explain how to install it here. For Linux users who generally rent servers without a graphical interface and only have SSH, the installation is more challenging. This article will explain how to install IB Gateway for quantitative trading. We usually choose to install IB Gateway instead of TWS client, because the TWS client shuts down periodically and is not suitable for quantitative trading. Here we take Debian as an example:&lt;br /&gt;&lt;br /&gt;**Step 1: Install Desktop Services and VNC**&lt;br /&gt;&lt;br /&gt;First, you need to install desktop services and a VNC server to enable remote desktop access. Here, we will use xfce and TightVNC as examples. Execute the following commands in the terminal to install:&lt;br /&gt;&lt;br /&gt;```&lt;br /&gt;sudo apt update&lt;br /&gt;sudo apt install xfce4 xfce4-goodies dbus-x11&lt;br /&gt;sudo apt install tightvncserver&lt;br /&gt;tightvncserver&lt;br /&gt;```&lt;br /&gt;Please note that the maximum length for the password during installation is 8 characters. Please set a highly secure password. The default startup port for the first session is 5901.&lt;br /&gt;&lt;br /&gt;**Step 2: Connect to VNC and Install IB Gateway**&lt;br /&gt;&lt;br /&gt;The default address is ```vnc://IP Address:5901```, you can log in by entering the password. For Windows, please download and install the VNC client yourself.&lt;br /&gt;&lt;br /&gt;Download page: &lt;a target="_blank" rel="nofollow" href="https://stocksharp.com/away/?u=AQAAAAAAAADhaXejqp7odOS7glACFvElO2CZpDJRepIcUAnNzmK2sBrdehbuKPGZUeGQMklJCppE4g0E_HskW5TSAMiV8TG0nKnV2xwuGvt3SSC1u084HA" title="https://www.interactivebrokers.com/en/trading/ibgateway-stable.php
"&gt;https://www.interactiveb...ng/ibgateway-stable.php
&lt;/a&gt;&lt;br /&gt;Please use a tool similar to wget for downloading. If you can&amp;#39;t find the corresponding version, please click on &amp;quot;Download for Other Operating Systems&amp;quot; on the page to search.&lt;br /&gt;&lt;br /&gt;```&lt;br /&gt;wget &lt;a target="_blank" rel="nofollow" href="https://stocksharp.com/away/?u=AQAAAAAAAACU5kgXWWBAAeGTg9tDIrTIFNJhPDKBc2eFflF0P1Lw4c8P9OFAq-rjQjdjUFCHzNWwW557dbm2XbVucoCPPA9PvnvpuvPIEQyJQvoYo0ux2Gn8vJ-OEqOMneDzo2wYFKpXY7dCi6qIPPqxmSPcgmM8rXUA0sWPPVAmtyMKRQyr1Q" title="https://download2.interactivebrokers.com/installers/ibgateway/stable-standalone/ibgateway-stable-standalone-linux-x64.sh
"&gt;https://download2.intera...standalone-linux-x64.sh
&lt;/a&gt;&lt;br /&gt;```&lt;br /&gt;If it&amp;#39;s inconvenient to download within VNC, you can initiate a separate SSH download and then install it under the VNC desktop environment.&lt;br /&gt;&lt;br /&gt;```&lt;br /&gt;bash ibgateway-stable-standalone-linux-x64.sh&lt;br /&gt;```&lt;br /&gt;The interface can already be displayed here, you can manually run the installation directory directly by running ```./ibgateway```.&lt;br /&gt;&lt;a href="https://stocksharp.com/file/149319
" title="https://stocksharp.com/file/149319
"&gt;https://stocksharp.com/file/149319
&lt;/a&gt;&lt;br /&gt;After installation, log in and find the API option. Make sure to uncheck &amp;quot;Read-Only API&amp;quot;. The port number is also in the settings. Please configure the exchange correctly according to this port number.&lt;br /&gt;&lt;a href="https://stocksharp.com/file/149320
" title="https://stocksharp.com/file/149320
"&gt;https://stocksharp.com/file/149320
&lt;/a&gt;&lt;br /&gt;The exchange is configured as follows: Client ID. If you have multiple robots that need to connect, this needs to be set to different IDs, as IB does not allow the same Client ID to connect simultaneously.&lt;br /&gt;&lt;a href="https://stocksharp.com/file/149321
" title="https://stocksharp.com/file/149321
"&gt;https://stocksharp.com/file/149321
&lt;/a&gt;&lt;br /&gt;It should be noted that localhost and 127.0.0.1 are not the same network address at the lower level of the Linux operating system, here we use localhost.&lt;br /&gt;&lt;br /&gt;IB&amp;#39;s market data requires a paid subscription. If you need real-time ticker and depth information, please subscribe for a fee, otherwise you can only receive delayed tickers.&lt;br /&gt;&lt;br /&gt;From: &lt;a target="_blank" rel="nofollow" href="https://stocksharp.com/away/?u=AQAAAAAAAAAezbpL9G-wNBo0jpp0vfUOQlbPNxIPafGj0KHUDS3Y66aICBE83vp0DNNhKDQ9E9Bv-TRcK_228AjVg98XAStIU06yYBwfQdX3d7Rz8ngliD_j2m39-SkbRJoy5HltqYh9HMs9tmjgkpSy_ZB9h63CQRb3JmjqX-NqnIM4acufRg" title="https://blog.mathquant.com/2023/12/04/instructions-for-installing-interactive-brokers-ib-gateway-in-linux-bash.html"&gt;https://blog.mathquant.c...teway-in-linux-bash.html&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/25573/</id>
    <title type="text">Harness the Power of FMZ Extended API: A Step-by-Step Guide to Batch Modify Bot Parameters with Ease</title>
    <published>2024-03-18T08:56:55Z</published>
    <updated>2024-03-18T08:56:55Z</updated>
    <author>
      <name>FMZ Quant</name>
      <uri>https://stocksharp.com/users/185552/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <category term="#trading" />
    <category term="#cryptocurrency" />
    <category term="#strategy" />
    <category term="#code" />
    <category term="#key" />
    <category term="#data" />
    <category term="#fmz" />
    <category term="#API" />
    <category term="#parameters" />
    <category term="#Kline" />
    <content type="html">How can I change the parameters of live tradings in batch on FMZ? When the number of live tradings exceeds dozens and reaches hundreds, it would be very inconvenient to configure live tradings one by one manually. At this time, we can use the FMZ extended API to complete these operations. So in this article, we will explore the group control of the bot, update some details of the parameters.&lt;br /&gt;&lt;br /&gt;In the previous article, we solved the problem of how to use the FMZ extended API to monitor all the live tradings, group control live tradings, and send commands to the live tradings. And we still use the interface call code we encapsulated in the previous article as a basis, continue to write code to realize the batch modification of the parameters of the live trading.&lt;br /&gt;&lt;br /&gt;Parameter settings:&lt;br /&gt;&lt;a href="https://stocksharp.com/file/149294
" title="https://stocksharp.com/file/149294
"&gt;https://stocksharp.com/file/149294
&lt;/a&gt;&lt;br /&gt;Strategy code:&lt;br /&gt;&lt;br /&gt;```&lt;br /&gt;// Global variable&lt;br /&gt;var isLogMsg = true   // Controls whether logs are printed or not&lt;br /&gt;var isDebug = false   // Debugging mode&lt;br /&gt;var arrIndexDesc = [&amp;quot;all&amp;quot;, &amp;quot;running&amp;quot;, &amp;quot;stop&amp;quot;]&lt;br /&gt;var descRobotStatusCode = [&amp;quot;Idle&amp;quot;, &amp;quot;Running&amp;quot;, &amp;quot;Stopping&amp;quot;, &amp;quot;Exited&amp;quot;, &amp;quot;Stopped&amp;quot;, &amp;quot;There is an error in the strategy&amp;quot;]&lt;br /&gt;var dicRobotStatusCode = {&lt;br /&gt;    &amp;quot;all&amp;quot; : -1,&lt;br /&gt;    &amp;quot;running&amp;quot; : 1,&lt;br /&gt;    &amp;quot;stop&amp;quot; : 4,&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Extended logging functions&lt;br /&gt;function LogControl(...args) {&lt;br /&gt;    if (isLogMsg) {&lt;br /&gt;        Log(...args)&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// FMZ extended API call functions&lt;br /&gt;function callFmzExtAPI(accessKey, secretKey, funcName, ...args) {&lt;br /&gt;    var params = {&lt;br /&gt;        &amp;quot;version&amp;quot; : &amp;quot;1.0&amp;quot;,&lt;br /&gt;        &amp;quot;access_key&amp;quot; : accessKey,&lt;br /&gt;        &amp;quot;method&amp;quot; : funcName,&lt;br /&gt;        &amp;quot;args&amp;quot; : JSON.stringify(args),&lt;br /&gt;        &amp;quot;nonce&amp;quot; : Math.floor(new Date().getTime())&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    var data = `${params[&amp;quot;version&amp;quot;]}|${params[&amp;quot;method&amp;quot;]}|${params[&amp;quot;args&amp;quot;]}|${params[&amp;quot;nonce&amp;quot;]}|${secretKey}`&lt;br /&gt;    params[&amp;quot;sign&amp;quot;] = Encode(&amp;quot;md5&amp;quot;, &amp;quot;string&amp;quot;, &amp;quot;hex&amp;quot;, data)&lt;br /&gt;    &lt;br /&gt;    var arrPairs = []&lt;br /&gt;    for (var k in params) {&lt;br /&gt;        var pair = `${k}=${params[k]}`&lt;br /&gt;        arrPairs.push(pair)&lt;br /&gt;    }&lt;br /&gt;    var query = arrPairs.join(&amp;quot;&amp;amp;&amp;quot;)&lt;br /&gt;    &lt;br /&gt;    var ret = null&lt;br /&gt;    try {&lt;br /&gt;        LogControl(&amp;quot;url:&amp;quot;, baseAPI + &amp;quot;/api/v1?&amp;quot; + query)&lt;br /&gt;        ret = JSON.parse(HttpQuery(baseAPI + &amp;quot;/api/v1?&amp;quot; + query))&lt;br /&gt;        if (isDebug) {&lt;br /&gt;            LogControl(&amp;quot;Debug:&amp;quot;, ret)&lt;br /&gt;        }&lt;br /&gt;    } catch(e) {&lt;br /&gt;        LogControl(&amp;quot;e.name:&amp;quot;, e.name, &amp;quot;e.stack:&amp;quot;, e.stack, &amp;quot;e.message:&amp;quot;, e.message)&lt;br /&gt;    }&lt;br /&gt;    Sleep(100)  // Control frequency&lt;br /&gt;    return ret &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Get information about all running bots for the specified strategy Id.&lt;br /&gt;function getAllRobotByIdAndStatus(accessKey, secretKey, strategyId, robotStatusCode, maxRetry) {&lt;br /&gt;    var retryCounter = 0&lt;br /&gt;    var length = 100&lt;br /&gt;    var offset = 0&lt;br /&gt;    var arr = []&lt;br /&gt;&lt;br /&gt;    if (typeof(maxRetry) == &amp;quot;undefined&amp;quot;) {&lt;br /&gt;        maxRetry = 10&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    while (true) {&lt;br /&gt;        if (retryCounter &amp;gt; maxRetry) {&lt;br /&gt;            LogControl(&amp;quot;Maximum number of retries exceeded&amp;quot;, maxRetry)&lt;br /&gt;            return null&lt;br /&gt;        }&lt;br /&gt;        var ret = callFmzExtAPI(accessKey, secretKey, &amp;quot;GetRobotList&amp;quot;, offset, length, robotStatusCode)&lt;br /&gt;        if (!ret || ret[&amp;quot;code&amp;quot;] != 0) {&lt;br /&gt;            Sleep(1000)&lt;br /&gt;            retryCounter++&lt;br /&gt;            continue&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        var robots = ret[&amp;quot;data&amp;quot;][&amp;quot;result&amp;quot;][&amp;quot;robots&amp;quot;]&lt;br /&gt;        for (var i in robots) {&lt;br /&gt;            if (robots[i].strategy_id != strategyId) {&lt;br /&gt;                continue&lt;br /&gt;            }&lt;br /&gt;            arr.push(robots[i])&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        if (robots.length &amp;lt; length) {&lt;br /&gt;            break&lt;br /&gt;        }&lt;br /&gt;        offset += length&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    return arr &lt;br /&gt;}&lt;br /&gt;```&lt;br /&gt;### Get to Know the RestartRobot Function of the FMZ Extended API First&lt;br /&gt;When we need to batch modify the parameters of the live trading and then run it, there are 2 cases for this scenario to begin with.&lt;br /&gt;&lt;br /&gt;- 1. Bot has been created&lt;br /&gt;For a live trading that has already been created, it is natural to restart it using the RestartRobot function, which is an extended API interface to FMZ.&lt;br /&gt;- 2. Bot has not been created&lt;br /&gt;For the live trading has not been created, there is no need to &amp;quot;modify&amp;quot; the parameters of the live trading, that&amp;#39;s the batch creation of the live trading to run, and we use FMZ extended API interface - NewRobot function.&lt;br /&gt;&lt;br /&gt;But no matter what kind of method, the next idea as well as the operation are similar, so we will use the ```RestartRobot``` extended API function as an example to explain.&lt;br /&gt;&lt;br /&gt;RestartRobot function is used in two ways:&lt;br /&gt;&lt;br /&gt;- 1. Configuration with only live trading ID passed in, not the parameters of live trading&lt;br /&gt;This approach keeps the parameter configuration unchanged when the live trading stopped, and restarts the live trading only.&lt;br /&gt;- 2. Configuration with live trading ID and the parameters of live trading passed in&lt;br /&gt;This approach starts the live trading running with the new parameter configuration.&lt;br /&gt;&lt;br /&gt;The first approach is not useful for our demand scenario, because our own demand is to modify a large number of parameters of the live trading in bulk. So the question is, the configuration of the parameters of the live trading is very complex, there are exchange object configuration, strategy parameter configuration, K-line period settings and so on.&lt;br /&gt;&lt;br /&gt;Do not worry, let&amp;#39;s explore them one by one.&lt;br /&gt;&lt;br /&gt;### Get the Information of the Live Trading You Want to Operate&lt;br /&gt;On FMZ, if you want to modify the parameter configuration of a live trading, then it must be non-running. Because only a live trading that is not running can have its parameter configuration modified. A live trading that is not in the running state may be in:&lt;br /&gt;&lt;br /&gt;- The strategy stopped.&lt;br /&gt;- Strategy has errors, stopped.&lt;br /&gt;&lt;br /&gt;So we need to get the live tradings for the specified strategy first, and these live tradings are in a **stopped state** or **have an error to stop**.&lt;br /&gt;&lt;br /&gt;```&lt;br /&gt;function main() {&lt;br /&gt;    var stopRobotList = getAllRobotByIdAndStatus(accessKey, secretKey, strategyId, 4)&lt;br /&gt;    var errorRobotList = getAllRobotByIdAndStatus(accessKey, secretKey, strategyId, 5)&lt;br /&gt;    var robotList = stopRobotList.concat(errorRobotList)&lt;br /&gt;}&lt;br /&gt;```&lt;br /&gt;This gives us all the information about the live trading that we need to change the configuration of, next we will get the detailed configuration of the live trading.&lt;br /&gt;&lt;br /&gt;### Modification of Live Trading Configuration Parameters&lt;br /&gt;For example, the live trading strategy for which we need to modify the parameters is as follows (i.e., the strategy whose strategy ID is the strategyId variable):&lt;br /&gt;&lt;a href="https://stocksharp.com/file/149295
" title="https://stocksharp.com/file/149295
"&gt;https://stocksharp.com/file/149295
&lt;/a&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/file/149296
" title="https://stocksharp.com/file/149296
"&gt;https://stocksharp.com/file/149296
&lt;/a&gt;&lt;br /&gt;The strategy has 3 parameters as a test.&lt;br /&gt;&lt;br /&gt;Modify the strategy parameters for the live trading, but maybe we don&amp;#39;t want to modify the strategy&amp;#39;s exchange configuration, but for the Extended API interface RestartRobot function, either no parameters are specified (as is just start the live trading) or all parameter configurations must be specified.&lt;br /&gt;&lt;br /&gt;That is to say, before we use the RestartRobot function to start the live trading, we must use the extended API interface GetRobotDetail function to get the current configuration of the live trading first, and then we replace the part of the parameters that need to be modified, to re-construct the configuration parameters for the start of the live trading (i.e., the parameters that will be used to call RestartRobot), and then restart the live trading.&lt;br /&gt;&lt;br /&gt;So, next we traverse robotList, and get the current parameter configuration one by one, the ```/**/``` commented part of the following code is the live trading details, we need to deal with these data.&lt;br /&gt;&lt;br /&gt;```&lt;br /&gt;function main() {&lt;br /&gt;    var stopRobotList = getAllRobotByIdAndStatus(accessKey, secretKey, strategyId, 4)&lt;br /&gt;    var errorRobotList = getAllRobotByIdAndStatus(accessKey, secretKey, strategyId, 5)&lt;br /&gt;&lt;br /&gt;    var robotList = stopRobotList.concat(errorRobotList)&lt;br /&gt;    _.each(robotList, function(robotInfo) {&lt;br /&gt;        var robotDetail = callFmzExtAPI(accessKey, secretKey, &amp;quot;GetRobotDetail&amp;quot;, robotInfo.id)&lt;br /&gt;        &lt;br /&gt;        /*&lt;br /&gt;        {&lt;br /&gt;            &amp;quot;code&amp;quot;: 0,&lt;br /&gt;            &amp;quot;data&amp;quot;: {&lt;br /&gt;                &amp;quot;result&amp;quot;: {&lt;br /&gt;                    &amp;quot;robot&amp;quot;: {&lt;br /&gt;                        ...&lt;br /&gt;                        &amp;quot;id&amp;quot;: 130350,&lt;br /&gt;                        ...&lt;br /&gt;                        &amp;quot;name&amp;quot;: &amp;quot;Test 1B&amp;quot;,&lt;br /&gt;                        &amp;quot;node_id&amp;quot;: 3022561,&lt;br /&gt;                        ...&lt;br /&gt;                        &amp;quot;robot_args&amp;quot;: &amp;quot;[[\&amp;quot;pairs\&amp;quot;,\&amp;quot;BTC_USDT,ETH_USDT,EOS_USDT,LTC_USDT\&amp;quot;],[\&amp;quot;col\&amp;quot;,3],[\&amp;quot;htight\&amp;quot;,300]]&amp;quot;,&lt;br /&gt;                        &amp;quot;start_time&amp;quot;: &amp;quot;2023-11-19 21:16:12&amp;quot;,&lt;br /&gt;                        &amp;quot;status&amp;quot;: 5,&lt;br /&gt;                        &amp;quot;strategy_args&amp;quot;: &amp;quot;[[\&amp;quot;pairs\&amp;quot;,\&amp;quot;Currency list\&amp;quot;,\&amp;quot;English comma spacing\&amp;quot;,\&amp;quot;BTC_USDT,ETH_USDT,EOS_USDT,LTC_USDT\&amp;quot;],[\&amp;quot;col\&amp;quot;,\&amp;quot;breadth\&amp;quot;,\&amp;quot;Total width of the page is 12\&amp;quot;,6],[\&amp;quot;htight\&amp;quot;,\&amp;quot;height\&amp;quot;,\&amp;quot;unit px\&amp;quot;,600],[\&amp;quot;$$$__cmd__$$$coverSymbol\&amp;quot;,\&amp;quot;close the position\&amp;quot;,\&amp;quot;close out trading pairs\&amp;quot;,\&amp;quot;\&amp;quot;]]&amp;quot;,&lt;br /&gt;                        &amp;quot;strategy_exchange_pairs&amp;quot;: &amp;quot;[3600,[186193],[\&amp;quot;BTC_USD\&amp;quot;]]&amp;quot;,&lt;br /&gt;                        &amp;quot;strategy_id&amp;quot;: 131242,&lt;br /&gt;                        &amp;quot;strategy_last_modified&amp;quot;: &amp;quot;2023-12-09 23:14:33&amp;quot;,&lt;br /&gt;                        &amp;quot;strategy_name&amp;quot;: &amp;quot;Test 1&amp;quot;,&lt;br /&gt;                        ...&lt;br /&gt;                    }&lt;br /&gt;                },&lt;br /&gt;                &amp;quot;error&amp;quot;: null&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;        */&lt;br /&gt;&lt;br /&gt;        // Parse the exchange configuration data&lt;br /&gt;        var exchangePairs = JSON.parse(robotDetail.data.result.robot.strategy_exchange_pairs)&lt;br /&gt;&lt;br /&gt;        // Get the exchange object index, trading pairs, these settings are not going to be changed&lt;br /&gt;        var arrExId = exchangePairs[1]&lt;br /&gt;        var arrSymbol = exchangePairs[2]&lt;br /&gt;&lt;br /&gt;        // Parse parameter configuration data&lt;br /&gt;        var params = JSON.parse(robotDetail.data.result.robot.robot_args)&lt;br /&gt;&lt;br /&gt;        // Update parameters&lt;br /&gt;        var dicParams = {&lt;br /&gt;            &amp;quot;pairs&amp;quot; : &amp;quot;AAA_BBB,CCC_DDD&amp;quot;,&lt;br /&gt;            &amp;quot;col&amp;quot; : &amp;quot;999&amp;quot;,&lt;br /&gt;            &amp;quot;htight&amp;quot; : &amp;quot;666&amp;quot;&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        var newParams = []&lt;br /&gt;        _.each(params, function(param) {&lt;br /&gt;            for (var k in dicParams) {&lt;br /&gt;                if (param[0] == k) {&lt;br /&gt;                    newParams.push([k, dicParams[k]])  // Construct the strategy parameters and update the new parameter values&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        })&lt;br /&gt;        &lt;br /&gt;        // Note that if there are spaces in the data you need to transcode it, otherwise the request will report an error&lt;br /&gt;        settings = {&lt;br /&gt;            &amp;quot;name&amp;quot;: robotDetail.data.result.robot.name,&lt;br /&gt;            // Strategy parameter&lt;br /&gt;            &amp;quot;args&amp;quot;: newParams,         &lt;br /&gt;            // The strategy ID can be obtained by the GetStrategyList method.&lt;br /&gt;            &amp;quot;strategy&amp;quot;: robotDetail.data.result.robot.strategy_id,&lt;br /&gt;            // K-period parameter, 60 means 60 seconds&lt;br /&gt;            &amp;quot;period&amp;quot;: exchangePairs[0],&lt;br /&gt;            // Specifies which docker to run on; not writing this attribute means automatically assigning the run&lt;br /&gt;            &amp;quot;node&amp;quot; : robotDetail.data.result.robot.node_id,&lt;br /&gt;            &amp;quot;exchanges&amp;quot;: []&lt;br /&gt;        }&lt;br /&gt;                                &lt;br /&gt;        for (var i = 0 ; i &amp;lt; arrExId.length ; i++) {&lt;br /&gt;            settings[&amp;quot;exchanges&amp;quot;].push({&amp;quot;pid&amp;quot;: arrExId[i], &amp;quot;pair&amp;quot;: arrSymbol[i]})&lt;br /&gt;        }&lt;br /&gt;        Log(settings) // Test&lt;br /&gt;        var retRestart = callFmzExtAPI(accessKey, secretKey, &amp;quot;RestartRobot&amp;quot;, robotInfo.id, settings)&lt;br /&gt;        Log(&amp;quot;retRestart:&amp;quot;, retRestart)&lt;br /&gt;    })&lt;br /&gt;}&lt;br /&gt;```&lt;br /&gt;After running the batch parameter modification strategy, my live trading:&lt;br /&gt;&lt;br /&gt;- Test 1A&lt;br /&gt;- Test 1B&lt;br /&gt;&lt;br /&gt;Batch modification of parameters was done with the configured exchange objects, trading pairs and K-line periods unchanged:&lt;br /&gt;&lt;br /&gt;It was changed on the live trading page automatically:&lt;br /&gt;&lt;a href="https://stocksharp.com/file/149297
" title="https://stocksharp.com/file/149297
"&gt;https://stocksharp.com/file/149297
&lt;/a&gt;&lt;br /&gt;And start running. Because we specified the modified parameters in the code above:&lt;br /&gt;&lt;br /&gt;```&lt;br /&gt;        // Update parameters&lt;br /&gt;        var dicParams = {&lt;br /&gt;            &amp;quot;pairs&amp;quot; : &amp;quot;AAA_BBB,CCC_DDD&amp;quot;,&lt;br /&gt;            &amp;quot;col&amp;quot; : &amp;quot;999&amp;quot;,&lt;br /&gt;            &amp;quot;htight&amp;quot; : &amp;quot;666&amp;quot;&lt;br /&gt;        }&lt;br /&gt;```&lt;br /&gt;### END&lt;br /&gt;For dozens, hundreds of live trading batch modify parameters, this method is more convenient. In the example, the parameters are modified to a uniform, of course you can customize your own modification rules in the code to specify different parameter configurations for each live trading. Or specify different exchange objects, trading pairs and so on.&lt;br /&gt;&lt;br /&gt;For the FMZ platform, these requirements are flexible and customizable to achieve. Feel free to leave a comment if you have any requirement ideas, we can discuss, research and learn from each other , and find the solution to the problem.&lt;br /&gt;&lt;br /&gt;From: &lt;a target="_blank" rel="nofollow" href="https://stocksharp.com/away/?u=AQAAAAAAAAAezbpL9G-wNBo0jpp0vfUOQlbPNxIPafGj0KHUDS3Y61uCdRjWUjTNbtm92rvOKC9BxFOeM6rvv0o6aDWUN6x-a6TC71ZsaT_piJ5LyAyK_UtNcg69NV0oCDRWY2yJbcHAzDTrfCJSfNucrTdJuclshosoM9qkhyZGsq2B6wRR1A" title="https://blog.mathquant.com/2023/12/11/teach-you-to-use-the-fmz-extended-api-to-batch-modify-parameters-of-the-bot.html"&gt;https://blog.mathquant.c...rameters-of-the-bot.html&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/25572/</id>
    <title type="text">Unlocking the Secrets of Perpetual Contract Grid Strategy Parameter Optimization with Python Backtesting</title>
    <published>2024-03-18T05:23:38Z</published>
    <updated>2024-03-18T05:23:38Z</updated>
    <author>
      <name>FMZ Quant</name>
      <uri>https://stocksharp.com/users/185552/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <category term="#trading" />
    <category term="#cryptocurrency" />
    <category term="#strategy" />
    <category term="#code" />
    <category term="#fmz" />
    <category term="#contract" />
    <category term="#grid" />
    <category term="#parameter" />
    <category term="#DYDX" />
    <category term="#risk" />
    <content type="html">The perpetual grid strategy is a popular classic strategy on FMZ platform. Compared with the spot grid, there is no need to have currencies, and leverage can be added, which is much more convenient than the spot grid. However, since it is not possible to backtest on the FMZ Quant Platform directly, it is not conducive to screening currencies and determining parameter optimization. In this article, we will introduce the complete Python backtesting process, including data collection, backtesting framework, backtesting functions, parameter optimization, etc. You can try it yourself in juypter notebook.&lt;br /&gt;&lt;br /&gt;### Data Collection&lt;br /&gt;Generally, it is enough to use K-line data. For accuracy, the smaller the K-line period, the better. However, to balance the backtest time and data volume, in this article, we use 5min of data from the past two years for backtesting. The final data volume exceeded 200,000 lines. We choose DYDX as the currency. Of course, the specific currency and K-line period can be selected according to your own interests.&lt;br /&gt;&lt;br /&gt;```&lt;br /&gt;import requests&lt;br /&gt;from datetime import date,datetime&lt;br /&gt;import time&lt;br /&gt;import pandas as pd&lt;br /&gt;import numpy as np&lt;br /&gt;import matplotlib.pyplot as plt&lt;br /&gt;import requests, zipfile, io&lt;br /&gt;%matplotlib inline&lt;br /&gt;&lt;br /&gt;def GetKlines(symbol=&amp;#39;BTC&amp;#39;,start=&amp;#39;2020-8-10&amp;#39;,end=&amp;#39;2021-8-10&amp;#39;,period=&amp;#39;1h&amp;#39;):&lt;br /&gt;    Klines = []&lt;br /&gt;    start_time = int(time.mktime(datetime.strptime(start, &amp;quot;%Y-%m-%d&amp;quot;).timetuple()))*1000&lt;br /&gt;    end_time = int(time.mktime(datetime.strptime(end, &amp;quot;%Y-%m-%d&amp;quot;).timetuple()))*1000&lt;br /&gt;    while start_time &amp;lt; end_time:&lt;br /&gt;        res = requests.get(&amp;#39;https://fapi.binance.com/fapi/v1/klines?symbol=%sUSDT&amp;amp;interval=%s&amp;amp;startTime=%s&amp;amp;limit=1000&amp;#39;%(symbol,period,start_time))&lt;br /&gt;        res_list = res.json()&lt;br /&gt;        Klines += res_list&lt;br /&gt;        start_time = res_list[-1][0]&lt;br /&gt;    return pd.DataFrame(Klines,columns=[&amp;#39;time&amp;#39;,&amp;#39;open&amp;#39;,&amp;#39;high&amp;#39;,&amp;#39;low&amp;#39;,&amp;#39;close&amp;#39;,&amp;#39;amount&amp;#39;,&amp;#39;end_time&amp;#39;,&amp;#39;volume&amp;#39;,&amp;#39;count&amp;#39;,&amp;#39;buy_amount&amp;#39;,&amp;#39;buy_volume&amp;#39;,&amp;#39;null&amp;#39;]).astype(&amp;#39;float&amp;#39;)&lt;br /&gt;&lt;br /&gt;df = GetKlines(symbol=&amp;#39;DYDX&amp;#39;,start=&amp;#39;2022-1-1&amp;#39;,end=&amp;#39;2023-12-7&amp;#39;,period=&amp;#39;5m&amp;#39;)&lt;br /&gt;df = df.drop_duplicates()&lt;br /&gt;```&lt;br /&gt;### Backtesting Framework&lt;br /&gt;For backtesting, we continue to choose the commonly used framework that supports USDT perpetual contracts in multiple currencies, which is simple and easy to use.&lt;br /&gt;&lt;br /&gt;```&lt;br /&gt;class Exchange:&lt;br /&gt;    &lt;br /&gt;    def __init__(self, trade_symbols, fee=0.0004, initial_balance=10000):&lt;br /&gt;        self.initial_balance = initial_balance #Initial assets&lt;br /&gt;        self.fee = fee&lt;br /&gt;        self.trade_symbols = trade_symbols&lt;br /&gt;        self.account = {&amp;#39;USDT&amp;#39;:{&amp;#39;realised_profit&amp;#39;:0, &amp;#39;unrealised_profit&amp;#39;:0, &amp;#39;total&amp;#39;:initial_balance, &amp;#39;fee&amp;#39;:0}}&lt;br /&gt;        for symbol in trade_symbols:&lt;br /&gt;            self.account[symbol] = {&amp;#39;amount&amp;#39;:0, &amp;#39;hold_price&amp;#39;:0, &amp;#39;value&amp;#39;:0, &amp;#39;price&amp;#39;:0, &amp;#39;realised_profit&amp;#39;:0,&amp;#39;unrealised_profit&amp;#39;:0,&amp;#39;fee&amp;#39;:0}&lt;br /&gt;            &lt;br /&gt;    def Trade(self, symbol, direction, price, amount):&lt;br /&gt;        &lt;br /&gt;        cover_amount = 0 if direction*self.account[symbol][&amp;#39;amount&amp;#39;] &amp;gt;=0 else min(abs(self.account[symbol][&amp;#39;amount&amp;#39;]), amount)&lt;br /&gt;        open_amount = amount - cover_amount&lt;br /&gt;        self.account[&amp;#39;USDT&amp;#39;][&amp;#39;realised_profit&amp;#39;] -= price*amount*self.fee #Deduction of handling fee&lt;br /&gt;        self.account[&amp;#39;USDT&amp;#39;][&amp;#39;fee&amp;#39;] += price*amount*self.fee&lt;br /&gt;        self.account[symbol][&amp;#39;fee&amp;#39;] += price*amount*self.fee&lt;br /&gt;&lt;br /&gt;        if cover_amount &amp;gt; 0: #Close the position first.&lt;br /&gt;            self.account[&amp;#39;USDT&amp;#39;][&amp;#39;realised_profit&amp;#39;] += -direction*(price - self.account[symbol][&amp;#39;hold_price&amp;#39;])*cover_amount  #Profits&lt;br /&gt;            self.account[symbol][&amp;#39;realised_profit&amp;#39;] += -direction*(price - self.account[symbol][&amp;#39;hold_price&amp;#39;])*cover_amount&lt;br /&gt;            &lt;br /&gt;            self.account[symbol][&amp;#39;amount&amp;#39;] -= -direction*cover_amount&lt;br /&gt;            self.account[symbol][&amp;#39;hold_price&amp;#39;] = 0 if self.account[symbol][&amp;#39;amount&amp;#39;] == 0 else self.account[symbol][&amp;#39;hold_price&amp;#39;]&lt;br /&gt;            &lt;br /&gt;        if open_amount &amp;gt; 0:&lt;br /&gt;            total_cost = self.account[symbol][&amp;#39;hold_price&amp;#39;]*direction*self.account[symbol][&amp;#39;amount&amp;#39;] + price*open_amount&lt;br /&gt;            total_amount = direction*self.account[symbol][&amp;#39;amount&amp;#39;]+open_amount&lt;br /&gt;            &lt;br /&gt;            self.account[symbol][&amp;#39;hold_price&amp;#39;] = total_cost/total_amount&lt;br /&gt;            self.account[symbol][&amp;#39;amount&amp;#39;] += direction*open_amount&lt;br /&gt;                    &lt;br /&gt;    &lt;br /&gt;    def Buy(self, symbol, price, amount):&lt;br /&gt;        self.Trade(symbol, 1, price, amount)&lt;br /&gt;        &lt;br /&gt;    def Sell(self, symbol, price, amount):&lt;br /&gt;        self.Trade(symbol, -1, price, amount)&lt;br /&gt;        &lt;br /&gt;    def Update(self, close_price): #Updating of assets&lt;br /&gt;        self.account[&amp;#39;USDT&amp;#39;][&amp;#39;unrealised_profit&amp;#39;] = 0&lt;br /&gt;        for symbol in self.trade_symbols:&lt;br /&gt;            self.account[symbol][&amp;#39;unrealised_profit&amp;#39;] = (close_price[symbol] - self.account[symbol][&amp;#39;hold_price&amp;#39;])*self.account[symbol][&amp;#39;amount&amp;#39;]&lt;br /&gt;            self.account[symbol][&amp;#39;price&amp;#39;] = close_price[symbol]&lt;br /&gt;            self.account[symbol][&amp;#39;value&amp;#39;] = abs(self.account[symbol][&amp;#39;amount&amp;#39;])*close_price[symbol]&lt;br /&gt;            self.account[&amp;#39;USDT&amp;#39;][&amp;#39;unrealised_profit&amp;#39;] += self.account[symbol][&amp;#39;unrealised_profit&amp;#39;]&lt;br /&gt;        self.account[&amp;#39;USDT&amp;#39;][&amp;#39;total&amp;#39;] = round(self.account[&amp;#39;USDT&amp;#39;][&amp;#39;realised_profit&amp;#39;] + self.initial_balance + self.account[&amp;#39;USDT&amp;#39;][&amp;#39;unrealised_profit&amp;#39;],6)&lt;br /&gt;```&lt;br /&gt;### Grid Backtest Function&lt;br /&gt;The principle of the grid strategy is very simple. Sell when the price rises and buy when the price falls. It specifically involves three parameters: initial price, grid spacing, and trading value. The market of DYDX fluctuates greatly. It fell from the initial low of 8.6U to 1U, and then rose back to 3U in the recent bull market. The default initial price of the strategy is 8.6U, which is very unfavorable for the grid strategy, but the default parameters backtested a total profit of 9200U was made in two years, and a loss of 7500U was made during the period.&lt;br /&gt;&lt;a href="https://stocksharp.com/file/149291
" title="https://stocksharp.com/file/149291
"&gt;https://stocksharp.com/file/149291
&lt;/a&gt;&lt;br /&gt;```&lt;br /&gt;symbol = &amp;#39;DYDX&amp;#39;&lt;br /&gt;value = 100&lt;br /&gt;pct = 0.01&lt;br /&gt;&lt;br /&gt;def Grid(fee=0.0002, value=100, pct=0.01, init = df.close[0]):&lt;br /&gt;    e = Exchange([symbol], fee=0.0002, initial_balance=10000)&lt;br /&gt;    init_price = init&lt;br /&gt;    res_list = [] #For storing intermediate results&lt;br /&gt;    for row in df.iterrows():&lt;br /&gt;        kline = row[1] #To backtest a K-line will only generate one buy order or one sell order, which is not particularly accurate.&lt;br /&gt;        buy_price = (value / pct - value) / ((value / pct) / init_price + e.account[symbol][&amp;#39;amount&amp;#39;]) #The buy order price, as it is a pending order transaction, is also the final aggregated price&lt;br /&gt;        sell_price = (value / pct + value) / ((value / pct) / init_price + e.account[symbol][&amp;#39;amount&amp;#39;])&lt;br /&gt;        if kline.low &amp;lt; buy_price: #The lowest price of the K-line is lower than the current pending order price, the buy order is filled&lt;br /&gt;            e.Buy(symbol,buy_price,value/buy_price)&lt;br /&gt;        if kline.high &amp;gt; sell_price:&lt;br /&gt;            e.Sell(symbol,sell_price,value/sell_price)&lt;br /&gt;        e.Update({symbol:kline.close})&lt;br /&gt;        res_list.append([kline.time, kline.close, e.account[symbol][&amp;#39;amount&amp;#39;], e.account[&amp;#39;USDT&amp;#39;][&amp;#39;total&amp;#39;]-e.initial_balance,e.account[&amp;#39;USDT&amp;#39;][&amp;#39;fee&amp;#39;] ])&lt;br /&gt;    res = pd.DataFrame(data=res_list, columns=[&amp;#39;time&amp;#39;,&amp;#39;price&amp;#39;,&amp;#39;amount&amp;#39;,&amp;#39;profit&amp;#39;, &amp;#39;fee&amp;#39;])&lt;br /&gt;    res.index = pd.to_datetime(res.time,unit=&amp;#39;ms&amp;#39;)&lt;br /&gt;    return res&lt;br /&gt;```&lt;br /&gt;&lt;a href="https://stocksharp.com/file/149292
" title="https://stocksharp.com/file/149292
"&gt;https://stocksharp.com/file/149292
&lt;/a&gt;&lt;br /&gt;### Initial Price Impact&lt;br /&gt;The setting of the initial price affects the initial position of the strategy. The default initial price for the backtest just now is the initial price at startup, that is, no position is held at startup. And we know that the grid strategy will realize all profits when the price returns to the initial stage, so if the strategy can correctly predict the future market when it is launched, the income will be significantly improved. Here, we set the initial price to 3U and then backtest. In the end, the maximum drawdown was 9200U, and the final profit was 13372U. The final strategy does not hold positions. The profit is all the fluctuation profits, and the difference between the profits of the default parameters is the position loss caused by inaccurate judgment of the final price.&lt;br /&gt;&lt;br /&gt;However, if the initial price is set to 3U, the strategy will go short at the beginning and hold a large number of short positions. In this example, a short order of 17,000 U is directly held, so it faces greater risks.&lt;br /&gt;&lt;a href="https://stocksharp.com/file/149293
" title="https://stocksharp.com/file/149293
"&gt;https://stocksharp.com/file/149293
&lt;/a&gt;&lt;br /&gt;### Grid Spacing Settings&lt;br /&gt;The grid spacing determines the distance between pending orders. Obviously, the smaller the spacing, the more frequent the transactions, the lower the profit of a single transaction, and the higher the handling fee. However, it is worth noting that as the grid spacing becomes smaller and the grid value remains unchanged, when the price changes, the total positions will increase, and the risks faced are completely different. Therefore, to backtest the effect of grid spacing, it is necessary to convert the grid value.&lt;br /&gt;&lt;br /&gt;Since the backtest uses 5m K-line data, and each K-line is only traded once, which is obviously unrealistic, especially since the volatility of digital currencies is very high. A smaller spacing will miss many transactions in backtesting compared with the live trading. Only a larger spacing will have reference value. In this backtesting mechanism, the conclusions drawn are not accurate. Through tick-level order flow data backtesting, the optimal grid spacing should be 0.005-0.01.&lt;br /&gt;&lt;br /&gt;```&lt;br /&gt;for p in [0.0005, 0.001 ,0.002 ,0.005, 0.01, 0.02, 0.05]:&lt;br /&gt;    res = Grid( fee=0.0002, value=value*p/0.01, pct=p, init =3)&lt;br /&gt;    print(p, round(min(res[&amp;#39;profit&amp;#39;]),0), round(res[&amp;#39;profit&amp;#39;][-1],0), round(res[&amp;#39;fee&amp;#39;][-1],0))&lt;br /&gt;    &lt;br /&gt;0.0005 -8378.0 144.0 237.0&lt;br /&gt;0.001 -9323.0 1031.0 465.0&lt;br /&gt;0.002 -9306.0 3606.0 738.0&lt;br /&gt;0.005 -9267.0 9457.0 781.0&lt;br /&gt;0.01 -9228.0 13375.0 550.0&lt;br /&gt;0.02 -9183.0 15212.0 309.0&lt;br /&gt;0.05 -9037.0 16263.0 131.0&lt;br /&gt;```&lt;br /&gt;### Grid Transaction Value&lt;br /&gt;As mentioned before, when the fluctuations are the same, the greater the value of the holding, the risk is proportional. However, as long as there is no rapid decline, 1% of the total funds and 1% of the grid spacing should be able to cope with most market conditions. In this DYDX example, a drop of almost 90% also triggered a liquidation. However, it should be noted that DYDX mainly falls. When the grid strategy goes long when it falls, it will fall by 100% at most, while there is no limit on the rise, and the risk is much higher. Therefore, Grid Strategy recommends users to choose only the long position mode for currencies they believe have potential.&lt;br /&gt;&lt;br /&gt;From: &lt;a target="_blank" rel="nofollow" href="https://stocksharp.com/away/?u=AQAAAAAAAAAezbpL9G-wNBo0jpp0vfUOQlbPNxIPafGj0KHUDS3Y6-pZvlamVNemG-BHT3hNGA8yhxHJ0ma5MTkxgWOTi7w44vQNGgQq1Th2F6NH16o_UhXJ02URaiN-8M4TuDWzs0KQXROsnsDeNXfYgQOYxa_V1Xl_G4p9VUu-PYiToPP-Ew" title="https://blog.mathquant.com/2023/12/11/detailed-explanation-of-perpetual-contract-grid-strategy-parameter-optimization.html"&gt;https://blog.mathquant.c...ameter-optimization.html&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/25571/</id>
    <title type="text">How to Exploit Brainless Selling Bots with a High-Frequency Strategy in 80 Lines of Code</title>
    <published>2024-03-18T01:37:44Z</published>
    <updated>2024-03-18T01:37:44Z</updated>
    <author>
      <name>FMZ Quant</name>
      <uri>https://stocksharp.com/users/185552/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <category term="#trading" />
    <category term="#cryptocurrency" />
    <category term="#strategy" />
    <category term="#code" />
    <category term="#market" />
    <category term="#fmz" />
    <category term="#bots" />
    <category term="#highfrequency" />
    <category term="#spot" />
    <category term="#orders" />
    <content type="html"># How to Exploit Brainless Selling Bots with a High-Frequency Strategy in 80 Lines of Code&lt;br /&gt;&lt;br /&gt;### Opportunity Observation&lt;br /&gt;Recently, I found that Binance has a currency STORJ market is very strange unintentionally when I was watching the market, the trading volume is very large, and the trading frequency is very fast, the specific one-minute K-line of the following chart, we can see that the trading volume of each minute are consistent, and the minute K-line can be seen in a long lower shadow line.&lt;br /&gt;&lt;a href="https://stocksharp.com/file/149286
" title="https://stocksharp.com/file/149286
"&gt;https://stocksharp.com/file/149286
&lt;/a&gt;&lt;br /&gt;Observe with Binance 1-second K-line, I found out the end of the story, someone is marketed 10,000-20,000 STORJs every 5-7s, regardless of the cost, and smashing a small hole in the K-line directly, while the price recovers in the short term. This operation was obviously caused by a robot on an iceberg commission. This selling operation lasted for a very long time, totaling an estimated $10 million level, and in many cases caused slippage of up to 0.1%, which means that the executor of this strategy lost tens of thousands of dollars in slippage on the trade only. But with such a mechanical operation and active trading, there was a clear opportunity for market making scalping.&lt;br /&gt;&lt;a href="https://stocksharp.com/file/149288
" title="https://stocksharp.com/file/149288
"&gt;https://stocksharp.com/file/149288
&lt;/a&gt;&lt;br /&gt;A simple change to the original spot HF strategy, and in a few minutes I got this bot that specializes in exploiting this brainless sale of iceberg commissions.&lt;br /&gt;&lt;br /&gt;### Strategy Idea&lt;br /&gt;Since the market sells in market price every few seconds, we just need to find the 10k depth in the buy order book and hang the order in front of it. So that when the iceberg sells, a high probability that the market-making robot just can receive, and at this time the transaction is very active, the momentary price decline also triggered some buy orders. By the same token, hanging sell orders can be thrown in the trend, so repeated operations. The frequency of transactions is very high, even if each time the yield is not large, the total return is also quite substantial. Of course, the premise of everything is to have a low-fee account, if the buying and selling fees both are 0.1%, then the space is not enough to pay the fees.&lt;br /&gt;&lt;br /&gt;### Strategy Performance&lt;br /&gt;The strategy is performing as follows, at first, none of the profits were printing, so I changed it this afternoon, and print out the profits, the crazy selling robots have changed the volume to about 5000 at a time, so it&amp;#39;s past the optimal time for arbitrage. I&amp;#39;m probably making 100-200U per hour at first, the key is risk free and low cost. On the flip side, the iceberg commission actually has a lot of skills, if you know how to write a strategy, you can spend ten minutes on FMZ to write the iceberg commission strategy that observes the depth of the buy order to decide the size and price of the order, observes the size of the active buy order to adjust the size of the pending order and take up the market monitoring and other characteristics, saving tens of thousands of dollars easily.&lt;br /&gt;&lt;a href="https://stocksharp.com/file/149289
" title="https://stocksharp.com/file/149289
"&gt;https://stocksharp.com/file/149289
&lt;/a&gt;&lt;br /&gt;### Strategy Source Code&lt;br /&gt;The strategy code is very simple, only 80 lines, which is suitable for beginners, here are some of the parameters such as order precision and so on written fixed in the program, you can change the parameters as follows. It is recommended to save it, in case of any exchange trading pairs or the traders are out of control, you can fell free to charge them some interest at any time.&lt;br /&gt;&lt;a href="https://stocksharp.com/file/149290
" title="https://stocksharp.com/file/149290
"&gt;https://stocksharp.com/file/149290
&lt;/a&gt;&lt;br /&gt;```&lt;br /&gt;function CancelPendingOrders() {&lt;br /&gt;    var orders = _C(exchange.GetOrders)&lt;br /&gt;    for (var j = 0; j &amp;lt; orders.length; j++) {&lt;br /&gt;        exchange.CancelOrder(orders[j].Id, orders[j])&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function onexit(){&lt;br /&gt;    CancelPendingOrders()&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function GetPrice(Type, Depth) {&lt;br /&gt;    var sumAmount = 0&lt;br /&gt;    var checkAmount = Type == &amp;quot;Buy&amp;quot; ? CheckBuyAmount : CheckSellAmount&lt;br /&gt;    var deep = Type == &amp;quot;Buy&amp;quot; ? Depth.Bids : Depth.Asks&lt;br /&gt;    for(var i = 0; i &amp;lt; Math.min(20, deep.length); i++) {&lt;br /&gt;        if(Type == &amp;quot;Buy&amp;quot;  &amp;amp;&amp;amp; deep[i].Price == lastBuyPrice &amp;amp;&amp;amp; buyId){&lt;br /&gt;            sumAmount += deep[i].Amount - amountBuy //Subtract your own pending orders here&lt;br /&gt;        }else if(Type == &amp;quot;Sell&amp;quot;  &amp;amp;&amp;amp; deep[i].Price == lastSellPrice &amp;amp;&amp;amp; sellId){&lt;br /&gt;            sumAmount += deep[i].Amount - amountSell&lt;br /&gt;        }else{&lt;br /&gt;            sumAmount += deep[i].Amount&lt;br /&gt;        }&lt;br /&gt;        if(sumAmount &amp;gt;= checkAmount){&lt;br /&gt;            return deep[i].Price&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    return deep[19].Price&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;function OnTick() {&lt;br /&gt;    var depth = _C(exchange.GetDepth)&lt;br /&gt;    var buyPrice = _N(Math.min(GetPrice(&amp;quot;Buy&amp;quot;, depth) + 0.0001, depth.Asks[0].Price-0.0001) , 4) //Guaranteed at the market&lt;br /&gt;    var sellPrice = _N(Math.max(GetPrice(&amp;quot;Sell&amp;quot;, depth) - 0.0001, depth.Bids[0].Price+0.0001), 4)&lt;br /&gt;    LogStatus(&amp;#39;buy_price:&amp;#39;+buyPrice, &amp;#39;  sell price: &amp;#39;+sellPrice)&lt;br /&gt;    if ((sellPrice - buyPrice) &amp;lt; DiffPrice) {&lt;br /&gt;        buyPrice = 0&lt;br /&gt;    }&lt;br /&gt;    if(sellPrice != lastSellPrice &amp;amp;&amp;amp; sellId){&lt;br /&gt;        exchange.CancelOrder(sellId);&lt;br /&gt;        sellId = 0&lt;br /&gt;        lastSellPrice = 0&lt;br /&gt;    }&lt;br /&gt;    if(buyPrice != lastBuyPrice &amp;amp;&amp;amp; buyId){&lt;br /&gt;        exchange.CancelOrder(buyId);&lt;br /&gt;        buyId = 0&lt;br /&gt;        lastBuyPrice = 0&lt;br /&gt;    }   &lt;br /&gt;    var acc = _C(exchange.GetAccount)&lt;br /&gt;    if(account.Stocks+account.FrozenStocks != acc.Stocks+acc.FrozenStocks){&lt;br /&gt;        LogProfit((acc.Stocks+acc.FrozenStocks)*depth.Bids[0].Price+acc.Balance+acc.FrozenBalance - 2000)&lt;br /&gt;        Log(&amp;#39;free &amp;#39;+acc.Stocks, &amp;#39; lock: &amp;#39;+ acc.FrozenStocks, &amp;#39; total: &amp;#39; , (acc.Stocks+acc.FrozenStocks)*depth.Bids[0].Price+acc.Balance+acc.FrozenBalance)&lt;br /&gt;    }&lt;br /&gt;    account = acc&lt;br /&gt;    amountBuy = _N(Math.min(account.Balance / buyPrice - 0.1, Amount), 0)&lt;br /&gt;    amountSell = _N(account.Stocks, 0)&lt;br /&gt;    if (sellPrice &amp;gt; 0 &amp;amp;&amp;amp; amountSell &amp;gt; 40 &amp;amp;&amp;amp; sellId == 0) {&lt;br /&gt;        sellId = exchange.Sell(_N(sellPrice,4), amountSell)&lt;br /&gt;        lastSellPrice = sellPrice&lt;br /&gt;    }&lt;br /&gt;    if (buyPrice&amp;gt;0 &amp;amp;&amp;amp; amountBuy &amp;gt; 40 &amp;amp;&amp;amp; buyId == 0) {&lt;br /&gt;        buyId = exchange.Buy(_N(buyPrice,4), amountBuy)&lt;br /&gt;        lastBuyPrice = buyPrice&lt;br /&gt;    }&lt;br /&gt;    Sleep(Interval)&lt;br /&gt;}&lt;br /&gt;var account = {Stocks:0, FrozenStocks:0, Balance:0, FrozenBalance:0}&lt;br /&gt;var buyId = 0&lt;br /&gt;var sellId = 0&lt;br /&gt;var lastBuyPrice = 0&lt;br /&gt;var lastSellPrice = 0&lt;br /&gt;var amountSell = 0&lt;br /&gt;var amountBuy = 0&lt;br /&gt;var log_account_time = 0&lt;br /&gt;function main() {&lt;br /&gt;    CancelPendingOrders()&lt;br /&gt;    while (true) {&lt;br /&gt;        OnTick()&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;```&lt;br /&gt;From: &lt;a target="_blank" rel="nofollow" href="https://stocksharp.com/away/?u=AQAAAAAAAAAezbpL9G-wNBo0jpp0vfUOQlbPNxIPafGj0KHUDS3Y68KbrUbzjIJ1j709jbmqf8p4YYLYbda_SSPq72HsvOcwsrBXYbrGahQeg4VzdrQRBzw5LbpVYM55zJv7-5SKRfDKSX2nQMst-gtIamdFLlrv8gHCkVQgBZVHc6_481X-ZzoNs9r9ENy89GsPXd69plk" title="https://blog.mathquant.com/2023/12/25/how-to-exploit-brainless-selling-bots-with-a-high-frequency-strategy-in-80-lines-of-code.html"&gt;https://blog.mathquant.c...in-80-lines-of-code.html&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/25570/</id>
    <title type="text">Release notes 3/16/2024</title>
    <published>2024-03-16T07:51:10Z</published>
    <updated>2024-03-16T07:51:10Z</updated>
    <author>
      <name>StockSharp</name>
      <uri>https://stocksharp.com/users/1/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;a href="https://stocksharp.com/store/installer/" title="Installer - main installation tool for all applications"&gt;Installer&lt;/a&gt; (v5.0.150):&lt;br /&gt;Advise extra setup for MT and IBKR connectors.&lt;br /&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/25567/</id>
    <title type="text">An Analysis of Common Requirements Design Examples in the Cryptocurrency Market (II)</title>
    <published>2024-03-15T06:42:30Z</published>
    <updated>2024-03-15T06:42:30Z</updated>
    <author>
      <name>FMZ Quant</name>
      <uri>https://stocksharp.com/users/185552/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <category term="#trading" />
    <category term="#cryptocurrency" />
    <category term="#code" />
    <category term="#market" />
    <category term="#analysis" />
    <category term="#fmz" />
    <category term="#contract" />
    <category term="#exchange" />
    <category term="#javascript" />
    <category term="#binance" />
    <content type="html"># FMZ Quant: An Analysis of Common Requirements Design Examples in the Cryptocurrency Market (II)&lt;br /&gt;&lt;br /&gt;In response to the comments from readers in the previous article, they requested a program example for monitoring contract account transfers. In this article, we will use Binance exchange as the test object to implement the requirement and learn how to design it together.&lt;br /&gt;&lt;br /&gt;Cryptocurrency exchanges handle a large number of transactions every day, including the transfer of assets between different wallets. Monitoring these transfers in real time is crucial for traders and developers. In this article, we will explore a piece of JavaScript code designed to monitor recent asset transfers on a cryptocurrency exchange and discuss its key components.&lt;br /&gt;&lt;br /&gt;### Analyze Requirements&lt;br /&gt;I checked the documentation of Binance exchange and found that there is a transfer history interface that can query all transfer information. Since we are only monitoring transfer records that may occur, we do not need to obtain all transfer history. We only need to check recent transfer records within a certain range based on a certain frequency. If new transfer records are found, they will be updated and notified.&lt;br /&gt;&lt;br /&gt;Use the interface:&lt;br /&gt;&lt;br /&gt;```&lt;br /&gt;// GET /sapi/v1/asset/transfer type, size : 100&lt;br /&gt;```&lt;br /&gt;So how to check the newly added transfer record? After reading Binance&amp;#39;s documentation, I found that there is a timestamp in the data returned by this interface. It is very simple to judge by the timestamp. As long as there is a record larger than the maximum timestamp currently recorded, it means that a new transfer action has occurred. Just use this to trigger it.&lt;br /&gt;&lt;br /&gt;The ```/sapi/v1/asset/transfer``` interface can request up to 100 pieces of data at a time. The detection will not cause problems for low-frequency transfers, unless the account has more than 100 transfer operations between the end of one detection and the start of the next detection. At this time, some new operation records may be missed, which is sufficient for general demand scenarios (generally, there will be no strategy to transfer funds crazily...).&lt;br /&gt;&lt;br /&gt;Of course, there are many details in the actual design. For example, checking the documentation, we found that there are many transfer directions, so we need to monitor each transfer direction. The code is defined ```var dicType = {...}``` to manage all transfer directions.&lt;br /&gt;&lt;br /&gt;In order to display the content better, we use a status bar table to output the last 5 transfer information in the strategy interface, so we constructed an object named ```monitor``` to record the data. Of course, you cannot record transfer information unlimitedly, so we only maintain 100 records for each transfer direction. If the number exceeds 100, we will delete premature records.&lt;br /&gt;&lt;br /&gt;### Code Example&lt;br /&gt;```&lt;br /&gt;function getRecentTransferHistory(TransType, typeDesc) {&lt;br /&gt;	// GET /sapi/v1/asset/transfer type, size : 100&lt;br /&gt;    &lt;br /&gt;    var rows = null &lt;br /&gt;    var ret = exchange.IO(&amp;quot;api&amp;quot;, &amp;quot;GET&amp;quot;, &amp;quot;/sapi/v1/asset/transfer&amp;quot;, `type=${TransType}&amp;amp;size=100`)&lt;br /&gt;    Log(&amp;quot;/sapi/v1/asset/transfer&amp;quot; + `type=${TransType}&amp;amp;size=100`)&lt;br /&gt;    if (ret &amp;amp;&amp;amp; typeof(ret.rows) != &amp;quot;undefined&amp;quot; &amp;amp;&amp;amp; Array.isArray(ret.rows)) {&lt;br /&gt;        rows = ret.rows&lt;br /&gt;    } else if (ret &amp;amp;&amp;amp; typeof(ret.total) != &amp;quot;undefined&amp;quot; &amp;amp;&amp;amp; ret.total == 0) {&lt;br /&gt;        rows = []&lt;br /&gt;    } else {&lt;br /&gt;    	Log(TransType, typeDesc, &amp;quot;inquiry failure&amp;quot;, ret)&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    return rows&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;var monitor = {}&lt;br /&gt;function monitorTransfers() {&lt;br /&gt;    var dicType = {&lt;br /&gt;        &amp;quot;MAIN_UMFUTURE&amp;quot;: &amp;quot;Spot wallet --&amp;gt; U-based contract wallet&amp;quot;,&lt;br /&gt;        &amp;quot;MAIN_CMFUTURE&amp;quot;: &amp;quot;Spot wallet --&amp;gt; Currency-based contract wallet&amp;quot;,&lt;br /&gt;        &amp;quot;UMFUTURE_MAIN&amp;quot;: &amp;quot;U-based contract wallet --&amp;gt; Spot wallet&amp;quot;,&lt;br /&gt;        &amp;quot;UMFUTURE_MARGIN&amp;quot;: &amp;quot;U-based contract wallet --&amp;gt; Leveraged full position wallet&amp;quot;,&lt;br /&gt;        &amp;quot;CMFUTURE_MAIN&amp;quot;: &amp;quot;Currency-based contract wallet --&amp;gt; Spot wallet&amp;quot;,&lt;br /&gt;        &amp;quot;MARGIN_UMFUTURE&amp;quot;: &amp;quot;Leveraged full position wallet --&amp;gt; U-based contract wallet&amp;quot;,&lt;br /&gt;        &amp;quot;MARGIN_CMFUTURE&amp;quot;: &amp;quot;Leveraged full position wallet --&amp;gt; Currency-based contract wallet&amp;quot;,&lt;br /&gt;        &amp;quot;CMFUTURE_MARGIN&amp;quot;: &amp;quot;Currency-based contract wallet --&amp;gt; Leveraged full position wallet&amp;quot;,&lt;br /&gt;        &amp;quot;FUNDING_UMFUTURE&amp;quot;: &amp;quot;Funds wallet --&amp;gt; U-based contract wallet&amp;quot;,&lt;br /&gt;        &amp;quot;UMFUTURE_FUNDING&amp;quot;: &amp;quot;U-based contract wallet --&amp;gt; Funds wallet&amp;quot;,&lt;br /&gt;        &amp;quot;FUNDING_CMFUTURE&amp;quot;: &amp;quot;Funds wallet --&amp;gt; Currency-based contract wallet&amp;quot;,&lt;br /&gt;        &amp;quot;CMFUTURE_FUNDING&amp;quot;: &amp;quot;Currency-based contract wallet --&amp;gt; Funds wallet&amp;quot;,&lt;br /&gt;        &amp;quot;UMFUTURE_OPTION&amp;quot;: &amp;quot;U-based contract wallet --&amp;gt; Options wallet&amp;quot;,&lt;br /&gt;        &amp;quot;OPTION_UMFUTURE&amp;quot;: &amp;quot;Options wallet --&amp;gt; U-based contract wallet&amp;quot;,&lt;br /&gt;        // integrated account&lt;br /&gt;        &amp;quot;MAIN_PORTFOLIO_MARGIN&amp;quot;: &amp;quot;Spot wallet --&amp;gt; Unified accounts wallet&amp;quot;,&lt;br /&gt;        &amp;quot;PORTFOLIO_MARGIN_MAIN&amp;quot;: &amp;quot;Unified accounts wallet --&amp;gt; Spot wallet&amp;quot;&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    Log(&amp;quot;start testing&amp;quot;)&lt;br /&gt;    _.each(dicType, function(v, k) {&lt;br /&gt;        var rows = getRecentTransferHistory(k, v)&lt;br /&gt;        var maxTS = 0&lt;br /&gt;        _.each(rows, function(row) {&lt;br /&gt;            if (typeof(monitor[k]) == &amp;quot;undefined&amp;quot;) {&lt;br /&gt;            	monitor[k] = {&amp;quot;transType&amp;quot;: k, &amp;quot;typeDesc&amp;quot;: v, &amp;quot;recentRecords&amp;quot;: [], &amp;quot;lastTS&amp;quot;: 0}            	&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            if (row[&amp;quot;timestamp&amp;quot;] &amp;gt; monitor[k][&amp;quot;lastTS&amp;quot;]) {&lt;br /&gt;                monitor[k][&amp;quot;recentRecords&amp;quot;].push(row)&lt;br /&gt;                &lt;br /&gt;                if (monitor[k][&amp;quot;lastTS&amp;quot;] != 0) {&lt;br /&gt;                	Log(&amp;quot;New transfer records detected&amp;quot;, k, v, row, &amp;quot;#FF0000&amp;quot;)&lt;br /&gt;                }                &lt;br /&gt;            }&lt;br /&gt;            maxTS = Math.max(maxTS, row[&amp;quot;timestamp&amp;quot;])     &lt;br /&gt;        })&lt;br /&gt;        if (rows &amp;amp;&amp;amp; rows.length == 0) {&lt;br /&gt;            return &lt;br /&gt;        }&lt;br /&gt;        monitor[k][&amp;quot;lastTS&amp;quot;] = maxTS&lt;br /&gt;&lt;br /&gt;        var sortedArrayAscending = monitor[k][&amp;quot;recentRecords&amp;quot;].slice().sort((a, b) =&amp;gt; a.timestamp - b.timestamp)&lt;br /&gt;        monitor[k][&amp;quot;recentRecords&amp;quot;] = sortedArrayAscending&lt;br /&gt;&lt;br /&gt;        if (monitor[k][&amp;quot;recentRecords&amp;quot;].length &amp;gt; 100) {&lt;br /&gt;        	monitor[k][&amp;quot;recentRecords&amp;quot;].shift()&lt;br /&gt;        }&lt;br /&gt;        Sleep(1000)&lt;br /&gt;    })&lt;br /&gt;    Log(&amp;quot;commencement and termination&amp;quot;)&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;function main() {&lt;br /&gt;    LogReset()&lt;br /&gt;    while (true) {&lt;br /&gt;        monitorTransfers()&lt;br /&gt;&lt;br /&gt;        var tbls = []&lt;br /&gt;        _.each(monitor, function(v, k) {&lt;br /&gt;        	var tbl = {&lt;br /&gt;        		&amp;quot;type&amp;quot;: &amp;quot;table&amp;quot;, &lt;br /&gt;        		&amp;quot;title&amp;quot;: v[&amp;quot;typeDesc&amp;quot;], &lt;br /&gt;        		&amp;quot;cols&amp;quot;: [&amp;quot;asset&amp;quot;, &amp;quot;amount&amp;quot;, &amp;quot;status&amp;quot;, &amp;quot;tranId&amp;quot;, &amp;quot;time&amp;quot;], &lt;br /&gt;        		&amp;quot;rows&amp;quot;: []&lt;br /&gt;        	}&lt;br /&gt;&lt;br /&gt;            var arr = v[&amp;quot;recentRecords&amp;quot;].slice().sort((a, b) =&amp;gt; b.timestamp - a.timestamp)&lt;br /&gt;            for (var i = 0; i &amp;lt; arr.length; i++) {&lt;br /&gt;            	if (i &amp;lt; 5) {&lt;br /&gt;            		tbl[&amp;quot;rows&amp;quot;].push([arr[i][&amp;quot;asset&amp;quot;], arr[i][&amp;quot;amount&amp;quot;], arr[i][&amp;quot;status&amp;quot;], arr[i][&amp;quot;tranId&amp;quot;], _D(arr[i][&amp;quot;timestamp&amp;quot;])])&lt;br /&gt;            	}            	&lt;br /&gt;            }&lt;br /&gt;            tbls.push(tbl)&lt;br /&gt;        })        &lt;br /&gt;&lt;br /&gt;    	LogStatus(_D(), &amp;quot;\n&amp;quot;, &amp;quot;`&amp;quot; + JSON.stringify(tbls) + &amp;quot;`&amp;quot;)&lt;br /&gt;    	Sleep(1000 * 30)&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;```&lt;br /&gt;### Code Overview:&lt;br /&gt;The provided JavaScript code includes several functions that build a system together for monitoring recent asset transfers. Let&amp;#39;s analysis the main components:&lt;br /&gt;&lt;br /&gt;- getRecentTransferHistory function:&lt;br /&gt;&lt;br /&gt;      Purpose: Obtain the recent asset transfer history from the exchange API according to the specified parameters.&lt;br /&gt;      Parameters: TransType (transfer type), typeDesc (type description).&lt;br /&gt;      API endpoint: /sapi/v1/asset/transfer.&lt;br /&gt;&lt;br /&gt;- monitorTransfers function:&lt;br /&gt;&lt;br /&gt;      Purpose: Iterate over predefined transfer types, retrieve recent transfer history, and record any new transfers.&lt;br /&gt;      Use a dictionary (dicType) to map transfer types to human-readable descriptions.&lt;br /&gt;      Update the monitor object to track the latest transfers of each type.&lt;br /&gt;&lt;br /&gt;- main function:&lt;br /&gt;&lt;br /&gt;      Purpose: Run an infinite loop that monitors transfers continuously and displays the latest data.&lt;br /&gt;      Use the monitorTransfers function regularly.&lt;br /&gt;      Generate a table for each transfer type, including columns such as asset, amount, status, transaction ID, and timestamp.&lt;br /&gt;&lt;br /&gt;### Key Features:&lt;br /&gt;- Dynamic transfer type mapping:&lt;br /&gt;&lt;br /&gt;      The code uses a dictionary (dicType) to map transfer types to descriptive names, providing a clear explanation of the nature of each transfer.&lt;br /&gt;&lt;br /&gt;- Real-time monitoring:&lt;br /&gt;&lt;br /&gt;      The system checks for new transfers continuously, updates the monitor object and records any detected changes.&lt;br /&gt;&lt;br /&gt;- Data presentation:&lt;br /&gt;&lt;br /&gt;      Use tables to present each type of transfer data, including relevant details such as assets, amounts, status, transaction IDs, and timestamps.&lt;br /&gt;&lt;br /&gt;- Recent transfer history management:&lt;br /&gt;&lt;br /&gt;      Maintain a scrolling list of recent transfer records for each type, ensuring a concise and timely display.&lt;br /&gt;&lt;br /&gt;### Bot Test&lt;br /&gt;A transfer was made manually and the program detected the transfer operation.&lt;br /&gt;&lt;a href="https://stocksharp.com/file/149241
" title="https://stocksharp.com/file/149241
"&gt;https://stocksharp.com/file/149241
&lt;/a&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/file/149242
" title="https://stocksharp.com/file/149242
"&gt;https://stocksharp.com/file/149242
&lt;/a&gt;&lt;br /&gt;### END:&lt;br /&gt;The provided JavaScript code provides a powerful solution for monitoring recent asset transfers on cryptocurrency exchanges. Its dynamic and real-time nature makes it a valuable tool for traders and developers seeking to understand asset movements between different wallets. This code can be modified and customized to specific needs, providing a solid foundation for those looking to enhance their cryptocurrency trading strategies or develop additional monitoring capabilities.&lt;br /&gt;&lt;br /&gt;This article throws some light on the topic and provides a design idea. May your cryptocurrency career be both informative and successful!&lt;br /&gt;&lt;br /&gt;From: &lt;a target="_blank" rel="nofollow" href="https://stocksharp.com/away/?u=AQAAAAAAAAAezbpL9G-wNBo0jpp0vfUOQlbPNxIPafGj0KHUDS3Y68xWe88Dm0XrWb6PcgGfeqkaV2Afp5k_ddZHA0TqJ2wDZelmTDXLQD8-7-9viCEjaeZOJ3PatyJj8e2AnCAAd0Bf3LRpUI07zRKoi5DGb0pp9GRDbmVC-kSLfzEf8nY7NcU0piK5sOjrZwvlxExJcFk" title="https://blog.mathquant.com/2023/12/25/fmz-quant-an-analysis-of-common-requirements-design-examples-in-the-cryptocurrency-market-ii.html"&gt;https://blog.mathquant.c...ocurrency-market-ii.html&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/25566/</id>
    <title type="text">An Analysis of Common Requirements Design Examples in the Cryptocurrency Market (I)</title>
    <published>2024-03-15T01:17:45Z</published>
    <updated>2024-03-15T01:17:45Z</updated>
    <author>
      <name>FMZ Quant</name>
      <uri>https://stocksharp.com/users/185552/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <category term="#trading" />
    <category term="#cryptocurrency" />
    <category term="#code" />
    <category term="#market" />
    <category term="#analysis" />
    <category term="#fmz" />
    <category term="#contract" />
    <category term="#OKX" />
    <category term="#exchange" />
    <category term="#python" />
    <content type="html">In the cryptocurrency asset trading space, obtaining and analyzing market data, querying rates, and monitoring account asset movements are all critical operations. Below are code examples of implementations for some common requirements.&lt;br /&gt;&lt;br /&gt;## 1. How do I write the code about getting the currency with the highest increase in 4 hours on Binance Spot?&lt;br /&gt;When writing a quantitative trading strategy program on FMZ platform, the first thing you need to do when you encounter a requirement is to analyze it. So based on the requirements, we analyzed the following contents:&lt;br /&gt;&lt;br /&gt;- Which programming language to use?&lt;br /&gt;The plan is to use Javascript to implement it.&lt;br /&gt;- Requires spot real-time quotes in all currencies&lt;br /&gt;The first thing we did when we saw the requirement was to look up Binance API document to find out if there was any aggregated quotes (it&amp;#39;s best to have aggregated quotes, it&amp;#39;s a lot of work to look up one by one).&lt;br /&gt;We found the aggregated quotes interface: ```GET &lt;a target="_blank" rel="nofollow" href="https://stocksharp.com/away/?u=AQAAAAAAAACfL3Aq1BOw1cGTTrQiiafGkYUlRjtfZ1xZr8VTZyhnoOl1nHbP0GW8jLSblUKT3HM" title="https://api.binance.com/api/v3/ticker/price`"&gt;https://api.binance.com/api/v3/ticker/price`&lt;/a&gt;``.&lt;br /&gt;On FMZ platform, use the ```HttpQuery``` function to access the exchange ticker interface (public interface that does not require a signature).&lt;br /&gt;- Need to count data for a rolling window period of 4 hours&lt;br /&gt;Conceptualize how to design the structure of the statistical program.&lt;br /&gt;- Calculate price fluctuations and sort them&lt;br /&gt;Thinking about the price fluctuations algorithm, is it: ```price fluctuations (%) = (current price - initial price) / initial price * 100``` in &amp;quot;%&amp;quot;.&lt;br /&gt;&lt;br /&gt;After figuring out the problem, as well as defining the program. We then got down to the business of designing the program.&lt;br /&gt;&lt;br /&gt;### Code Design&lt;br /&gt;```&lt;br /&gt;var dictSymbolsPrice = {}&lt;br /&gt;&lt;br /&gt;function main() {&lt;br /&gt;    while (true) {&lt;br /&gt;        // GET &lt;a target="_blank" rel="nofollow" href="https://stocksharp.com/away/?u=AQAAAAAAAACfL3Aq1BOw1cGTTrQiiafGkYUlRjtfZ1xZr8VTZyhnoHb4xqNwUICI8mGtl4SlDtU" title="https://api.binance.com/api/v3/ticker/price
"&gt;https://api.binance.com/api/v3/ticker/price
&lt;/a&gt;&lt;br /&gt;        try {&lt;br /&gt;            var arr = JSON.parse(HttpQuery(&amp;quot;https://api.binance.com/api/v3/ticker/price&amp;quot;))&lt;br /&gt;            if (!Array.isArray(arr)) {&lt;br /&gt;                Sleep(5000)&lt;br /&gt;                continue &lt;br /&gt;            }&lt;br /&gt;            &lt;br /&gt;            var ts = new Date().getTime()&lt;br /&gt;            for (var i = 0; i &amp;lt; arr.length; i++) {&lt;br /&gt;                var symbolPriceInfo = arr[i]&lt;br /&gt;                var symbol = symbolPriceInfo.symbol&lt;br /&gt;                var price = symbolPriceInfo.price&lt;br /&gt;&lt;br /&gt;                if (typeof(dictSymbolsPrice[symbol]) == &amp;quot;undefined&amp;quot;) {&lt;br /&gt;                    dictSymbolsPrice[symbol] = {name: symbol, data: []}&lt;br /&gt;                }&lt;br /&gt;                dictSymbolsPrice[symbol].data.push({ts: ts, price: price})&lt;br /&gt;            }&lt;br /&gt;        } catch(e) {&lt;br /&gt;            Log(&amp;quot;e.name:&amp;quot;, e.name, &amp;quot;e.stack:&amp;quot;, e.stack, &amp;quot;e.message:&amp;quot;, e.message)&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        // Calculate price fluctuations&lt;br /&gt;        var tbl = {&lt;br /&gt;            type : &amp;quot;table&amp;quot;,&lt;br /&gt;            title : &amp;quot;Price fluctuations&amp;quot;,&lt;br /&gt;            cols : [&amp;quot;trading pair&amp;quot;, &amp;quot;current price&amp;quot;, &amp;quot;price 4 hours ago&amp;quot;, &amp;quot;price fluctuations&amp;quot;, &amp;quot;data length&amp;quot;, &amp;quot;earliest data time&amp;quot;, &amp;quot;latest data time&amp;quot;],&lt;br /&gt;            rows : []&lt;br /&gt;        }&lt;br /&gt;        for (var symbol in dictSymbolsPrice) {&lt;br /&gt;            var data = dictSymbolsPrice[symbol].data&lt;br /&gt;            if (data[data.length - 1].ts - data[0].ts &amp;gt; 1000 * 60 * 60 * 4) {&lt;br /&gt;                dictSymbolsPrice[symbol].data.shift()&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            data = dictSymbolsPrice[symbol].data&lt;br /&gt;            dictSymbolsPrice[symbol].percentageChange = (data[data.length - 1].price - data[0].price) / data[0].price * 100&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        var entries = Object.entries(dictSymbolsPrice)&lt;br /&gt;        entries.sort((a, b) =&amp;gt; b[1].percentageChange - a[1].percentageChange)&lt;br /&gt;&lt;br /&gt;        for (var i = 0; i &amp;lt; entries.length; i++) {&lt;br /&gt;            if (i &amp;gt; 9) {&lt;br /&gt;                break&lt;br /&gt;            }   &lt;br /&gt;            var name = entries[i][1].name&lt;br /&gt;            var data = entries[i][1].data&lt;br /&gt;            var percentageChange = entries[i][1].percentageChange&lt;br /&gt;            var currPrice = data[data.length - 1].price&lt;br /&gt;            var currTs = _D(data[data.length - 1].ts)&lt;br /&gt;            var prePrice = data[0].price&lt;br /&gt;            var preTs = _D(data[0].ts)&lt;br /&gt;            var dataLen = data.length&lt;br /&gt;&lt;br /&gt;            tbl.rows.push([name, currPrice, prePrice, percentageChange + &amp;quot;%&amp;quot;, dataLen, preTs, currTs])&lt;br /&gt;        }&lt;br /&gt;        &lt;br /&gt;        LogStatus(_D(), &amp;quot;\n&amp;quot;, &amp;quot;`&amp;quot; + JSON.stringify(tbl) + &amp;quot;`&amp;quot;)&lt;br /&gt;        Sleep(5000)&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;```&lt;br /&gt;### Code Analysis&lt;br /&gt;- 1. Data structure&lt;br /&gt;```var dictSymbolsPrice = {}```: An empty object to store price information for each trading pair. The key is the symbol of the trading pair, and the value is an object containing the name of the trading pair, an array of price data, and information about the price fluctuations.&lt;br /&gt;- 2. Main function main()&lt;br /&gt;  2.1. Infinite loop&lt;br /&gt;```&lt;br /&gt;while (true) {&lt;br /&gt;    // ...&lt;br /&gt;}&lt;br /&gt;```&lt;br /&gt;The program continuously monitors the Binance API trading pair prices through an infinite loop.&lt;br /&gt;&lt;br /&gt;  2.2. Get price information&lt;br /&gt;```&lt;br /&gt;var arr = JSON.parse(HttpQuery(&amp;quot;https://api.binance.com/api/v3/ticker/price&amp;quot;))&lt;br /&gt;```&lt;br /&gt;Get the current price information of the trading pair via Binance API. If the return is not an array, wait for 5 seconds and retry.&lt;br /&gt;&lt;br /&gt;  2.3. Update price data&lt;br /&gt;```&lt;br /&gt;for (var i = 0; i &amp;lt; arr.length; i++) {&lt;br /&gt;    // ...&lt;br /&gt;}&lt;br /&gt;```&lt;br /&gt;Iterate through the array of obtained price information and update the data in dictSymbolsPrice. For each trading pair, add the current timestamp and price to the corresponding data array.&lt;br /&gt;&lt;br /&gt;  2.4. Exception processing&lt;br /&gt;```&lt;br /&gt;} catch(e) {&lt;br /&gt;    Log(&amp;quot;e.name:&amp;quot;, e.name, &amp;quot;e.stack:&amp;quot;, e.stack, &amp;quot;e.message:&amp;quot;, e.message)&lt;br /&gt;}&lt;br /&gt;```&lt;br /&gt;Catch exceptions and log the exception information to ensure that the program can continue to execute.&lt;br /&gt;&lt;br /&gt;  2.5. Calculate the price fluctuations&lt;br /&gt;```&lt;br /&gt;for (var symbol in dictSymbolsPrice) {&lt;br /&gt;    // ...&lt;br /&gt;}&lt;br /&gt;```&lt;br /&gt;Iterate through dictSymbolsPrice, calculate the price fluctuations of each trading pair, and remove the earliest data if it is longer than 4 hours.&lt;br /&gt;&lt;br /&gt;  2.6. Sort and generate tables&lt;br /&gt;```&lt;br /&gt;var entries = Object.entries(dictSymbolsPrice)&lt;br /&gt;entries.sort((a, b) =&amp;gt; b[1].percentageChange - a[1].percentageChange)&lt;br /&gt;&lt;br /&gt;for (var i = 0; i &amp;lt; entries.length; i++) {&lt;br /&gt;    // ...&lt;br /&gt;}&lt;br /&gt;```&lt;br /&gt;Sort the trading pairs in descending order of their price fluctuations and generate a table containing information about the trading pairs.&lt;br /&gt;&lt;br /&gt;  2.7. Log output and delay&lt;br /&gt;```&lt;br /&gt;LogStatus(_D(), &amp;quot;\n&amp;quot;, &amp;quot;`&amp;quot; + JSON.stringify(tbl) + &amp;quot;`&amp;quot;)&lt;br /&gt;Sleep(5000)&lt;br /&gt;```&lt;br /&gt;Output the table and the current time in the form of a log and wait for 5 seconds to continue the next round of the loop.&lt;br /&gt;&lt;br /&gt;The program obtains the real-time price information of the trading pair through Binance API, then calculates the price fluctuations, and outputs it to the log in the form of a table. The program is executed in a continuous loop to realize the function of real-time monitoring of the prices of trading pairs. Note that the program includes exception processing to ensure that the execution is not interrupted by exceptions when obtaining price information.&lt;br /&gt;&lt;br /&gt;### Live Trading Running Test&lt;br /&gt;&lt;a href="https://stocksharp.com/file/149238
" title="https://stocksharp.com/file/149238
"&gt;https://stocksharp.com/file/149238
&lt;/a&gt;&lt;br /&gt;Since data can only be collected bit by bit at the beginning, it is not possible to calculate the price fluctuations on a rolling basis without collecting enough data for a 4-hour window. Therefore, the initial price is used as the base for calculation, and after collecting enough data for 4 hours, the oldest data will be eliminated in order to maintain the 4-hour window for calculating the price fluctuations.&lt;br /&gt;&lt;br /&gt;## 2. Check the full variety of funding rates for Binance U-denominated contracts&lt;br /&gt;Checking the funding rate is similar to the above code, first of all, we need to check the Binance API documentation to find the funding rate related interface. Binance has several interfaces that allow us to query the rate of funds, here we take the interface of the U-denominated contract as an example:&lt;br /&gt;&lt;br /&gt;```&lt;br /&gt;GET &lt;a target="_blank" rel="nofollow" href="https://stocksharp.com/away/?u=AQAAAAAAAACnpKUNUrsvTUe50LbpAqE3J_RruimpjMBn19u4HQFXey7Q6ctiI4d8we1_Qz5p5HY" title="https://fapi.binance.com/fapi/v1/premiumIndex
"&gt;https://fapi.binance.com/fapi/v1/premiumIndex
&lt;/a&gt;&lt;br /&gt;```&lt;br /&gt;### Code Implementation&lt;br /&gt;Since there are so many contracts, we&amp;#39;re exporting the top 10 largest funding rates here.&lt;br /&gt;&lt;br /&gt;```&lt;br /&gt;function main() {&lt;br /&gt;    while (true) {&lt;br /&gt;        // GET &lt;a target="_blank" rel="nofollow" href="https://stocksharp.com/away/?u=AQAAAAAAAACnpKUNUrsvTUe50LbpAqE3J_RruimpjMBn19u4HQFXey7Q6ctiI4d8we1_Qz5p5HY" title="https://fapi.binance.com/fapi/v1/premiumIndex
"&gt;https://fapi.binance.com/fapi/v1/premiumIndex
&lt;/a&gt;&lt;br /&gt;        try {&lt;br /&gt;            var arr = JSON.parse(HttpQuery(&amp;quot;https://fapi.binance.com/fapi/v1/premiumIndex&amp;quot;))&lt;br /&gt;            if (!Array.isArray(arr)) {&lt;br /&gt;                Sleep(5000)&lt;br /&gt;                continue &lt;br /&gt;            }&lt;br /&gt;            &lt;br /&gt;            arr.sort((a, b) =&amp;gt; parseFloat(b.lastFundingRate) - parseFloat(a.lastFundingRate))&lt;br /&gt;            var tbl = {&lt;br /&gt;                type: &amp;quot;table&amp;quot;,&lt;br /&gt;                title: &amp;quot;Top 10 funding rates for U-denominated contracts&amp;quot;,&lt;br /&gt;                cols: [&amp;quot;contracts&amp;quot;, &amp;quot;funding rate&amp;quot;, &amp;quot;marked price&amp;quot;, &amp;quot;index price&amp;quot;, &amp;quot;current rate time&amp;quot;, &amp;quot;next rate time&amp;quot;],&lt;br /&gt;                rows: []&lt;br /&gt;            }&lt;br /&gt;            for (var i = 0; i &amp;lt; 9; i++) {&lt;br /&gt;                var obj = arr[i]&lt;br /&gt;                tbl.rows.push([obj.symbol, obj.lastFundingRate, obj.markPrice, obj.indexPrice, _D(obj.time), _D(obj.nextFundingTime)])&lt;br /&gt;            }&lt;br /&gt;            LogStatus(_D(), &amp;quot;\n&amp;quot;, &amp;quot;`&amp;quot; + JSON.stringify(tbl) + &amp;quot;`&amp;quot;)&lt;br /&gt;        } catch(e) {&lt;br /&gt;            Log(&amp;quot;e.name:&amp;quot;, e.name, &amp;quot;e.stack:&amp;quot;, e.stack, &amp;quot;e.message:&amp;quot;, e.message)&lt;br /&gt;        }&lt;br /&gt;        Sleep(1000 * 10)&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;```&lt;br /&gt;The returned data structure is as follows, and check the Binance documentation, it shows that lastFundingRate is the funding rate we want.&lt;br /&gt;&lt;br /&gt;```&lt;br /&gt;{&lt;br /&gt;    &amp;quot;symbol&amp;quot;:&amp;quot;STMXUSDT&amp;quot;,&lt;br /&gt;    &amp;quot;markPrice&amp;quot;:&amp;quot;0.00883606&amp;quot;,&lt;br /&gt;    &amp;quot;indexPrice&amp;quot;:&amp;quot;0.00883074&amp;quot;,&lt;br /&gt;    &amp;quot;estimatedSettlePrice&amp;quot;:&amp;quot;0.00876933&amp;quot;,&lt;br /&gt;    &amp;quot;lastFundingRate&amp;quot;:&amp;quot;0.00026573&amp;quot;,&lt;br /&gt;    &amp;quot;interestRate&amp;quot;:&amp;quot;0.00005000&amp;quot;,&lt;br /&gt;    &amp;quot;nextFundingTime&amp;quot;:1702828800000,&lt;br /&gt;    &amp;quot;time&amp;quot;:1702816229000&lt;br /&gt;}&lt;br /&gt;```&lt;br /&gt;Live trading running test:&lt;br /&gt;&lt;a href="https://stocksharp.com/file/149239
" title="https://stocksharp.com/file/149239
"&gt;https://stocksharp.com/file/149239
&lt;/a&gt;&lt;br /&gt;### Getting OKX exchange contract funding rates of Python version&lt;br /&gt;A user has asked for a Python version of the example, and it&amp;#39;s for the OKX exchange. Here is an example:&lt;br /&gt;&lt;br /&gt;The data returned by the interface ```https://www.okx.com/priapi/v5/public/funding-rate-all?currencyType=1```:&lt;br /&gt;```&lt;br /&gt;{&lt;br /&gt;    &amp;quot;code&amp;quot;:&amp;quot;0&amp;quot;,&lt;br /&gt;    &amp;quot;data&amp;quot;:[&lt;br /&gt;        {&lt;br /&gt;            &amp;quot;fundingTime&amp;quot;:1702828800000,&lt;br /&gt;            &amp;quot;fundingList&amp;quot;:[&lt;br /&gt;                {&lt;br /&gt;                    &amp;quot;instId&amp;quot;:&amp;quot;BTC-USDT-SWAP&amp;quot;,&lt;br /&gt;                    &amp;quot;nextFundingRate&amp;quot;:&amp;quot;0.0001102188733642&amp;quot;,&lt;br /&gt;                    &amp;quot;minFundingRate&amp;quot;:&amp;quot;-0.00375&amp;quot;,&lt;br /&gt;                    &amp;quot;fundingRate&amp;quot;:&amp;quot;0.0000821861465884&amp;quot;,&lt;br /&gt;                    &amp;quot;maxFundingRate&amp;quot;:&amp;quot;0.00375&amp;quot;&lt;br /&gt;                } ...&lt;br /&gt;```&lt;br /&gt;Specific code:&lt;br /&gt;&lt;br /&gt;```&lt;br /&gt;import requests&lt;br /&gt;import json&lt;br /&gt;from time import sleep&lt;br /&gt;from datetime import datetime&lt;br /&gt;&lt;br /&gt;def main():&lt;br /&gt;    while True:&lt;br /&gt;        # &lt;a target="_blank" rel="nofollow" href="https://stocksharp.com/away/?u=AQAAAAAAAAAX6jgKcm1O1gelyLxYvVdIuZk7xhWOdSLJzmIY9U2euHYh7hg3o0lfh7KAVNUc3PqsohDC5Uzvxe1b7hR5A0sEtJL8-7Q-gWMVzcGb83Bdeg" title="https://www.okx.com/priapi/v5/public/funding-rate-all?currencyType=1
"&gt;https://www.okx.com/pria...rate-all?currencyType=1
&lt;/a&gt;&lt;br /&gt;        try:&lt;br /&gt;            response = requests.get(&amp;quot;https://www.okx.com/priapi/v5/public/funding-rate-all?currencyType=1&amp;quot;)&lt;br /&gt;            arr = response.json()[&amp;quot;data&amp;quot;][0][&amp;quot;fundingList&amp;quot;]&lt;br /&gt;            Log(arr) &lt;br /&gt;            if not isinstance(arr, list):&lt;br /&gt;                sleep(5)&lt;br /&gt;                continue&lt;br /&gt;&lt;br /&gt;            arr.sort(key=lambda x: float(x[&amp;quot;fundingRate&amp;quot;]), reverse=True)&lt;br /&gt;&lt;br /&gt;            tbl = {&lt;br /&gt;                &amp;quot;type&amp;quot;: &amp;quot;table&amp;quot;,&lt;br /&gt;                &amp;quot;title&amp;quot;: &amp;quot;Top 10 funding rates for U-denominated contracts&amp;quot;,&lt;br /&gt;                &amp;quot;cols&amp;quot;: [&amp;quot;contracts&amp;quot;, &amp;quot;next rate&amp;quot;, &amp;quot;minimum&amp;quot;, &amp;quot;current&amp;quot;, &amp;quot;maximum&amp;quot;],&lt;br /&gt;                &amp;quot;rows&amp;quot;: []&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            for i in range(min(9, len(arr))):&lt;br /&gt;                obj = arr[i]&lt;br /&gt;                row = [&lt;br /&gt;                    obj[&amp;quot;instId&amp;quot;],&lt;br /&gt;                    obj[&amp;quot;nextFundingRate&amp;quot;],&lt;br /&gt;                    obj[&amp;quot;minFundingRate&amp;quot;],&lt;br /&gt;                    obj[&amp;quot;fundingRate&amp;quot;],&lt;br /&gt;                    obj[&amp;quot;maxFundingRate&amp;quot;]&lt;br /&gt;                ]&lt;br /&gt;                tbl[&amp;quot;rows&amp;quot;].append(row)&lt;br /&gt;            &lt;br /&gt;            LogStatus(_D(), &amp;quot;\n&amp;quot;, &amp;#39;`&amp;#39; + json.dumps(tbl) + &amp;#39;`&amp;#39;)&lt;br /&gt;&lt;br /&gt;        except Exception as e:&lt;br /&gt;            Log(f&amp;quot;Error: {str(e)}&amp;quot;)&lt;br /&gt;&lt;br /&gt;        sleep(10)&lt;br /&gt;```&lt;br /&gt;Live trading running test:&lt;br /&gt;&lt;a href="https://stocksharp.com/file/149240
" title="https://stocksharp.com/file/149240
"&gt;https://stocksharp.com/file/149240
&lt;/a&gt;&lt;br /&gt;### END&lt;br /&gt;These examples provide basic design ideas and calling methods, the actual project may need to make appropriate changes and extensions based on the specific needs. Hopefully, these codes can help you better meet the various needs in cryptocurrency digital asset trading.&lt;br /&gt;From: &lt;a target="_blank" rel="nofollow" href="https://stocksharp.com/away/?u=AQAAAAAAAAAezbpL9G-wNBo0jpp0vfUOQlbPNxIPafGj0KHUDS3Y68rVVLKlYDznwDv5ubvlY9vnNCSvXHE-hz8hgv4J0qmCzJz2XKYle71jKhvIjvYbkhtI3fwXGmA30gp8lPoFt3zpn8KRj_HYaEVGjDZeJ7k25G0KPS4RG1BFMJcIjIOdBoVAI5Af-REHEzXVwq5g_is" title="https://blog.mathquant.com/2023/12/19/fmz-quant-an-analysis-of-common-requirements-design-examples-in-the-cryptocurrency-market-i.html"&gt;https://blog.mathquant.c...tocurrency-market-i.html&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/25563/</id>
    <title type="text">The Crucial Role of Efficient Quantitative Data Exploration Tools in Boosting Trading Success</title>
    <published>2024-03-14T09:21:47Z</published>
    <updated>2024-03-14T09:21:47Z</updated>
    <author>
      <name>FMZ Quant</name>
      <uri>https://stocksharp.com/users/185552/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <category term="#trading" />
    <category term="#cryptocurrency" />
    <category term="#strategy" />
    <category term="#code" />
    <category term="#data" />
    <category term="#market" />
    <category term="#analysis" />
    <category term="#fmz" />
    <category term="#algorithmic" />
    <category term="#platform" />
    <content type="html">In today&amp;#39;s fiercely competitive financial market, quantitative trading, as a trading strategy based on data analysis and algorithmic models, is becoming an increasingly favored choice for investors and traders. In the field of quantitative trading, the value of data is becoming increasingly prominent. Therefore, an efficient and reliable quantitative data exploration tool has become an indispensable key to achieving successful transactions.&lt;br /&gt;&lt;br /&gt;In this era where data-driven decision-making is increasingly valued, the FMZ Quant data exploration module has emerged. As one of the essential tools in the field of quantitative trading, it is not only an ordinary data analysis software, but also a revolutionary innovation that provides investors with unique data analysis and mining functions, helping them seize opportunities and reduce risks in complex and ever-changing financial markets.&lt;br /&gt;&lt;br /&gt;FMZ Quant, as a professional quantitative trading platform, is supported by numerous quantitative trading tools. At present, the &amp;quot;Data Exploration&amp;quot; module of the FMZ Quant Trading Platform has integrated the services of the datadata platform, giving users more advantages in multidimensional data analysis, mining visual data, exploring trading strategies, and other aspects. FMZ&amp;#39;s self-developed datadata platform is a quantitative financial data platform. Using SQL queries to analyze massive amounts of data and configuring them through visual interfaces, generating various charts suitable for data analysis and sharing them with the team, allowing us to easily grasp market trends and seize investment opportunities!&lt;br /&gt;&lt;br /&gt;FMZ Quant Data Exploration Module&lt;br /&gt;First of all, let&amp;#39;s familiarize with the FMZ Quant Data Exploration module, which is used just like on datadata. For each FMZ platform user, we don&amp;#39;t need to register for the datadata platform again, and we can use all the features of the datadata platform directly.&lt;br /&gt;&lt;a href="https://stocksharp.com/file/149179
" title="https://stocksharp.com/file/149179
"&gt;https://stocksharp.com/file/149179
&lt;/a&gt;&lt;br /&gt;Data areas&lt;br /&gt;The list on the left side shows the data content that has been supported on-line, currently supporting K-line data (OHLC) and Tick data of each exchange (platform). More types and dimensions of data will be supported in the future.&lt;br /&gt;These data are updated continuously in real time, allowing us to always grasp the market dynamics.&lt;br /&gt;For example, if we select OHLC and then select market-&amp;gt;bitfinex_m1, we can see the field names in this table object after clicking Expand.&lt;br /&gt;&lt;a href="https://stocksharp.com/file/149180
" title="https://stocksharp.com/file/149180
"&gt;https://stocksharp.com/file/149180
&lt;/a&gt;&lt;br /&gt;Click on the table chart to preview some of the data.&lt;br /&gt;&lt;br /&gt;The platform also supports uploading your own data by clicking the &amp;quot;Upload Data&amp;quot; button at the bottom of the list.&lt;br /&gt;&lt;br /&gt;Uploading CSV files from your device to the server.&lt;br /&gt;The file size should not exceed 10 MB, with a maximum of 10,000 rows and 128 columns.&lt;br /&gt;&lt;br /&gt;SQL statement edit area&lt;br /&gt;&lt;a href="https://stocksharp.com/file/149181
" title="https://stocksharp.com/file/149181
"&gt;https://stocksharp.com/file/149181
&lt;/a&gt;&lt;br /&gt;Here is the edit box for writing a specific query statement, we will show two interesting examples later, let&amp;#39;s understand the other features first.&lt;br /&gt;&lt;a href="https://stocksharp.com/file/149182
" title="https://stocksharp.com/file/149182
"&gt;https://stocksharp.com/file/149182
&lt;/a&gt;&lt;br /&gt;There are two control buttons here, the first one can be used to format the SQL statement easily. The second button is used to insert variables used in the SQL statement, similar to adding a parameter to the SQL query that can be modified in real time (without having to hard-code some of the query conditions into the SQL statement). For example:&lt;br /&gt;&lt;a href="https://stocksharp.com/file/149183
" title="https://stocksharp.com/file/149183
"&gt;https://stocksharp.com/file/149183
&lt;/a&gt;&lt;br /&gt;Input &amp;#39;1inch_usd&amp;#39; into the parameter test and click the &amp;quot;Execute&amp;quot; button on the right side, then you can query all the data of the variety 1inch_usd. The queried data can also be exported and downloaded locally:&lt;br /&gt;&lt;a href="https://stocksharp.com/file/149184
" title="https://stocksharp.com/file/149184
"&gt;https://stocksharp.com/file/149184
&lt;/a&gt;&lt;br /&gt;It supports JSON, CSV format.&lt;br /&gt;&lt;br /&gt;If we want to save the SQL query, we can click the &amp;quot;Save&amp;quot; button in the upper right corner to record the SQL query in the resource list of the current FMZ account&amp;#39;s &amp;quot;Data Exploration&amp;quot; (the resource list button is on the left side of the save button) for future use.&lt;br /&gt;&lt;br /&gt;At present, the interface we see is simple and the functions are simple, but in practical use, we will experience the powerful use of this tool. Next, let&amp;#39;s take a look at two more complex examples.&lt;br /&gt;&lt;br /&gt;Volatility ranking&lt;br /&gt;```&lt;br /&gt;SELECT &lt;br /&gt;    UPPER(REPLACE(symbol, &amp;#39;_usdt.swap&amp;#39;, &amp;#39;&amp;#39;)) as symbol,&lt;br /&gt;    ((MAX(high) - MIN(low)) / AVG((high + low) / 2)) AS volatility_percentage&lt;br /&gt;FROM &lt;br /&gt;    market.futures_binance_d1&lt;br /&gt;WHERE &lt;br /&gt;    timestamp &amp;gt;= CURRENT_DATE - INTERVAL &amp;#39;{{days}} day&amp;#39; and symbol like &amp;#39;%.swap&amp;#39;&lt;br /&gt;GROUP BY &lt;br /&gt;    symbol&lt;br /&gt;ORDER BY &lt;br /&gt;    volatility_percentage {{rank}}&lt;br /&gt;LIMIT &lt;br /&gt;    {{limit}};&lt;br /&gt;```&lt;br /&gt;This SQL code is used to get the volatility percentage of the trading pair that meets the criteria from the table &amp;quot;market.futures_binance_d1&amp;quot; and sort and limit the quantity output by volatility percentage.&lt;br /&gt;&lt;br /&gt;The explanation of this SQL is given below:&lt;br /&gt;&lt;br /&gt;```&lt;br /&gt;1. Two expressions were used for calculation, one was to replace the &amp;#39;_usdt.swap&amp;#39; in the &amp;#39;symbol&amp;#39; column with an empty string and convert the result to uppercase, and the other was to calculate (MAX(high) - MIN(low)) / AVG((high+low) / 2).&lt;br /&gt;The first expression uses the REPLACE function to replace strings that meet the criteria, and then uses the UPPER function to convert the result to uppercase.&lt;br /&gt;The second expression calculates the difference between the highest and lowest prices divided by the average of the highest and lowest prices to calculate the percentage of volatility.&lt;br /&gt;&lt;br /&gt;2. FROM clause:&lt;br /&gt;The specified data table to be queried is &amp;quot;market.futures.binance_d1&amp;quot;.&lt;br /&gt;&lt;br /&gt;3. WHERE clause:&lt;br /&gt;Two filter conditions are used: timestamp &amp;gt;= CURRENT_DATE - INTERVAL &amp;#39;{{days}} day&amp;#39; and symbol like &amp;#39;%.swap&amp;#39;.&lt;br /&gt;The first condition filters out data within the last {{days}} days.&lt;br /&gt;The second condition filters out trading pairs where the &amp;quot;symbol&amp;quot; column ends in &amp;#39;.swap&amp;#39;.&lt;br /&gt;&lt;br /&gt;4. GROUP BY clause:&lt;br /&gt;Group by the &amp;quot;symbol&amp;quot; column.&lt;br /&gt;&lt;br /&gt;5. ORDER BY clause:&lt;br /&gt;Sort by volatility percentage, either ascending (ASC) or descending (DESC), depending on the {{rank}} parameter.&lt;br /&gt;&lt;br /&gt;6. LIMIT clause:&lt;br /&gt;Limit the number of output results, which can be set according to the {{limit}} parameter.&lt;br /&gt;```&lt;br /&gt;&lt;a href="https://stocksharp.com/file/149185
" title="https://stocksharp.com/file/149185
"&gt;https://stocksharp.com/file/149185
&lt;/a&gt;&lt;br /&gt;When we enter the parameters:&lt;br /&gt;days: 10 , rank: DESC , limit: 10, click the &amp;quot;Execute&amp;quot; button to execute the SQL statement and query the result.&lt;br /&gt;&lt;br /&gt;In addition to displaying data in the form of tables, it can also be displayed in a variety of visualization ways. After setting up some relevant settings for visualization, the data will be displayed in a richer and more vivid way.&lt;br /&gt;&lt;a href="https://stocksharp.com/file/149186
" title="https://stocksharp.com/file/149186
"&gt;https://stocksharp.com/file/149186
&lt;/a&gt;&lt;br /&gt;The created query can also generate URLs for easy sharing, and we can also modify the parameters to update the query (try modifying the parameters to update the query here in the article). Follwing is a chart of the real-time data generated:&lt;br /&gt;&lt;br /&gt;volatility ranking&lt;br /&gt;&lt;a href="https://stocksharp.com/file/149187
" title="https://stocksharp.com/file/149187
"&gt;https://stocksharp.com/file/149187
&lt;/a&gt;&lt;br /&gt;In-depth Replay&lt;br /&gt;Next we&amp;#39;re going to study an example of studying a market micro-scenario, which is a wonderful tool for studying the details of high-frequency trading.&lt;br /&gt;&lt;br /&gt;```&lt;br /&gt;select * from market.binance where symbol = lower(&amp;#39;{{symbol}}&amp;#39;) order by timestamp desc limit 2000&lt;br /&gt;```&lt;br /&gt;Use the above SQL statement to query the tick level tick data for a particular species.&lt;br /&gt;&lt;a href="https://stocksharp.com/file/149188
" title="https://stocksharp.com/file/149188
"&gt;https://stocksharp.com/file/149188
&lt;/a&gt;&lt;br /&gt;The SQL query for this example is very simple, just querying the Tick data for a certain variety (specified by the parameter symbol) on the Binance exchange.&lt;br /&gt;&lt;br /&gt;The point is to show the data in the form of a live trading replay, on a time series, with multiple charts:&lt;br /&gt;&lt;a href="https://stocksharp.com/file/149189
" title="https://stocksharp.com/file/149189
"&gt;https://stocksharp.com/file/149189
&lt;/a&gt;&lt;br /&gt;Is it convenient to study the details in the market?&lt;br /&gt;&lt;br /&gt;Next, let&amp;#39;s take a look at how to share our research. We can click on the share icon in the upper right corner.&lt;br /&gt;&lt;a href="https://stocksharp.com/file/149190
" title="https://stocksharp.com/file/149190
"&gt;https://stocksharp.com/file/149190
&lt;/a&gt;&lt;br /&gt;These shared codes, links, can be embedded in FMZ platform community posts, articles. They can be embedded in web pages and can be republished in other communities, forums, etc. It can also be shared directly to anyone.&lt;br /&gt;&lt;a href="https://stocksharp.com/file/149191
" title="https://stocksharp.com/file/149191
"&gt;https://stocksharp.com/file/149191
&lt;/a&gt;&lt;br /&gt;What are you waiting for with this powerful quantitative trading tool? Try to mine the data and analyze it.&lt;br /&gt;From: &lt;a target="_blank" rel="nofollow" href="https://stocksharp.com/away/?u=AQAAAAAAAAAezbpL9G-wNBo0jpp0vfUOwHPGoBwiLq1oM9OMAwzPdFM4UM8QeXCxEonXD9GaBcjk-lqekTpv_0LuQCvUnpJsO-jxJPnJNRpb4b03txvGwXl8GRWdlfv1xR3Kmh-GJ5ntf1I45lPMo8FzgkmMDikIAE70TlIimT7dHeGi559UEA9UWqnYtYT5Psub0cdVwmU" title="https://blog.mathquant.com/2024/02/26/an-essential-tool-in-the-field-of-quantitative-trading-fmz-quant-data-exploration-module.html"&gt;https://blog.mathquant.c...-exploration-module.html&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/25557/</id>
    <title type="text">Release notes 3/12/2024</title>
    <published>2024-03-12T13:00:32Z</published>
    <updated>2024-03-12T13:16:47Z</updated>
    <author>
      <name>StockSharp</name>
      <uri>https://stocksharp.com/users/1/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;a href="https://stocksharp.com/store/lessons/" title="Edu"&gt;Edu&lt;/a&gt; (v5.0.34):&lt;br /&gt;Fix run backtests (no security lookup turn on by default).&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/trading-shell/" title="Shell for your algo strategy with C# source codes"&gt;Shell&lt;/a&gt; (v5.0.35):&lt;br /&gt;Fix run backtests (no security lookup turn on by default).&lt;br /&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/25531/</id>
    <title type="text">Release notes 3/4/2024</title>
    <published>2024-03-04T17:03:15Z</published>
    <updated>2024-03-04T17:03:15Z</updated>
    <author>
      <name>StockSharp</name>
      <uri>https://stocksharp.com/users/1/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;a href="https://stocksharp.com/store/installer/" title="Installer - main installation tool for all applications"&gt;Installer&lt;/a&gt; (v5.0.149):&lt;br /&gt;HtmlLabelEx -&amp;gt; ThemeHtmlLabel &lt;br /&gt;Light/dark mode switch. &lt;br /&gt;HtmlLabelEx&lt;br /&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/25509/</id>
    <title type="text">Release notes 2/23/2024</title>
    <published>2024-02-23T18:54:03Z</published>
    <updated>2024-02-23T18:54:03Z</updated>
    <author>
      <name>StockSharp</name>
      <uri>https://stocksharp.com/users/1/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;a href="https://stocksharp.com/store/strategy-designer/" title="Designer: A Free App for Creating Algorithmic Trading Strategies Without Coding"&gt;Designer&lt;/a&gt; (v5.0.164):&lt;br /&gt;Studio.Core removed dependency from Fix connector.&lt;br /&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/25504/</id>
    <title type="text">Release notes 2/22/2024</title>
    <published>2024-02-22T21:31:41Z</published>
    <updated>2024-02-22T21:31:41Z</updated>
    <author>
      <name>StockSharp</name>
      <uri>https://stocksharp.com/users/1/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;a href="https://stocksharp.com/store/installer/" title="Installer - main installation tool for all applications"&gt;Installer&lt;/a&gt; (v5.0.148):&lt;br /&gt;Shows MT select folder dialog every time. &lt;br /&gt;ISLR-36 Removed locked files checking. Auto-kill runner app without user request. &lt;br /&gt;HyperlinkEx -&amp;gt; HyperlinkEdit usage.&lt;br /&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/25499/</id>
    <title type="text">Release notes 2/21/2024</title>
    <published>2024-02-21T19:11:05Z</published>
    <updated>2024-02-21T19:11:05Z</updated>
    <author>
      <name>StockSharp</name>
      <uri>https://stocksharp.com/users/1/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;a href="https://stocksharp.com/store/installer/" title="Installer - main installation tool for all applications"&gt;Installer&lt;/a&gt; (v5.0.147):&lt;br /&gt;Return to main window after publish. &lt;br /&gt;Product. UrlRelative, UrlAbsolute properties. &lt;br /&gt;InstallerRepoProvider moved to Studio.Nuget. &lt;br /&gt;WebApiHelper. IsAvailable, GetCurrency extensions. &lt;br /&gt;Allow install schemas as standalone packages.&lt;br /&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/25497/</id>
    <title type="text">Release notes 2/21/2024</title>
    <published>2024-02-21T19:05:02Z</published>
    <updated>2024-02-21T19:05:02Z</updated>
    <author>
      <name>StockSharp</name>
      <uri>https://stocksharp.com/users/1/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;a href="https://stocksharp.com/store/api/" title="API - a free algorithmic trading API"&gt;API&lt;/a&gt; (v5.0.140):&lt;br /&gt;Backtesting supports stop orders. Strategies can use local and server stop-orders. &lt;br /&gt;IChart. Areas property type changed INotifyList -&amp;gt; IEnumerable&lt;br /&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/25495/</id>
    <title type="text">Release notes 2/21/2024</title>
    <published>2024-02-21T19:04:59Z</published>
    <updated>2024-02-21T19:04:59Z</updated>
    <author>
      <name>StockSharp</name>
      <uri>https://stocksharp.com/users/1/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;a href="https://stocksharp.com/store/matlab/" title="MatLab - integration StockSharp with MatLab application"&gt;MatLab&lt;/a&gt; (v5.0.154):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost. &lt;br /&gt;Backtesting supports stop orders. Strategies can use local and server stop-orders. &lt;br /&gt;MyTrade. GetPosition extension returns non nullable decimal.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/interactivebrokers/" title="Interactive Brokers connector"&gt;InteractiveBrokers connector&lt;/a&gt; (v5.0.159):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/micex/" title="ASTSBridge"&gt;ASTSBridge&lt;/a&gt; (v5.0.161):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/cgate-plaza/" title="Plaza connector"&gt;Plaza&lt;/a&gt; (v5.0.165):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/transaq/" title="Transaq"&gt;Transaq&lt;/a&gt; (v5.0.159):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/lmax/" title="LMAX"&gt;LMAX&lt;/a&gt; (v5.0.158):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/fix_fast/" title="FIX/FAST"&gt;FIX&lt;/a&gt; (v5.0.173):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/fast/" title="FAST"&gt;FAST connector&lt;/a&gt; (v5.0.7):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/iqfeed/" title="IQFeed"&gt;IQFeed&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/rss-connector/" title="RSS"&gt;RSS&lt;/a&gt; (v5.0.159):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/barchart/" title="BarChart"&gt;BarChart&lt;/a&gt; (v5.0.159):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/rithmic/" title="Rithmic"&gt;Rithmic&lt;/a&gt; (v5.0.161):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/twime/" title="TWIME"&gt;TWIME&lt;/a&gt; (v5.0.160):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/spbex/" title=" SpbEX"&gt;SpbEX&lt;/a&gt; (v5.0.153):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/quanthouse/" title="QuantFEED"&gt;QuantFEED&lt;/a&gt; (v5.0.161):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/alphavantage/" title="AlphaVantage"&gt;AlphaVantage&lt;/a&gt; (v5.0.159):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/alor-history/" title="AlorHistory"&gt;AlorHistory&lt;/a&gt; (v5.0.159):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/dukascopy/" title="DukasCopy"&gt;DukasCopy&lt;/a&gt; (v5.0.159):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/yahoo-finance/" title="Yahoo Finance"&gt;Yahoo Finance&lt;/a&gt; (v5.0.159):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/finamconnector/" title="Finam"&gt;Finam connector&lt;/a&gt; (v5.0.160):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/mfd/" title="MFD"&gt;MFD&lt;/a&gt; (v5.0.159):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bibox/" title="Bibox"&gt;Bibox&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/binance/" title="Binance"&gt;Binance&lt;/a&gt; (v5.0.161):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitalong/" title=" S#.Bitalong"&gt;Bitalong&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitbank/" title="Bitbank"&gt;Bitbank&lt;/a&gt; (v5.0.157):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitexbook/" title="Bitexbook"&gt;Bitexbook&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitfinex/" title="Bitfinex"&gt;Bitfinex&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bithumb/" title="Bithumb"&gt;Bithumb&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitmax/" title="Bitmax"&gt;BitMax&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitmex/" title="Bitmex"&gt;Bitmex&lt;/a&gt; (v5.0.158):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitstamp/" title="Bitstamp"&gt;BitStamp&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bittrex/" title="Bittrex"&gt;Bittrex&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitz/" title="BitZ"&gt;BitZ&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/btce/" title="Btce"&gt;Btce&lt;/a&gt; (v5.0.155):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bw/" title="BW "&gt;BW&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/cex/" title="CEX"&gt;Cex&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinbase/" title=" S#.Coinbase"&gt;Coinbase&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinbene/" title="CoinBene"&gt;CoinBene&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coincap/" title="CoinCap"&gt;CoinCap&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coincheck/" title="Coincheck"&gt;Coincheck&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinex/" title="CoinEx"&gt;CoinEx&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinexchange/" title="CoinExchange"&gt;CoinExchange&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinhub/" title="CoinHub"&gt;CoinHub&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinigy/" title="Coinigy"&gt;Coinigy&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/cryptopia/" title="Cryptopia"&gt;Cryptopia&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/deribit/" title="Deribit"&gt;Deribit&lt;/a&gt; (v5.0.160):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/digifinex/" title=" S#.DigiFinex"&gt;Digifinex&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/digitexfutures/" title="DigitexFutures"&gt;DigitexFutures&lt;/a&gt; (v5.0.157):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/exmo/" title="Exmo"&gt;Exmo&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/fatbtc/" title="FatBTC"&gt;FatBtc&lt;/a&gt; (v5.0.155):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/gdax/" title="GDAX"&gt;Gdax&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/gopax/" title="GoPax"&gt;Gopax&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/hitbtc/" title="HitBTC"&gt;HitBtc&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/hotbit/" title="Hotbit"&gt;Hotbit&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/huobi/" title="HTX connector"&gt;HTX connector&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/idax/" title="IDAX"&gt;Idax&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/kraken/" title="Kraken"&gt;Kraken&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/kucoin/" title="KuCoin"&gt;Kucoin&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/latoken/" title="Latoken"&gt;Latoken&lt;/a&gt; (v5.0.155):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/lbank/" title="LBank"&gt;LBank&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/liqui/" title="Liqui"&gt;Liqui&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/livecoin/" title="LiveCoin"&gt;LiveCoin&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/okcoin/" title="OKCoin"&gt;Okcoin&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/okex/" title="OKX connector"&gt;OKX&lt;/a&gt; (v5.0.161):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/poloniex/" title="Poloniex"&gt;Poloniex&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/prizmbit/" title="PrizmBit"&gt;PrizmBit&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/quoinex/" title="Quoinex"&gt;Quoinex&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/tradeogre/" title="TradeOgre"&gt;TradeOgre&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/upbit/" title="Upbit "&gt;Upbit&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/yobit/" title="Yobit"&gt;Yobit&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/zaif/" title="Zaif"&gt;Zaif&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/zb/" title="ZB "&gt;ZB&lt;/a&gt; (v5.0.156):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/trading-terminal/" title="Terminal - free trading terminal and charting application for manual trading"&gt;Terminal&lt;/a&gt; (v5.0.162):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost. &lt;br /&gt;Backtesting supports stop orders. Strategies can use local and server stop-orders. &lt;br /&gt;MyTrade. GetPosition extension returns non nullable decimal. &lt;br /&gt;IChart. Areas property type changed INotifyList -&amp;gt; IEnumerable &lt;br /&gt;ProtectPositionDiagramElement. Can receive trades from multiple sources. Tracks own trades. &lt;br /&gt;IChart refactoring.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/strategy-designer/" title="Designer: A Free App for Creating Algorithmic Trading Strategies Without Coding"&gt;Designer&lt;/a&gt; (v5.0.163):&lt;br /&gt;Removed default min and max prices for backtesting. &lt;br /&gt;DESIGNER-204 Fix publishing after prev canceled attempt. &lt;br /&gt;Fix biding ribbon publish, export and delete buttons. &lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost. &lt;br /&gt;Backtesting supports stop orders. Strategies can use local and server stop-orders. &lt;br /&gt;MyTrade. GetPosition extension returns non nullable decimal. &lt;br /&gt;IChart. Areas property type changed INotifyList -&amp;gt; IEnumerable &lt;br /&gt;ProtectPositionDiagramElement. Can receive trades from multiple sources. Tracks own trades. &lt;br /&gt;IChart refactoring.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/market-data-downloader/" title="Hydra free market data downloader and database"&gt;Hydra&lt;/a&gt; (v5.0.166):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost. &lt;br /&gt;Backtesting supports stop orders. Strategies can use local and server stop-orders. &lt;br /&gt;MyTrade. GetPosition extension returns non nullable decimal. &lt;br /&gt;IChart. Areas property type changed INotifyList -&amp;gt; IEnumerable &lt;br /&gt;ProtectPositionDiagramElement. Can receive trades from multiple sources. Tracks own trades. &lt;br /&gt;IChart refactoring.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/udpdumper/" title="UDP Dumper"&gt;UDP Dumper&lt;/a&gt; (v5.0.133):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost. &lt;br /&gt;Backtesting supports stop orders. Strategies can use local and server stop-orders. &lt;br /&gt;MyTrade. GetPosition extension returns non nullable decimal. &lt;br /&gt;IChart. Areas property type changed INotifyList -&amp;gt; IEnumerable &lt;br /&gt;ProtectPositionDiagramElement. Can receive trades from multiple sources. Tracks own trades.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/oanda/" title="Oanda"&gt;Oanda&lt;/a&gt; (v5.0.158):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/udpdumper_console/" title="UDP Dumper. Console version"&gt;UDPDumper.Console&lt;/a&gt; (v5.0.120):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/quiklua/" title="Quik"&gt;QUIK&lt;/a&gt; (v5.0.155):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/mt4/" title=" S#.MT4"&gt;MT 4&lt;/a&gt; (v5.0.151):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/mt5/" title="MT5"&gt;MT 5&lt;/a&gt; (v5.0.150):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/moex-iss/" title="MOEX ISS"&gt;MOEX ISS&lt;/a&gt; (v5.0.32):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/runner/" title="Runner - cross platform application to run any types of strategies"&gt;Runner&lt;/a&gt; (v5.0.21):&lt;br /&gt;IChart. Areas property type changed INotifyList -&amp;gt; IEnumerable &lt;br /&gt;IChart refactoring. &lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost. &lt;br /&gt;Backtesting supports stop orders. Strategies can use local and server stop-orders. &lt;br /&gt;MyTrade. GetPosition extension returns non nullable decimal. &lt;br /&gt;ProtectPositionDiagramElement. Can receive trades from multiple sources. Tracks own trades.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/alor/" title="Alor connector"&gt;Alor&lt;/a&gt; (v5.0.30):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/tinkoff/" title="Tinkoff connector"&gt;Tinkoff&lt;/a&gt; (v5.0.30):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/polygonio/" title="PolygonIO connector"&gt;PolygonIO&lt;/a&gt; (v5.0.21):&lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/alpaca/" title="Alpaca Markets connector"&gt;Alpaca Markets&lt;/a&gt; (v5.0.1):&lt;br /&gt;auto change StockFeed on iex for demo mode. &lt;br /&gt;Unit. IsSet extension. &lt;br /&gt;SecurityId. GetHashCode performance boost.&lt;br /&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/25479/</id>
    <title type="text">Release notes 2/14/2024</title>
    <published>2024-02-14T21:23:02Z</published>
    <updated>2024-02-14T21:23:02Z</updated>
    <author>
      <name>StockSharp</name>
      <uri>https://stocksharp.com/users/1/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;a href="https://stocksharp.com/store/matlab/" title="MatLab - integration StockSharp with MatLab application"&gt;MatLab&lt;/a&gt; (v5.0.153):&lt;br /&gt;IIndicatorValue. GetValue accepts field. &lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/interactivebrokers/" title="Interactive Brokers connector"&gt;InteractiveBrokers connector&lt;/a&gt; (v5.0.158):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/micex/" title="ASTSBridge"&gt;ASTSBridge&lt;/a&gt; (v5.0.160):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/cgate-plaza/" title="Plaza connector"&gt;Plaza&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/transaq/" title="Transaq"&gt;Transaq&lt;/a&gt; (v5.0.158):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/lmax/" title="LMAX"&gt;LMAX&lt;/a&gt; (v5.0.157):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/fix_fast/" title="FIX/FAST"&gt;FIX&lt;/a&gt; (v5.0.172):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/fast/" title="FAST"&gt;FAST connector&lt;/a&gt; (v5.0.6):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/iqfeed/" title="IQFeed"&gt;IQFeed&lt;/a&gt; (v5.0.155):&lt;br /&gt;WithEnforcedCancellation usage. &lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/rss-connector/" title="RSS"&gt;RSS&lt;/a&gt; (v5.0.158):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/barchart/" title="BarChart"&gt;BarChart&lt;/a&gt; (v5.0.158):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/rithmic/" title="Rithmic"&gt;Rithmic&lt;/a&gt; (v5.0.160):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/twime/" title="TWIME"&gt;TWIME&lt;/a&gt; (v5.0.159):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/spbex/" title=" SpbEX"&gt;SpbEX&lt;/a&gt; (v5.0.152):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/quanthouse/" title="QuantFEED"&gt;QuantFEED&lt;/a&gt; (v5.0.160):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/alphavantage/" title="AlphaVantage"&gt;AlphaVantage&lt;/a&gt; (v5.0.158):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/alor-history/" title="AlorHistory"&gt;AlorHistory&lt;/a&gt; (v5.0.158):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/dukascopy/" title="DukasCopy"&gt;DukasCopy&lt;/a&gt; (v5.0.158):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/yahoo-finance/" title="Yahoo Finance"&gt;Yahoo Finance&lt;/a&gt; (v5.0.158):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/finamconnector/" title="Finam"&gt;Finam connector&lt;/a&gt; (v5.0.159):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request. &lt;br /&gt;Put runtime info into bug reports.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/mfd/" title="MFD"&gt;MFD&lt;/a&gt; (v5.0.158):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bibox/" title="Bibox"&gt;Bibox&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/binance/" title="Binance"&gt;Binance&lt;/a&gt; (v5.0.160):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitalong/" title=" S#.Bitalong"&gt;Bitalong&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitbank/" title="Bitbank"&gt;Bitbank&lt;/a&gt; (v5.0.156):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitexbook/" title="Bitexbook"&gt;Bitexbook&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitfinex/" title="Bitfinex"&gt;Bitfinex&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bithumb/" title="Bithumb"&gt;Bithumb&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitmax/" title="Bitmax"&gt;BitMax&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitmex/" title="Bitmex"&gt;Bitmex&lt;/a&gt; (v5.0.157):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitstamp/" title="Bitstamp"&gt;BitStamp&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bittrex/" title="Bittrex"&gt;Bittrex&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitz/" title="BitZ"&gt;BitZ&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/btce/" title="Btce"&gt;Btce&lt;/a&gt; (v5.0.154):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bw/" title="BW "&gt;BW&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/cex/" title="CEX"&gt;Cex&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinbase/" title=" S#.Coinbase"&gt;Coinbase&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinbene/" title="CoinBene"&gt;CoinBene&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coincap/" title="CoinCap"&gt;CoinCap&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coincheck/" title="Coincheck"&gt;Coincheck&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinex/" title="CoinEx"&gt;CoinEx&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinexchange/" title="CoinExchange"&gt;CoinExchange&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinhub/" title="CoinHub"&gt;CoinHub&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinigy/" title="Coinigy"&gt;Coinigy&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/cryptopia/" title="Cryptopia"&gt;Cryptopia&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/deribit/" title="Deribit"&gt;Deribit&lt;/a&gt; (v5.0.159):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/digifinex/" title=" S#.DigiFinex"&gt;Digifinex&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/digitexfutures/" title="DigitexFutures"&gt;DigitexFutures&lt;/a&gt; (v5.0.156):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/exmo/" title="Exmo"&gt;Exmo&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/fatbtc/" title="FatBTC"&gt;FatBtc&lt;/a&gt; (v5.0.154):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/gdax/" title="GDAX"&gt;Gdax&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/gopax/" title="GoPax"&gt;Gopax&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/hitbtc/" title="HitBTC"&gt;HitBtc&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/hotbit/" title="Hotbit"&gt;Hotbit&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/huobi/" title="HTX connector"&gt;HTX connector&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/idax/" title="IDAX"&gt;Idax&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/kraken/" title="Kraken"&gt;Kraken&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/kucoin/" title="KuCoin"&gt;Kucoin&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/latoken/" title="Latoken"&gt;Latoken&lt;/a&gt; (v5.0.154):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/lbank/" title="LBank"&gt;LBank&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/liqui/" title="Liqui"&gt;Liqui&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/livecoin/" title="LiveCoin"&gt;LiveCoin&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/okcoin/" title="OKCoin"&gt;Okcoin&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/okex/" title="OKX connector"&gt;OKX&lt;/a&gt; (v5.0.160):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/poloniex/" title="Poloniex"&gt;Poloniex&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/prizmbit/" title="PrizmBit"&gt;PrizmBit&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/quoinex/" title="Quoinex"&gt;Quoinex&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/tradeogre/" title="TradeOgre"&gt;TradeOgre&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/upbit/" title="Upbit "&gt;Upbit&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/yobit/" title="Yobit"&gt;Yobit&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/zaif/" title="Zaif"&gt;Zaif&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/zb/" title="ZB "&gt;ZB&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/trading-terminal/" title="Terminal - free trading terminal and charting application for manual trading"&gt;Terminal&lt;/a&gt; (v5.0.160):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request. &lt;br /&gt;IIndicatorValue. GetValue accepts field. &lt;br /&gt;Put runtime info into bug reports. &lt;br /&gt;IndicatorDiagramElement. Display Unit, date, time, enum properties. &lt;br /&gt;Handle invalid image uri.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/strategy-designer/" title="Designer: A Free App for Creating Algorithmic Trading Strategies Without Coding"&gt;Designer&lt;/a&gt; (v5.0.161):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request. &lt;br /&gt;IIndicatorValue. GetValue accepts field. &lt;br /&gt;Put runtime info into bug reports. &lt;br /&gt;IndicatorDiagramElement. Display Unit, date, time, enum properties. &lt;br /&gt;Handle invalid image uri.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/market-data-downloader/" title="Hydra free market data downloader and database"&gt;Hydra&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request. &lt;br /&gt;IIndicatorValue. GetValue accepts field. &lt;br /&gt;Put runtime info into bug reports. &lt;br /&gt;IndicatorDiagramElement. Display Unit, date, time, enum properties. &lt;br /&gt;Handle invalid image uri.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/udpdumper/" title="UDP Dumper"&gt;UDP Dumper&lt;/a&gt; (v5.0.131):&lt;br /&gt;IndicatorDiagramElement. Display Unit, date, time, enum properties. &lt;br /&gt;IIndicatorValue. GetValue accepts field. &lt;br /&gt;AsyncMessageProcessor. Fix handling error request. &lt;br /&gt;Handle invalid image uri.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/oanda/" title="Oanda"&gt;Oanda&lt;/a&gt; (v5.0.157):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/udpdumper_console/" title="UDP Dumper. Console version"&gt;UDPDumper.Console&lt;/a&gt; (v5.0.119):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/quiklua/" title="Quik"&gt;QUIK&lt;/a&gt; (v5.0.154):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/mt4/" title=" S#.MT4"&gt;MT 4&lt;/a&gt; (v5.0.150):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/mt5/" title="MT5"&gt;MT 5&lt;/a&gt; (v5.0.149):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/moex-iss/" title="MOEX ISS"&gt;MOEX ISS&lt;/a&gt; (v5.0.31):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/runner/" title="Runner - cross platform application to run any types of strategies"&gt;Runner&lt;/a&gt; (v5.0.19):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request. &lt;br /&gt;IIndicatorValue. GetValue accepts field. &lt;br /&gt;Put runtime info into bug reports. &lt;br /&gt;IndicatorDiagramElement. Display Unit, date, time, enum properties.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/alor/" title="Alor connector"&gt;Alor&lt;/a&gt; (v5.0.29):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/tinkoff/" title="Tinkoff connector"&gt;Tinkoff&lt;/a&gt; (v5.0.29):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/polygonio/" title="PolygonIO connector"&gt;PolygonIO&lt;/a&gt; (v5.0.20):&lt;br /&gt;WithEnforcedCancellation usage. &lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/alpaca/" title="Alpaca Markets connector"&gt;Alpaca Markets&lt;/a&gt; (v5.0.0):&lt;br /&gt;AsyncMessageProcessor. Fix handling error request.&lt;br /&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/25469/</id>
    <title type="text">Release notes 2/12/2024</title>
    <published>2024-02-12T18:48:15Z</published>
    <updated>2024-02-12T18:48:15Z</updated>
    <author>
      <name>StockSharp</name>
      <uri>https://stocksharp.com/users/1/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;a href="https://stocksharp.com/store/trading-terminal/" title="Terminal - free trading terminal and charting application for manual trading"&gt;Terminal&lt;/a&gt; (v5.0.159):&lt;br /&gt;MarketDataPanel. Fix saving changed while tf and dates range changed. &lt;br /&gt;DESIGNER-203 Fix time out download from QUIK and memory issues.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/strategy-designer/" title="Designer: A Free App for Creating Algorithmic Trading Strategies Without Coding"&gt;Designer&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarketDataPanel. Fix saving changed while tf and dates range changed. &lt;br /&gt;DESIGNER-203 Fix time out download from QUIK and memory issues.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/market-data-downloader/" title="Hydra free market data downloader and database"&gt;Hydra&lt;/a&gt; (v5.0.163):&lt;br /&gt;MarketDataPanel. Fix saving changed while tf and dates range changed. &lt;br /&gt;DESIGNER-203 Fix time out download from QUIK and memory issues.&lt;br /&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/25467/</id>
    <title type="text">Release notes 2/12/2024</title>
    <published>2024-02-12T17:03:38Z</published>
    <updated>2024-02-12T17:03:38Z</updated>
    <author>
      <name>StockSharp</name>
      <uri>https://stocksharp.com/users/1/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;a href="https://stocksharp.com/store/matlab/" title="MatLab - integration StockSharp with MatLab application"&gt;MatLab&lt;/a&gt; (v5.0.152):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture. &lt;br /&gt;BasketMarketDataStorage multi treading issue fix. &lt;br /&gt;IOrderBookSource &lt;br /&gt;Strategy. Security and Portfolio are optional. &lt;br /&gt;Fix news subscribe.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/interactivebrokers/" title="Interactive Brokers connector"&gt;InteractiveBrokers connector&lt;/a&gt; (v5.0.157):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/micex/" title="ASTSBridge"&gt;ASTSBridge&lt;/a&gt; (v5.0.159):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/cgate-plaza/" title="Plaza connector"&gt;Plaza&lt;/a&gt; (v5.0.163):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/transaq/" title="Transaq"&gt;Transaq&lt;/a&gt; (v5.0.157):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/lmax/" title="LMAX"&gt;LMAX&lt;/a&gt; (v5.0.156):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/fix_fast/" title="FIX/FAST"&gt;FIX&lt;/a&gt; (v5.0.171):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/fast/" title="FAST"&gt;FAST connector&lt;/a&gt; (v5.0.5):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/iqfeed/" title="IQFeed"&gt;IQFeed&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/rss-connector/" title="RSS"&gt;RSS&lt;/a&gt; (v5.0.157):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/barchart/" title="BarChart"&gt;BarChart&lt;/a&gt; (v5.0.157):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/rithmic/" title="Rithmic"&gt;Rithmic&lt;/a&gt; (v5.0.159):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/twime/" title="TWIME"&gt;TWIME&lt;/a&gt; (v5.0.158):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/spbex/" title=" SpbEX"&gt;SpbEX&lt;/a&gt; (v5.0.151):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/quanthouse/" title="QuantFEED"&gt;QuantFEED&lt;/a&gt; (v5.0.159):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/alphavantage/" title="AlphaVantage"&gt;AlphaVantage&lt;/a&gt; (v5.0.157):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/alor-history/" title="AlorHistory"&gt;AlorHistory&lt;/a&gt; (v5.0.157):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/dukascopy/" title="DukasCopy"&gt;DukasCopy&lt;/a&gt; (v5.0.157):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/yahoo-finance/" title="Yahoo Finance"&gt;Yahoo Finance&lt;/a&gt; (v5.0.157):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/finamconnector/" title="Finam"&gt;Finam connector&lt;/a&gt; (v5.0.158):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture. &lt;br /&gt;WebApiHelper. IsAvailable, GetCurrency extensions.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/mfd/" title="MFD"&gt;MFD&lt;/a&gt; (v5.0.157):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bibox/" title="Bibox"&gt;Bibox&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/binance/" title="Binance"&gt;Binance&lt;/a&gt; (v5.0.159):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitalong/" title=" S#.Bitalong"&gt;Bitalong&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitbank/" title="Bitbank"&gt;Bitbank&lt;/a&gt; (v5.0.155):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitexbook/" title="Bitexbook"&gt;Bitexbook&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitfinex/" title="Bitfinex"&gt;Bitfinex&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bithumb/" title="Bithumb"&gt;Bithumb&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitmax/" title="Bitmax"&gt;BitMax&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitmex/" title="Bitmex"&gt;Bitmex&lt;/a&gt; (v5.0.156):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitstamp/" title="Bitstamp"&gt;BitStamp&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bittrex/" title="Bittrex"&gt;Bittrex&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitz/" title="BitZ"&gt;BitZ&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/btce/" title="Btce"&gt;Btce&lt;/a&gt; (v5.0.153):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bw/" title="BW "&gt;BW&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/cex/" title="CEX"&gt;Cex&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinbase/" title=" S#.Coinbase"&gt;Coinbase&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinbene/" title="CoinBene"&gt;CoinBene&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coincap/" title="CoinCap"&gt;CoinCap&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coincheck/" title="Coincheck"&gt;Coincheck&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinex/" title="CoinEx"&gt;CoinEx&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinexchange/" title="CoinExchange"&gt;CoinExchange&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinhub/" title="CoinHub"&gt;CoinHub&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinigy/" title="Coinigy"&gt;Coinigy&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/cryptopia/" title="Cryptopia"&gt;Cryptopia&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/deribit/" title="Deribit"&gt;Deribit&lt;/a&gt; (v5.0.158):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/digifinex/" title=" S#.DigiFinex"&gt;Digifinex&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/digitexfutures/" title="DigitexFutures"&gt;DigitexFutures&lt;/a&gt; (v5.0.155):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/exmo/" title="Exmo"&gt;Exmo&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/fatbtc/" title="FatBTC"&gt;FatBtc&lt;/a&gt; (v5.0.153):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/gdax/" title="GDAX"&gt;Gdax&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/gopax/" title="GoPax"&gt;Gopax&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/hitbtc/" title="HitBTC"&gt;HitBtc&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/hotbit/" title="Hotbit"&gt;Hotbit&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/huobi/" title="HTX connector"&gt;HTX connector&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/idax/" title="IDAX"&gt;Idax&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/kraken/" title="Kraken"&gt;Kraken&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/kucoin/" title="KuCoin"&gt;Kucoin&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/latoken/" title="Latoken"&gt;Latoken&lt;/a&gt; (v5.0.153):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/lbank/" title="LBank"&gt;LBank&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/liqui/" title="Liqui"&gt;Liqui&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/livecoin/" title="LiveCoin"&gt;LiveCoin&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/okcoin/" title="OKCoin"&gt;Okcoin&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/okex/" title="OKX connector"&gt;OKX&lt;/a&gt; (v5.0.159):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/poloniex/" title="Poloniex"&gt;Poloniex&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/prizmbit/" title="PrizmBit"&gt;PrizmBit&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/quoinex/" title="Quoinex"&gt;Quoinex&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/tradeogre/" title="TradeOgre"&gt;TradeOgre&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/upbit/" title="Upbit "&gt;Upbit&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/yobit/" title="Yobit"&gt;Yobit&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/zaif/" title="Zaif"&gt;Zaif&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/zb/" title="ZB "&gt;ZB&lt;/a&gt; (v5.0.154):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/trading-terminal/" title="Terminal - free trading terminal and charting application for manual trading"&gt;Terminal&lt;/a&gt; (v5.0.158):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture. &lt;br /&gt;logo updates. &lt;br /&gt;Design time fixes. &lt;br /&gt;SS-292 CandleSettingsEditor shows error message as red border. &lt;br /&gt;TimeSpanEditor. MinValue, MaxValue properties added. &lt;br /&gt;BasketMarketDataStorage multi treading issue fix. &lt;br /&gt;IOrderBookSource &lt;br /&gt;Strategy. Security and Portfolio are optional. &lt;br /&gt;Fix news subscribe. &lt;br /&gt;DESIGNER-199 MarketDepthPanelDiagramElement reverted back source selection &lt;br /&gt;LoggedInCommand accepts Client arg. &lt;br /&gt;WebApiHelper. IsAvailable, GetCurrency extensions.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/strategy-designer/" title="Designer: A Free App for Creating Algorithmic Trading Strategies Without Coding"&gt;Designer&lt;/a&gt; (v5.0.159):&lt;br /&gt;Installing strategies from Gallery. &lt;br /&gt;DESIGNER-199 MarketDepthPanelDiagramElement reverted back source selection &lt;br /&gt;Strategy. Security and Portfolio are optional. &lt;br /&gt;DESIGNER-200 Fix clear chart in live mode. &lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture. &lt;br /&gt;logo updates. &lt;br /&gt;Design time fixes. &lt;br /&gt;SS-292 CandleSettingsEditor shows error message as red border. &lt;br /&gt;TimeSpanEditor. MinValue, MaxValue properties added. &lt;br /&gt;BasketMarketDataStorage multi treading issue fix. &lt;br /&gt;IOrderBookSource &lt;br /&gt;Fix news subscribe. &lt;br /&gt;DESIGNER-201 Fix show menu items in designer. &lt;br /&gt;LoggedInCommand accepts Client arg. &lt;br /&gt;WebApiHelper. IsAvailable, GetCurrency extensions. &lt;br /&gt;InstallerRepoProvider moved to Studio.Nuget.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/market-data-downloader/" title="Hydra free market data downloader and database"&gt;Hydra&lt;/a&gt; (v5.0.162):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture. &lt;br /&gt;logo updates. &lt;br /&gt;Design time fixes. &lt;br /&gt;SS-292 CandleSettingsEditor shows error message as red border. &lt;br /&gt;TimeSpanEditor. MinValue, MaxValue properties added. &lt;br /&gt;BasketMarketDataStorage multi treading issue fix. &lt;br /&gt;IOrderBookSource &lt;br /&gt;Strategy. Security and Portfolio are optional. &lt;br /&gt;Fix news subscribe. &lt;br /&gt;DESIGNER-199 MarketDepthPanelDiagramElement reverted back source selection &lt;br /&gt;LoggedInCommand accepts Client arg. &lt;br /&gt;WebApiHelper. IsAvailable, GetCurrency extensions.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/udpdumper/" title="UDP Dumper"&gt;UDP Dumper&lt;/a&gt; (v5.0.130):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture. &lt;br /&gt;logo updates. &lt;br /&gt;Design time fixes. &lt;br /&gt;SS-292 CandleSettingsEditor shows error message as red border. &lt;br /&gt;TimeSpanEditor. MinValue, MaxValue properties added. &lt;br /&gt;BasketMarketDataStorage multi treading issue fix. &lt;br /&gt;IOrderBookSource &lt;br /&gt;Strategy. Security and Portfolio are optional. &lt;br /&gt;Fix news subscribe. &lt;br /&gt;DESIGNER-199 MarketDepthPanelDiagramElement reverted back source selection&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/oanda/" title="Oanda"&gt;Oanda&lt;/a&gt; (v5.0.156):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/udpdumper_console/" title="UDP Dumper. Console version"&gt;UDPDumper.Console&lt;/a&gt; (v5.0.118):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/quiklua/" title="Quik"&gt;QUIK&lt;/a&gt; (v5.0.153):&lt;br /&gt;Removed QUIK7 legacy code. &lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/mt4/" title=" S#.MT4"&gt;MT 4&lt;/a&gt; (v5.0.149):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/mt5/" title="MT5"&gt;MT 5&lt;/a&gt; (v5.0.148):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/moex-iss/" title="MOEX ISS"&gt;MOEX ISS&lt;/a&gt; (v5.0.30):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/runner/" title="Runner - cross platform application to run any types of strategies"&gt;Runner&lt;/a&gt; (v5.0.18):&lt;br /&gt;Strategy. Security and Portfolio are optional. &lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture. &lt;br /&gt;BasketMarketDataStorage multi treading issue fix. &lt;br /&gt;IOrderBookSource &lt;br /&gt;Fix news subscribe. &lt;br /&gt;LoggedInCommand accepts Client arg. &lt;br /&gt;WebApiHelper. IsAvailable, GetCurrency extensions. &lt;br /&gt;DESIGNER-199 MarketDepthPanelDiagramElement reverted back source selection&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/alor/" title="Alor connector"&gt;Alor&lt;/a&gt; (v5.0.28):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/tinkoff/" title="Tinkoff connector"&gt;Tinkoff&lt;/a&gt; (v5.0.28):&lt;br /&gt;Fixes. &lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/polygonio/" title="PolygonIO connector"&gt;PolygonIO&lt;/a&gt; (v5.0.19):&lt;br /&gt;SS-302. AsyncMessageProcessor uses invariant culture.&lt;br /&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/25447/</id>
    <title type="text">Release notes 2/6/2024</title>
    <published>2024-02-06T11:40:41Z</published>
    <updated>2024-02-06T11:40:41Z</updated>
    <author>
      <name>StockSharp</name>
      <uri>https://stocksharp.com/users/1/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;a href="https://stocksharp.com/store/matlab/" title="MatLab - integration StockSharp with MatLab application"&gt;MatLab&lt;/a&gt; (v5.0.151):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs. &lt;br /&gt;SecurityCsvList multi-threading lookup fix.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/interactivebrokers/" title="Interactive Brokers connector"&gt;InteractiveBrokers connector&lt;/a&gt; (v5.0.156):&lt;br /&gt;v10.27.01 supported &lt;br /&gt;API 10.27 &lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/micex/" title="ASTSBridge"&gt;ASTSBridge&lt;/a&gt; (v5.0.158):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/cgate-plaza/" title="Plaza connector"&gt;Plaza&lt;/a&gt; (v5.0.162):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/transaq/" title="Transaq"&gt;Transaq&lt;/a&gt; (v5.0.156):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/lmax/" title="LMAX"&gt;LMAX&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/fix_fast/" title="FIX/FAST"&gt;FIX&lt;/a&gt; (v5.0.170):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/fast/" title="FAST"&gt;FAST connector&lt;/a&gt; (v5.0.4):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/iqfeed/" title="IQFeed"&gt;IQFeed&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/rss-connector/" title="RSS"&gt;RSS&lt;/a&gt; (v5.0.156):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/barchart/" title="BarChart"&gt;BarChart&lt;/a&gt; (v5.0.156):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/rithmic/" title="Rithmic"&gt;Rithmic&lt;/a&gt; (v5.0.158):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/twime/" title="TWIME"&gt;TWIME&lt;/a&gt; (v5.0.157):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/spbex/" title=" SpbEX"&gt;SpbEX&lt;/a&gt; (v5.0.150):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/quanthouse/" title="QuantFEED"&gt;QuantFEED&lt;/a&gt; (v5.0.158):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/alphavantage/" title="AlphaVantage"&gt;AlphaVantage&lt;/a&gt; (v5.0.156):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/alor-history/" title="AlorHistory"&gt;AlorHistory&lt;/a&gt; (v5.0.156):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/dukascopy/" title="DukasCopy"&gt;DukasCopy&lt;/a&gt; (v5.0.156):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/yahoo-finance/" title="Yahoo Finance"&gt;Yahoo Finance&lt;/a&gt; (v5.0.156):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/finamconnector/" title="Finam"&gt;Finam connector&lt;/a&gt; (v5.0.157):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/mfd/" title="MFD"&gt;MFD&lt;/a&gt; (v5.0.156):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bibox/" title="Bibox"&gt;Bibox&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/binance/" title="Binance"&gt;Binance&lt;/a&gt; (v5.0.158):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitalong/" title=" S#.Bitalong"&gt;Bitalong&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitbank/" title="Bitbank"&gt;Bitbank&lt;/a&gt; (v5.0.154):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitexbook/" title="Bitexbook"&gt;Bitexbook&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitfinex/" title="Bitfinex"&gt;Bitfinex&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bithumb/" title="Bithumb"&gt;Bithumb&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitmax/" title="Bitmax"&gt;BitMax&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitmex/" title="Bitmex"&gt;Bitmex&lt;/a&gt; (v5.0.154):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitstamp/" title="Bitstamp"&gt;BitStamp&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bittrex/" title="Bittrex"&gt;Bittrex&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitz/" title="BitZ"&gt;BitZ&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/btce/" title="Btce"&gt;Btce&lt;/a&gt; (v5.0.152):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bw/" title="BW "&gt;BW&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/cex/" title="CEX"&gt;Cex&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinbase/" title=" S#.Coinbase"&gt;Coinbase&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinbene/" title="CoinBene"&gt;CoinBene&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coincap/" title="CoinCap"&gt;CoinCap&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coincheck/" title="Coincheck"&gt;Coincheck&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinex/" title="CoinEx"&gt;CoinEx&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinexchange/" title="CoinExchange"&gt;CoinExchange&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinhub/" title="CoinHub"&gt;CoinHub&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinigy/" title="Coinigy"&gt;Coinigy&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/cryptopia/" title="Cryptopia"&gt;Cryptopia&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/deribit/" title="Deribit"&gt;Deribit&lt;/a&gt; (v5.0.157):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/digifinex/" title=" S#.DigiFinex"&gt;Digifinex&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/digitexfutures/" title="DigitexFutures"&gt;DigitexFutures&lt;/a&gt; (v5.0.154):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/exmo/" title="Exmo"&gt;Exmo&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/fatbtc/" title="FatBTC"&gt;FatBtc&lt;/a&gt; (v5.0.152):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/gdax/" title="GDAX"&gt;Gdax&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/gopax/" title="GoPax"&gt;Gopax&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/hitbtc/" title="HitBTC"&gt;HitBtc&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/hotbit/" title="Hotbit"&gt;Hotbit&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/huobi/" title="HTX connector"&gt;HTX connector&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/idax/" title="IDAX"&gt;Idax&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/kraken/" title="Kraken"&gt;Kraken&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/kucoin/" title="KuCoin"&gt;Kucoin&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/latoken/" title="Latoken"&gt;Latoken&lt;/a&gt; (v5.0.152):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/lbank/" title="LBank"&gt;LBank&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/liqui/" title="Liqui"&gt;Liqui&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/livecoin/" title="LiveCoin"&gt;LiveCoin&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/okcoin/" title="OKCoin"&gt;Okcoin&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/okex/" title="OKX connector"&gt;OKX&lt;/a&gt; (v5.0.158):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/poloniex/" title="Poloniex"&gt;Poloniex&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/prizmbit/" title="PrizmBit"&gt;PrizmBit&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/quoinex/" title="Quoinex"&gt;Quoinex&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/tradeogre/" title="TradeOgre"&gt;TradeOgre&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/upbit/" title="Upbit "&gt;Upbit&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/yobit/" title="Yobit"&gt;Yobit&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/zaif/" title="Zaif"&gt;Zaif&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/zb/" title="ZB "&gt;ZB&lt;/a&gt; (v5.0.153):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/trading-terminal/" title="Terminal - free trading terminal and charting application for manual trading"&gt;Terminal&lt;/a&gt; (v5.0.157):&lt;br /&gt;Hide Auto button in ConnectorWindow &lt;br /&gt;DESIGNER-116 Fix expandable editors &lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs. &lt;br /&gt;SecurityCsvList multi-threading lookup fix. &lt;br /&gt;TRML-24 Fix show order book.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/strategy-designer/" title="Designer: A Free App for Creating Algorithmic Trading Strategies Without Coding"&gt;Designer&lt;/a&gt; (v5.0.158):&lt;br /&gt;Optimizer supported nullable params. &lt;br /&gt;DESIGNER-116 Fix expandable editors &lt;br /&gt;Hide Auto button in ConnectorWindow &lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs. &lt;br /&gt;SecurityCsvList multi-threading lookup fix. &lt;br /&gt;TRML-24 Fix show order book.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/market-data-downloader/" title="Hydra free market data downloader and database"&gt;Hydra&lt;/a&gt; (v5.0.161):&lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;Reduced info logs. &lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;SecurityCsvList multi-threading lookup fix. &lt;br /&gt;Hide Auto button in ConnectorWindow &lt;br /&gt;DESIGNER-116 Fix expandable editors &lt;br /&gt;TRML-24 Fix show order book.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/udpdumper/" title="UDP Dumper"&gt;UDP Dumper&lt;/a&gt; (v5.0.129):&lt;br /&gt;Hide Auto button in ConnectorWindow &lt;br /&gt;DESIGNER-116 Fix expandable editors &lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs. &lt;br /&gt;SecurityCsvList multi-threading lookup fix.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/oanda/" title="Oanda"&gt;Oanda&lt;/a&gt; (v5.0.155):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/udpdumper_console/" title="UDP Dumper. Console version"&gt;UDPDumper.Console&lt;/a&gt; (v5.0.117):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/quiklua/" title="Quik"&gt;QUIK&lt;/a&gt; (v5.0.152):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/mt4/" title=" S#.MT4"&gt;MT 4&lt;/a&gt; (v5.0.148):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/mt5/" title="MT5"&gt;MT 5&lt;/a&gt; (v5.0.147):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/moex-iss/" title="MOEX ISS"&gt;MOEX ISS&lt;/a&gt; (v5.0.29):&lt;br /&gt;Subscriptions cancellation fixes. &lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/runner/" title="Runner - cross platform application to run any types of strategies"&gt;Runner&lt;/a&gt; (v5.0.17):&lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs. &lt;br /&gt;SecurityCsvList multi-threading lookup fix.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/alor/" title="Alor connector"&gt;Alor&lt;/a&gt; (v5.0.27):&lt;br /&gt;Subscriptions cancellation fixes. &lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/tinkoff/" title="Tinkoff connector"&gt;Tinkoff&lt;/a&gt; (v5.0.27):&lt;br /&gt;Subscriptions cancellation fixes. &lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/polygonio/" title="PolygonIO connector"&gt;PolygonIO&lt;/a&gt; (v5.0.18):&lt;br /&gt;Subscriptions cancellation fixes. &lt;br /&gt;Fix set security type for indexes. &lt;br /&gt;AsyncMessageAdapter. FaultDelay property. &lt;br /&gt;Subscriptions supports fill gaps mode. &lt;br /&gt;AsyncMessageProcessor removed BaseLogReceiver inheritance. &lt;br /&gt;AsyncMessageProcessor dispose logic added. &lt;br /&gt;AsyncMessageAdapter. Fix unsubscribe requests. &lt;br /&gt;HandleMessageException -&amp;gt; CreateErrorResponse. &lt;br /&gt;PriorityQueue accepts subtractAbs arg. &lt;br /&gt;MessageQueueItem. Removed Task info. &lt;br /&gt;Reduced info logs.&lt;br /&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/25426/</id>
    <title type="text">Release notes 1/31/2024</title>
    <published>2024-01-31T19:28:44Z</published>
    <updated>2024-01-31T19:28:44Z</updated>
    <author>
      <name>StockSharp</name>
      <uri>https://stocksharp.com/users/1/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;a href="https://stocksharp.com/store/installer/" title="Installer - main installation tool for all applications"&gt;Installer&lt;/a&gt; (v5.0.144):&lt;br /&gt;Removed legacy code. &lt;br /&gt;removed custom priority initialization. &lt;br /&gt;ISLR-25 Prevent to download system files. &lt;br /&gt;Moved alls settings into single file &lt;br /&gt;islr-66: fix binding warning &lt;br /&gt;Dynamic language change. &lt;br /&gt;Change language from settings. &lt;br /&gt;ISLR-68 Show notification for new available products.&lt;br /&gt;&lt;br /&gt;</content>
  </entry>
</feed>