﻿<?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=5</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-11T18:44:26Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=community&amp;page=5" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/topic/25954/</id>
    <title type="text">Release notes 7/4/2024</title>
    <published>2024-07-04T20:36:58Z</published>
    <updated>2024-07-04T20:36:58Z</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.164):&lt;br /&gt;MarketEmulatorSettings. CandlePrice property. &lt;br /&gt;EntitiesExtensions. ShrinkPrice made public.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/finamconnector/" title="Finam"&gt;Finam connector&lt;/a&gt; (v5.0.171):&lt;br /&gt;EntitiesExtensions. ShrinkPrice made public.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/tradier/" title="Tradier connector"&gt;Tradier&lt;/a&gt; (v5.0.168):&lt;br /&gt;Support unsubscribe requests. &lt;br /&gt;Orders streaming fixes.&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.174):&lt;br /&gt;EntitiesExtensions. ShrinkPrice made public. &lt;br /&gt;LocalizedStrings.TryUpdateActiveLanguage &lt;br /&gt;MarketEmulatorSettings. CandlePrice property.&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.176):&lt;br /&gt;LocalizedStrings.TryUpdateActiveLanguage &lt;br /&gt;EntitiesExtensions. ShrinkPrice made public. &lt;br /&gt;MarketEmulatorSettings. CandlePrice property.&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.178):&lt;br /&gt;LocalizedStrings.TryUpdateActiveLanguage &lt;br /&gt;EntitiesExtensions. ShrinkPrice made public. &lt;br /&gt;MarketEmulatorSettings. CandlePrice property.&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.143):&lt;br /&gt;LocalizedStrings.TryUpdateActiveLanguage &lt;br /&gt;EntitiesExtensions. ShrinkPrice made public. &lt;br /&gt;MarketEmulatorSettings. CandlePrice property.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/quiklua/" title="Quik"&gt;QUIK&lt;/a&gt; (v5.0.161):&lt;br /&gt;Logs runtime version.&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.33):&lt;br /&gt;LocalizedStrings.TryUpdateActiveLanguage &lt;br /&gt;EntitiesExtensions. ShrinkPrice made public. &lt;br /&gt;MarketEmulatorSettings. CandlePrice property.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/hydra-server/" title="Hydra server"&gt;Hydra server&lt;/a&gt; (v5.0.38):&lt;br /&gt;EntitiesExtensions. ShrinkPrice made public. &lt;br /&gt;MarketEmulatorSettings. CandlePrice property.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bybit/" title="ByBit connector"&gt;ByBit&lt;/a&gt; (v5.0.2):&lt;br /&gt;TimeStampOffset &lt;br /&gt;ToArrayAsync moved to Ecng.Linq &lt;br /&gt;Trading fixes&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/ctrader/" title="cTrader connector"&gt;cTrader&lt;/a&gt; (v5.0.0):&lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods.&lt;br /&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/25919/</id>
    <title type="text">Release notes 6/23/2024</title>
    <published>2024-06-23T09:13:28Z</published>
    <updated>2024-06-23T09:13:32Z</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.163):&lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;Logo changes.&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.168):&lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property &lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/micex/" title="ASTSBridge"&gt;ASTSBridge&lt;/a&gt; (v5.0.170):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&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.174):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/transaq/" title="Transaq"&gt;Transaq&lt;/a&gt; (v5.0.169):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/lmax/" title="LMAX"&gt;LMAX&lt;/a&gt; (v5.0.167):&lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&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.185):&lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes. &lt;br /&gt;IMessageAdapter. ExtraSetup property &lt;br /&gt;Paths. TryBuildDocUrl&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/fast/" title="FAST"&gt;FAST connector&lt;/a&gt; (v5.0.17):&lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes. &lt;br /&gt;IMessageAdapter. ExtraSetup property&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/iqfeed/" title="IQFeed"&gt;IQFeed&lt;/a&gt; (v5.0.165):&lt;br /&gt;IQFeed marked as extra setup required. &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/rss-connector/" title="RSS"&gt;RSS&lt;/a&gt; (v5.0.168):&lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/barchart/" title="BarChart"&gt;BarChart&lt;/a&gt; (v5.0.168):&lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/rithmic/" title="Rithmic"&gt;Rithmic&lt;/a&gt; (v5.0.170):&lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/twime/" title="TWIME"&gt;TWIME&lt;/a&gt; (v5.0.169):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/spbex/" title=" SpbEX"&gt;SpbEX&lt;/a&gt; (v5.0.162):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/quanthouse/" title="QuantFEED"&gt;QuantFEED&lt;/a&gt; (v5.0.170):&lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/alphavantage/" title="AlphaVantage"&gt;AlphaVantage&lt;/a&gt; (v5.0.168):&lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/alor-history/" title="AlorHistory"&gt;AlorHistory&lt;/a&gt; (v5.0.168):&lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/dukascopy/" title="DukasCopy"&gt;DukasCopy&lt;/a&gt; (v5.0.168):&lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&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.168):&lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/finamconnector/" title="Finam"&gt;Finam connector&lt;/a&gt; (v5.0.170):&lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes. &lt;br /&gt;Paths. TryBuildDocUrl&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/mfd/" title="MFD"&gt;MFD&lt;/a&gt; (v5.0.168):&lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/tradier/" title="Tradier connector"&gt;Tradier&lt;/a&gt; (v5.0.167):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bibox/" title="Bibox"&gt;Bibox&lt;/a&gt; (v5.0.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/binance/" title="Binance"&gt;Binance&lt;/a&gt; (v5.0.170):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitalong/" title=" S#.Bitalong"&gt;Bitalong&lt;/a&gt; (v5.0.165):&lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitbank/" title="Bitbank"&gt;Bitbank&lt;/a&gt; (v5.0.166):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitexbook/" title="Bitexbook"&gt;Bitexbook&lt;/a&gt; (v5.0.165):&lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitfinex/" title="Bitfinex"&gt;Bitfinex&lt;/a&gt; (v5.0.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bithumb/" title="Bithumb"&gt;Bithumb&lt;/a&gt; (v5.0.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitmax/" title="Bitmax"&gt;BitMax&lt;/a&gt; (v5.0.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitmex/" title="Bitmex"&gt;Bitmex&lt;/a&gt; (v5.0.167):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitstamp/" title="Bitstamp"&gt;BitStamp&lt;/a&gt; (v5.0.165):&lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bittrex/" title="Bittrex"&gt;Bittrex&lt;/a&gt; (v5.0.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitz/" title="BitZ"&gt;BitZ&lt;/a&gt; (v5.0.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/btce/" title="Btce"&gt;Btce&lt;/a&gt; (v5.0.164):&lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bw/" title="BW "&gt;BW&lt;/a&gt; (v5.0.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/cex/" title="CEX"&gt;Cex&lt;/a&gt; (v5.0.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinbase/" title=" S#.Coinbase"&gt;Coinbase&lt;/a&gt; (v5.0.165):&lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinbene/" title="CoinBene"&gt;CoinBene&lt;/a&gt; (v5.0.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coincap/" title="CoinCap"&gt;CoinCap&lt;/a&gt; (v5.0.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coincheck/" title="Coincheck"&gt;Coincheck&lt;/a&gt; (v5.0.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinex/" title="CoinEx"&gt;CoinEx&lt;/a&gt; (v5.0.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinexchange/" title="CoinExchange"&gt;CoinExchange&lt;/a&gt; (v5.0.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinhub/" title="CoinHub"&gt;CoinHub&lt;/a&gt; (v5.0.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinigy/" title="Coinigy"&gt;Coinigy&lt;/a&gt; (v5.0.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/cryptopia/" title="Cryptopia"&gt;Cryptopia&lt;/a&gt; (v5.0.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/deribit/" title="Deribit"&gt;Deribit&lt;/a&gt; (v5.0.169):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/digifinex/" title=" S#.DigiFinex"&gt;Digifinex&lt;/a&gt; (v5.0.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/digitexfutures/" title="DigitexFutures"&gt;DigitexFutures&lt;/a&gt; (v5.0.166):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/exmo/" title="Exmo"&gt;Exmo&lt;/a&gt; (v5.0.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/fatbtc/" title="FatBTC"&gt;FatBtc&lt;/a&gt; (v5.0.164):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/gdax/" title="GDAX"&gt;Gdax&lt;/a&gt; (v5.0.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/gopax/" title="GoPax"&gt;Gopax&lt;/a&gt; (v5.0.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/hitbtc/" title="HitBTC"&gt;HitBtc&lt;/a&gt; (v5.0.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/hotbit/" title="Hotbit"&gt;Hotbit&lt;/a&gt; (v5.0.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&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.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/idax/" title="IDAX"&gt;Idax&lt;/a&gt; (v5.0.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/kraken/" title="Kraken"&gt;Kraken&lt;/a&gt; (v5.0.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/kucoin/" title="KuCoin"&gt;Kucoin&lt;/a&gt; (v5.0.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/latoken/" title="Latoken"&gt;Latoken&lt;/a&gt; (v5.0.164):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/lbank/" title="LBank"&gt;LBank&lt;/a&gt; (v5.0.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/liqui/" title="Liqui"&gt;Liqui&lt;/a&gt; (v5.0.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/livecoin/" title="LiveCoin"&gt;LiveCoin&lt;/a&gt; (v5.0.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/okcoin/" title="OKCoin"&gt;Okcoin&lt;/a&gt; (v5.0.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/okex/" title="OKX connector"&gt;OKX&lt;/a&gt; (v5.0.170):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/poloniex/" title="Poloniex"&gt;Poloniex&lt;/a&gt; (v5.0.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/prizmbit/" title="PrizmBit"&gt;PrizmBit&lt;/a&gt; (v5.0.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/quoinex/" title="Quoinex"&gt;Quoinex&lt;/a&gt; (v5.0.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/tradeogre/" title="TradeOgre"&gt;TradeOgre&lt;/a&gt; (v5.0.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/upbit/" title="Upbit "&gt;Upbit&lt;/a&gt; (v5.0.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/yobit/" title="Yobit"&gt;Yobit&lt;/a&gt; (v5.0.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/zaif/" title="Zaif"&gt;Zaif&lt;/a&gt; (v5.0.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/zb/" title="ZB "&gt;ZB&lt;/a&gt; (v5.0.165):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&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.173):&lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes. &lt;br /&gt;IMessageAdapter. ExtraSetup property &lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;Zerodha logo. &lt;br /&gt;Logo fixes&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.175):&lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes. &lt;br /&gt;IMessageAdapter. ExtraSetup property &lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;Zerodha logo. &lt;br /&gt;Logo fixes&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.177):&lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes. &lt;br /&gt;IMessageAdapter. ExtraSetup property &lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;Zerodha logo. &lt;br /&gt;Logo fixes&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.142):&lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes. &lt;br /&gt;IMessageAdapter. ExtraSetup property &lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;Zerodha logo. &lt;br /&gt;Logo fixes&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/oanda/" title="Oanda"&gt;Oanda&lt;/a&gt; (v5.0.167):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&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.129):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/quiklua/" title="Quik"&gt;QUIK&lt;/a&gt; (v5.0.160):&lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes. &lt;br /&gt;IMessageAdapter. ExtraSetup property &lt;br /&gt;Paths. TryBuildDocUrl&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.157):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes. &lt;br /&gt;IMessageAdapter. ExtraSetup property&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/mt5/" title="MT5"&gt;MT 5&lt;/a&gt; (v5.0.155):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes. &lt;br /&gt;IMessageAdapter. ExtraSetup property&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.41):&lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&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.32):&lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes. &lt;br /&gt;IMessageAdapter. ExtraSetup property &lt;br /&gt;Paths. TryBuildDocUrl&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/alor/" title="Alor connector"&gt;Alor&lt;/a&gt; (v5.0.39):&lt;br /&gt;Fix subscription online status. &lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/tinkoff/" title="Tinkoff connector"&gt;Tinkoff&lt;/a&gt; (v5.0.39):&lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/hydra-server/" title="Hydra server"&gt;Hydra server&lt;/a&gt; (v5.0.37):&lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes. &lt;br /&gt;IMessageAdapter. ExtraSetup property &lt;br /&gt;Paths. TryBuildDocUrl&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/polygonio/" title="PolygonIO connector"&gt;PolygonIO&lt;/a&gt; (v5.0.30):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bybit/" title="ByBit connector"&gt;ByBit&lt;/a&gt; (v5.0.1):&lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;Fix subscription online status. &lt;br /&gt;Fix hist trades download. &lt;br /&gt;Fix download klines. &lt;br /&gt;Removed System.Linq.Async dependency. &lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&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.10):&lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/ctrader/" title="cTrader connector"&gt;cTrader&lt;/a&gt; (v5.0.0):&lt;br /&gt;IMessageAdapter. IsSupportCandlesUpdates, IsSupportCandlesPriceLevels converted into methods. &lt;br /&gt;Paths. TryBuildDocUrl &lt;br /&gt;IMessageAdapter. ExtraSetup property. &lt;br /&gt;Logo changes.&lt;br /&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/25913/</id>
    <title type="text">Join Us in Developing Connectors for Our Platform!</title>
    <published>2024-06-21T12:16:54Z</published>
    <updated>2024-06-21T12:31:47Z</updated>
    <author>
      <name>StockSharp</name>
      <uri>https://stocksharp.com/users/1/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <category term="connectors" />
    <content type="html">We are excited to announce an open invitation for anyone interested in developing connectors for our platform.&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a href='https://stocksharp.com/file/152135/connectors_develop.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.com/file/152135/connectors_develop.png?size=800x800" alt=""/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Why Participate?&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt; &lt;b&gt;Challenge Yourself&lt;/b&gt;: Developing connectors is an excellent opportunity to test your skills and expand your professional horizons.&lt;br /&gt;&lt;li&gt; &lt;b&gt;Promote Yourself&lt;/b&gt;: Showcase your developments on GitHub and to our community. Our repository on GitHub is one of the &lt;a target="_blank" href="https://github.com/search?q=trading&amp;amp;type=repositories" title="https://github.com/search?q=trading&amp;amp;type=repositories"&gt;most popular in the field of trading&lt;/a&gt;.&lt;br /&gt;&lt;li&gt; &lt;b&gt;Earn Money&lt;/b&gt;: If your connector is well-made, we are ready to offer it to clients through our marketplace, where you can sell your solutions. Learn more about the marketplace &lt;a href="https://stocksharp.com/store/?groups=8%252c33%252c36" title="https://stocksharp.com/store/?groups=8%252c33%252c36"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;li&gt; &lt;b&gt;Risk-Free Strategy&lt;/b&gt;: Developing and sharing your connectors is a risk-free way to gain recognition and potential income.&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;We not only allow the creation of custom connectors for our platform, but we also encourage it. We are ready to assist by answering your questions in our chat. Join us on Telegram: &lt;a target="_blank" href="https://t.me/stocksharpchat/361" title="https://t.me/stocksharpchat/361"&gt;https://t.me/stocksharpchat/361&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We have significantly expanded our documentation to help you with this. Detailed instructions on creating your own connectors can be found &lt;a href="https://doc.stocksharp.com/topics/api/connectors/creating_own_connector.html" title="https://doc.stocksharp.com/topics/api/connectors/creating_own_connector.html"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Additionally, we have made several connectors available as examples. You can check them out at the following link: &lt;a target="_blank" href="https://github.com/StockSharp/StockSharp/tree/master/Connectors/" title="https://github.com/StockSharp/StockSharp/tree/master/Connectors/"&gt;GitHub: StockSharp Connectors&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;We look forward to your contributions and ideas!</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/25905/</id>
    <title type="text">About subscription issues？</title>
    <published>2024-06-18T05:55:09Z</published>
    <updated>2024-06-18T05:58:51Z</updated>
    <author>
      <name>wujian</name>
      <uri>https://stocksharp.com/users/102370/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">What does it mean to subscribe to Pro, which does not support API？</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/25904/</id>
    <title type="text">New Connectors: Alpaca Markets, ByBit, PolygonIO</title>
    <published>2024-06-17T10:42:59Z</published>
    <updated>2024-06-17T12:40:42Z</updated>
    <author>
      <name>StockSharp</name>
      <uri>https://stocksharp.com/users/1/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <category term="alpaca" />
    <category term="bybit" />
    <category term="polygonio" />
    <content type="html">&lt;div align="center"&gt;&lt;b&gt;&lt;span style="font-size:140%"&gt;New Connectors on StockSharp!&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a href='https://stocksharp.com/file/152022/alpaca_bybit_polygonio.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.com/file/152022/alpaca_bybit_polygonio.png?size=800x800" alt="alpaca_bybit_polygonio.png" title="alpaca_bybit_polygonio.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;We are pleased to announce that new connectors have appeared on the StockSharp platform in recent months, significantly expanding our users&amp;#39; capabilities for trading and market analysis. We present to you the new connectors:&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. Alpaca Markets&lt;/b&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a href='https://stocksharp.com/file/147384/alpaca_logo.svg' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.com/file/147384/alpaca_logo.svg?size=200x200" style="width:200px;height=200px" alt=""/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/alpaca/" title="Alpaca Markets connector"&gt;Alpaca Markets&lt;/a&gt; - is a platform for algorithmic trading, offering an API for automating trading strategies in the stock market. With the Alpaca Markets connector, StockSharp users can easily integrate their trading strategies and automate the trading process.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. ByBit&lt;/b&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a href='https://stocksharp.com/file/151778/bybit_logo.svg' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.com/file/151778/bybit_logo.svg?size=200x200" style="width:200px;height=200px" alt=""/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bybit/" title="ByBit connector"&gt;ByBit&lt;/a&gt; - is a leading cryptocurrency exchange specializing in derivative trading. The new ByBit connector will allow traders to access the cryptocurrency market and take advantage of high-frequency trading and flexible risk management tools.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3. PolygonIO&lt;/b&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;a href='https://stocksharp.com/file/147819/polygonio_logo.svg' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.com/file/147819/polygonio_logo.svg?size=200x200" style="width:200px;height=200px" alt=""/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/polygonio/" title="PolygonIO connector"&gt;PolygonIO&lt;/a&gt; - is a platform providing an API for obtaining real-time market data and historical data on stocks, options, and cryptocurrencies. With the PolygonIO connector, StockSharp users can obtain high-quality data for analysis and developing trading strategies.&lt;br /&gt;&lt;br /&gt;These new connectors open new horizons for our users in trading and market analysis. We continue to work on improving our platform and hope that these innovations will help you achieve even greater success in your trading endeavors.&lt;br /&gt;&lt;br /&gt;Sincerely,&lt;br /&gt;The StockSharp Team</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/12374/</id>
    <title type="text">Assign, install and work with StockSharp Installer.</title>
    <published>2020-09-01T08:41:16Z</published>
    <updated>2024-06-14T07:47:25Z</updated>
    <author>
      <name>Marat</name>
      <uri>https://stocksharp.com/users/101940/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <category term="Quik" />
    <category term="trading" />
    <category term="MatLab" />
    <category term="Cryptoconnectors" />
    <category term="metatrader" />
    <category term="trade" />
    <category term="connector for trading" />
    <category term="MT" />
    <content type="html">The &lt;b&gt;Installer&lt;/b&gt; allows you to:&lt;br /&gt;- download and install &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;, &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;, &lt;a href="https://stocksharp.com/store/market-data-downloader/" title="Hydra free market data downloader and database"&gt;Hydra&lt;/a&gt;&lt;br /&gt;- buy or install connectors &lt;a href="https://stocksharp.com/store/mt4/" title=" S#.MT4"&gt;MT 4&lt;/a&gt;, &lt;a href="https://stocksharp.com/store/mt5/" title="MT5"&gt;MT 5&lt;/a&gt;, &lt;a href="https://stocksharp.com/store/matlab/" title="MatLab - integration StockSharp with MatLab application"&gt;MatLab&lt;/a&gt;&lt;br /&gt;- buy and install additional software&lt;br /&gt;- install the program together with bought connectors&lt;br /&gt;- track the process of purchasing new programs&lt;br /&gt;- download the &lt;a href="https://stocksharp.com/store/api/" title="API - a free algorithmic trading API"&gt;API&lt;/a&gt; library and automatically tracks its updates.&lt;br /&gt;- download the purchased training lessons, the &lt;a href="https://stocksharp.com/store/trading-shell/" title="Shell for your algo strategy with C# source codes"&gt;Shell&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;iframe width="640" height="390" src="//www.youtube.com/embed/c2ZcHtgMDqk" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;How to install the program:&lt;br /&gt;&lt;br /&gt;1. Download &lt;span style="font-size:140%"&gt;&lt;b&gt;&lt;a href="https://stocksharp.com/file/142263/stocksharp_setup.exe" title="stocksharp_setup.exe"&gt;stocksharp_setup.exe&lt;/a&gt;&lt;/b&gt;&lt;/span&gt; (&lt;em&gt;&lt;a target="_blank" href="https://dotnet.microsoft.com/en-us/download/dotnet/6.0" title="https://dotnet.microsoft.com/en-us/download/dotnet/6.0"&gt;.NET 6&lt;/a&gt; will be installed automatically&lt;/em&gt;).&lt;br /&gt;&lt;br /&gt;2. Start the installation file &lt;em&gt;stocksharp_setup.exe&lt;/em&gt; and follow the instructions.&lt;br /&gt;Sometimes Windows prevent the installation and pop up the warning like below:&lt;br /&gt;&lt;a href='https://stocksharp.com/file/142484/SmartScreen_eng.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.com/file/142484/SmartScreen_eng.png?size=800x800" alt="Smart screen eng" title="Smart screen eng" /&gt;&lt;/a&gt;&lt;br /&gt;In this case click &lt;u&gt;More info&lt;/u&gt; in the warning window. You&amp;#39;ll get the next one:&lt;br /&gt;&lt;a href='https://stocksharp.com/file/142485/SmartScreen_eng_2.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.com/file/142485/SmartScreen_eng_2.png?size=800x800" alt="Smart Screen eng run" title="Smart Screen eng run" /&gt;&lt;/a&gt;&lt;br /&gt;After clicking &lt;b&gt;&amp;quot;Run anyway&amp;quot;&lt;/b&gt; button the installation begins.&lt;br /&gt;&lt;br /&gt;3. After installation, open the program window.&lt;br /&gt;&lt;br /&gt;&lt;a href='https://stocksharp.com/file/115877/S#.Installer.UI.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.com/file/115877/S#.Installer.UI.png?size=800x800" alt="Installer.UI.png" title="Installer.UI.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;How to work with Installer:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Installer allows you to:&lt;br /&gt;- select programs available for download&lt;br /&gt;- manage updates of downloaded programs&lt;br /&gt;- purchase available paid programs&lt;br /&gt;&lt;br /&gt;For the convenience of finding the necessary product in the program, you can choose the type of application.&lt;br /&gt;&lt;br /&gt;&lt;a href='https://stocksharp.com/file/115875/S#.Installer.UI_choose.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.com/file/115875/S#.Installer.UI_choose.png?size=800x800" alt="Installer.UI_choose.png" title="Installer.UI_choose.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To &lt;b&gt;install &lt;/b&gt;the desired application, you need to:&lt;br /&gt;&lt;br /&gt;1. Select the app, click install, agree to the license agreement, and click &lt;b&gt;Continue&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href='https://stocksharp.com/file/115870/S#.Installer.UI_download.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.com/file/115870/S#.Installer.UI_download.png?size=800x800" alt="Installer.UI_download.png" title="Installer.UI_download.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2. After this you need to choose the installation path.&lt;br /&gt;&lt;b&gt;IMPORTANT! &lt;/b&gt;It is necessary that the folder where the program will be installed is empty.&lt;br /&gt;&lt;br /&gt;&lt;a href='https://stocksharp.com/file/115872/S#.Installer.UI_dir.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.com/file/115872/S#.Installer.UI_dir.png?size=800x800" alt="Installer.UI_dir.png" title="Installer.UI_dir.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3. After selecting the directory, click &lt;b&gt;Continue&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;4. Select &lt;b&gt;Execute&lt;/b&gt; and the installation process begins.&lt;br /&gt;&lt;br /&gt;&lt;a href='https://stocksharp.com/file/115873/S#.Installer.UI_instal.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.com/file/115873/S#.Installer.UI_instal.png?size=800x800" alt="Installer.UI_instal.png" title="Installer.UI_instal.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;5. After installation, you can use the program.&lt;br /&gt;&lt;br /&gt;To &lt;b&gt;delete &lt;/b&gt;the program, select delete and click &lt;b&gt;Continue&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href='https://stocksharp.com/file/115867/S#.Installer.UI_del.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.com/file/115867/S#.Installer.UI_del.png?size=800x800" alt="Installer.UI_del.png" title="Installer.UI_del.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To &lt;b&gt;repair&lt;/b&gt;, select repair and click &lt;b&gt;Continue&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href='https://stocksharp.com/file/115866/S#.Installer.UI_repair.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.com/file/115866/S#.Installer.UI_repair.png?size=800x800" alt="Installer.UI_repair.png" title="Installer.UI_repair.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Installer independently tracks all software &lt;b&gt;updates&lt;/b&gt; and updates itself automatically. Therefore, there is no need to delete it after installation.&lt;br /&gt;Installer is not closed by clicking on the &amp;quot;&lt;b&gt;X&lt;/b&gt;&amp;quot; in the program window, but is closed via the toolbar, select the menu (using the right mouse button) &lt;b&gt;Close&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;You can also check for &lt;b&gt;updates&lt;/b&gt; by clicking the check for updates button in the right corner of the program window.&lt;br /&gt;&lt;br /&gt;&lt;a href='https://stocksharp.com/file/115871/S#.Installer.UI_force_update.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.com/file/115871/S#.Installer.UI_force_update.png?size=800x800" alt="Installer.UI_force_update.png" title="Installer.UI_force_update.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;If &lt;b&gt;updates&lt;/b&gt; are available, a notification will appear.&lt;br /&gt;&lt;br /&gt;&lt;a href='https://stocksharp.com/file/115869/S#.Installer.UI_updat.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.com/file/115869/S#.Installer.UI_updat.png?size=800x800" alt="Installer.UI_updat.png" title="Installer.UI_updat.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To purchase &lt;b&gt;paid&lt;/b&gt; apps, select the software you need and click the &lt;b&gt;Buy&lt;/b&gt; button.&lt;br /&gt;&lt;br /&gt;&lt;a href='https://stocksharp.com/file/115868/S#.Installer.UI_buy.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.com/file/115868/S#.Installer.UI_buy.png?size=800x800" alt="Installer.UI_buy.png" title="Installer.UI_buy.png" /&gt;&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/25887/</id>
    <title type="text">Release notes 6/13/2024</title>
    <published>2024-06-13T21:51:37Z</published>
    <updated>2024-06-13T21:51:40Z</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.162):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&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.167):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/micex/" title="ASTSBridge"&gt;ASTSBridge&lt;/a&gt; (v5.0.169):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&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.173):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/transaq/" title="Transaq"&gt;Transaq&lt;/a&gt; (v5.0.168):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/lmax/" title="LMAX"&gt;LMAX&lt;/a&gt; (v5.0.166):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&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.184):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/fast/" title="FAST"&gt;FAST connector&lt;/a&gt; (v5.0.16):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/iqfeed/" title="IQFeed"&gt;IQFeed&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/rss-connector/" title="RSS"&gt;RSS&lt;/a&gt; (v5.0.167):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/barchart/" title="BarChart"&gt;BarChart&lt;/a&gt; (v5.0.167):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/rithmic/" title="Rithmic"&gt;Rithmic&lt;/a&gt; (v5.0.169):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/twime/" title="TWIME"&gt;TWIME&lt;/a&gt; (v5.0.168):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/spbex/" title=" SpbEX"&gt;SpbEX&lt;/a&gt; (v5.0.161):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/quanthouse/" title="QuantFEED"&gt;QuantFEED&lt;/a&gt; (v5.0.169):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/alphavantage/" title="AlphaVantage"&gt;AlphaVantage&lt;/a&gt; (v5.0.167):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/alor-history/" title="AlorHistory"&gt;AlorHistory&lt;/a&gt; (v5.0.167):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/dukascopy/" title="DukasCopy"&gt;DukasCopy&lt;/a&gt; (v5.0.167):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&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.167):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/finamconnector/" title="Finam"&gt;Finam connector&lt;/a&gt; (v5.0.169):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors. &lt;br /&gt;OAuth refactoring.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/mfd/" title="MFD"&gt;MFD&lt;/a&gt; (v5.0.167):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/tradier/" title="Tradier connector"&gt;Tradier&lt;/a&gt; (v5.0.166):&lt;br /&gt;WebSocket supported. &lt;br /&gt;async model. &lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bibox/" title="Bibox"&gt;Bibox&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/binance/" title="Binance"&gt;Binance&lt;/a&gt; (v5.0.169):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitalong/" title=" S#.Bitalong"&gt;Bitalong&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitbank/" title="Bitbank"&gt;Bitbank&lt;/a&gt; (v5.0.165):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitexbook/" title="Bitexbook"&gt;Bitexbook&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitfinex/" title="Bitfinex"&gt;Bitfinex&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bithumb/" title="Bithumb"&gt;Bithumb&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitmax/" title="Bitmax"&gt;BitMax&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitmex/" title="Bitmex"&gt;Bitmex&lt;/a&gt; (v5.0.166):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitstamp/" title="Bitstamp"&gt;BitStamp&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bittrex/" title="Bittrex"&gt;Bittrex&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitz/" title="BitZ"&gt;BitZ&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/btce/" title="Btce"&gt;Btce&lt;/a&gt; (v5.0.163):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bw/" title="BW "&gt;BW&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/cex/" title="CEX"&gt;Cex&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinbase/" title=" S#.Coinbase"&gt;Coinbase&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinbene/" title="CoinBene"&gt;CoinBene&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coincap/" title="CoinCap"&gt;CoinCap&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coincheck/" title="Coincheck"&gt;Coincheck&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinex/" title="CoinEx"&gt;CoinEx&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinexchange/" title="CoinExchange"&gt;CoinExchange&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinhub/" title="CoinHub"&gt;CoinHub&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinigy/" title="Coinigy"&gt;Coinigy&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/cryptopia/" title="Cryptopia"&gt;Cryptopia&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/deribit/" title="Deribit"&gt;Deribit&lt;/a&gt; (v5.0.168):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/digifinex/" title=" S#.DigiFinex"&gt;Digifinex&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/digitexfutures/" title="DigitexFutures"&gt;DigitexFutures&lt;/a&gt; (v5.0.165):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/exmo/" title="Exmo"&gt;Exmo&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/fatbtc/" title="FatBTC"&gt;FatBtc&lt;/a&gt; (v5.0.163):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/gdax/" title="GDAX"&gt;Gdax&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/gopax/" title="GoPax"&gt;Gopax&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/hitbtc/" title="HitBTC"&gt;HitBtc&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/hotbit/" title="Hotbit"&gt;Hotbit&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&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.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/idax/" title="IDAX"&gt;Idax&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/kraken/" title="Kraken"&gt;Kraken&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/kucoin/" title="KuCoin"&gt;Kucoin&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/latoken/" title="Latoken"&gt;Latoken&lt;/a&gt; (v5.0.163):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/lbank/" title="LBank"&gt;LBank&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/liqui/" title="Liqui"&gt;Liqui&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/livecoin/" title="LiveCoin"&gt;LiveCoin&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/okcoin/" title="OKCoin"&gt;Okcoin&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/okex/" title="OKX connector"&gt;OKX&lt;/a&gt; (v5.0.169):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/poloniex/" title="Poloniex"&gt;Poloniex&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/prizmbit/" title="PrizmBit"&gt;PrizmBit&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/quoinex/" title="Quoinex"&gt;Quoinex&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/tradeogre/" title="TradeOgre"&gt;TradeOgre&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/upbit/" title="Upbit "&gt;Upbit&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/yobit/" title="Yobit"&gt;Yobit&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/zaif/" title="Zaif"&gt;Zaif&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/zb/" title="ZB "&gt;ZB&lt;/a&gt; (v5.0.164):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&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.172):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors. &lt;br /&gt;OAuth refactoring. &lt;br /&gt;OAuthProvider &lt;br /&gt;SecurityLookupMessage. IncludeExpired &lt;br /&gt;OAuthWindow supported refresh tokens.&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.174):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors. &lt;br /&gt;OAuth refactoring. &lt;br /&gt;SecurityLookupMessage. IncludeExpired &lt;br /&gt;OAuthProvider &lt;br /&gt;OAuthWindow supported refresh tokens.&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.176):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors. &lt;br /&gt;OAuth refactoring. &lt;br /&gt;SecurityLookupMessage. IncludeExpired &lt;br /&gt;OAuthProvider &lt;br /&gt;OAuthWindow supported refresh tokens.&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.141):&lt;br /&gt;OAuth refactoring. &lt;br /&gt;SecurityLookupMessage. IncludeExpired &lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/oanda/" title="Oanda"&gt;Oanda&lt;/a&gt; (v5.0.166):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&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.128):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&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.40):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&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.31):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors. &lt;br /&gt;OAuth refactoring.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/alor/" title="Alor connector"&gt;Alor&lt;/a&gt; (v5.0.38):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/tinkoff/" title="Tinkoff connector"&gt;Tinkoff&lt;/a&gt; (v5.0.38):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/hydra-server/" title="Hydra server"&gt;Hydra server&lt;/a&gt; (v5.0.36):&lt;br /&gt;ByBit, cTrader connectors. &lt;br /&gt;OAuth refactoring. &lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/polygonio/" title="PolygonIO connector"&gt;PolygonIO&lt;/a&gt; (v5.0.29):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bybit/" title="ByBit connector"&gt;ByBit&lt;/a&gt; (v5.0.0):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&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.9):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/ctrader/" title="cTrader connector"&gt;cTrader&lt;/a&gt; (v5.0.0):&lt;br /&gt;AsyncMessageProcessor. Fix ResetMessage processing. &lt;br /&gt;IOAuthProvider moved to Ecng.Net &lt;br /&gt;SecurityLookupMessage. IncludeExpired property &lt;br /&gt;IOAuthAdapter &lt;br /&gt;ByBit, cTrader connectors.&lt;br /&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/25845/</id>
    <title type="text">Release notes 5/30/2024</title>
    <published>2024-05-30T14:03:40Z</published>
    <updated>2024-05-30T14:18:58Z</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.161):&lt;br /&gt;Fix override files.&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.183):&lt;br /&gt;FixOrderCondition. Supported takeprofit and stoploss per single 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.15):&lt;br /&gt;FixOrderCondition. Supported takeprofit and stoploss per single 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.171):&lt;br /&gt;FixOrderCondition. Supported takeprofit and stoploss per single request. &lt;br /&gt;Fix override files.&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.173):&lt;br /&gt;Fix override files. &lt;br /&gt;FixOrderCondition. Supported takeprofit and stoploss per single request.&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.175):&lt;br /&gt;FixOrderCondition. Supported takeprofit and stoploss per single request. &lt;br /&gt;Fix override files.&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.140):&lt;br /&gt;FixOrderCondition. Supported takeprofit and stoploss per single request. &lt;br /&gt;Fix override files.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/quiklua/" title="Quik"&gt;QUIK&lt;/a&gt; (v5.0.159):&lt;br /&gt;FixOrderCondition. Supported takeprofit and stoploss per single 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.156):&lt;br /&gt;FixOrderCondition. Supported takeprofit and stoploss per single 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.154):&lt;br /&gt;FixOrderCondition. Supported takeprofit and stoploss per single 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.30):&lt;br /&gt;FixOrderCondition. Supported takeprofit and stoploss per single request. &lt;br /&gt;Fix override files.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/hydra-server/" title="Hydra server"&gt;Hydra server&lt;/a&gt; (v5.0.35):&lt;br /&gt;FixOrderCondition. Supported takeprofit and stoploss per single request. &lt;br /&gt;Fix override files.&lt;br /&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/25816/</id>
    <title type="text">Release notes 5/22/2024</title>
    <published>2024-05-22T09:59:47Z</published>
    <updated>2024-05-22T10:13:39Z</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/fix_fast/" title="FIX/FAST"&gt;FIX&lt;/a&gt; (v5.0.182):&lt;br /&gt;CandleMessage. ToString fix&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.155):&lt;br /&gt;CandleMessage. ToString fix&lt;br /&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/25793/</id>
    <title type="text">Release notes 5/14/2024</title>
    <published>2024-05-14T08:05:34Z</published>
    <updated>2024-05-14T08:05:34Z</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/transaq/" title="Transaq"&gt;Transaq&lt;/a&gt; (v5.0.166):&lt;br /&gt;Fix subscribe market data for futures.&lt;br /&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/25791/</id>
    <title type="text">Release notes 5/13/2024</title>
    <published>2024-05-13T12:45:16Z</published>
    <updated>2024-05-13T12:45:18Z</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.160):&lt;br /&gt;BoardCodes. EUREX&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.165):&lt;br /&gt;API v10.29 &lt;br /&gt;Fix lookup futures and options. &lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/micex/" title="ASTSBridge"&gt;ASTSBridge&lt;/a&gt; (v5.0.167):&lt;br /&gt;BoardCodes. EUREX&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.171):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/transaq/" title="Transaq"&gt;Transaq&lt;/a&gt; (v5.0.165):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/lmax/" title="LMAX"&gt;LMAX&lt;/a&gt; (v5.0.164):&lt;br /&gt;BoardCodes. EUREX&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.181):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/fast/" title="FAST"&gt;FAST connector&lt;/a&gt; (v5.0.14):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/iqfeed/" title="IQFeed"&gt;IQFeed&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/rss-connector/" title="RSS"&gt;RSS&lt;/a&gt; (v5.0.165):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/barchart/" title="BarChart"&gt;BarChart&lt;/a&gt; (v5.0.165):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/rithmic/" title="Rithmic"&gt;Rithmic&lt;/a&gt; (v5.0.167):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/twime/" title="TWIME"&gt;TWIME&lt;/a&gt; (v5.0.166):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/spbex/" title=" SpbEX"&gt;SpbEX&lt;/a&gt; (v5.0.159):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/quanthouse/" title="QuantFEED"&gt;QuantFEED&lt;/a&gt; (v5.0.167):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/alphavantage/" title="AlphaVantage"&gt;AlphaVantage&lt;/a&gt; (v5.0.165):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/alor-history/" title="AlorHistory"&gt;AlorHistory&lt;/a&gt; (v5.0.165):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/dukascopy/" title="DukasCopy"&gt;DukasCopy&lt;/a&gt; (v5.0.165):&lt;br /&gt;BoardCodes. EUREX&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.165):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/finamconnector/" title="Finam"&gt;Finam connector&lt;/a&gt; (v5.0.167):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/mfd/" title="MFD"&gt;MFD&lt;/a&gt; (v5.0.165):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bibox/" title="Bibox"&gt;Bibox&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/binance/" title="Binance"&gt;Binance&lt;/a&gt; (v5.0.167):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitalong/" title=" S#.Bitalong"&gt;Bitalong&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitbank/" title="Bitbank"&gt;Bitbank&lt;/a&gt; (v5.0.163):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitexbook/" title="Bitexbook"&gt;Bitexbook&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitfinex/" title="Bitfinex"&gt;Bitfinex&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bithumb/" title="Bithumb"&gt;Bithumb&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitmax/" title="Bitmax"&gt;BitMax&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitmex/" title="Bitmex"&gt;Bitmex&lt;/a&gt; (v5.0.164):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitstamp/" title="Bitstamp"&gt;BitStamp&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bittrex/" title="Bittrex"&gt;Bittrex&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitz/" title="BitZ"&gt;BitZ&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/btce/" title="Btce"&gt;Btce&lt;/a&gt; (v5.0.161):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bw/" title="BW "&gt;BW&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/cex/" title="CEX"&gt;Cex&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinbase/" title=" S#.Coinbase"&gt;Coinbase&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinbene/" title="CoinBene"&gt;CoinBene&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coincap/" title="CoinCap"&gt;CoinCap&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coincheck/" title="Coincheck"&gt;Coincheck&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinex/" title="CoinEx"&gt;CoinEx&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinexchange/" title="CoinExchange"&gt;CoinExchange&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinhub/" title="CoinHub"&gt;CoinHub&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinigy/" title="Coinigy"&gt;Coinigy&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/cryptopia/" title="Cryptopia"&gt;Cryptopia&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/deribit/" title="Deribit"&gt;Deribit&lt;/a&gt; (v5.0.166):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/digifinex/" title=" S#.DigiFinex"&gt;Digifinex&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/digitexfutures/" title="DigitexFutures"&gt;DigitexFutures&lt;/a&gt; (v5.0.163):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/exmo/" title="Exmo"&gt;Exmo&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/fatbtc/" title="FatBTC"&gt;FatBtc&lt;/a&gt; (v5.0.161):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/gdax/" title="GDAX"&gt;Gdax&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/gopax/" title="GoPax"&gt;Gopax&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/hitbtc/" title="HitBTC"&gt;HitBtc&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/hotbit/" title="Hotbit"&gt;Hotbit&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&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.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/idax/" title="IDAX"&gt;Idax&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/kraken/" title="Kraken"&gt;Kraken&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/kucoin/" title="KuCoin"&gt;Kucoin&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/latoken/" title="Latoken"&gt;Latoken&lt;/a&gt; (v5.0.161):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/lbank/" title="LBank"&gt;LBank&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/liqui/" title="Liqui"&gt;Liqui&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/livecoin/" title="LiveCoin"&gt;LiveCoin&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/okcoin/" title="OKCoin"&gt;Okcoin&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/okex/" title="OKX connector"&gt;OKX&lt;/a&gt; (v5.0.167):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/poloniex/" title="Poloniex"&gt;Poloniex&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/prizmbit/" title="PrizmBit"&gt;PrizmBit&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/quoinex/" title="Quoinex"&gt;Quoinex&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/tradeogre/" title="TradeOgre"&gt;TradeOgre&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/upbit/" title="Upbit "&gt;Upbit&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/yobit/" title="Yobit"&gt;Yobit&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/zaif/" title="Zaif"&gt;Zaif&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/zb/" title="ZB "&gt;ZB&lt;/a&gt; (v5.0.162):&lt;br /&gt;BoardCodes. EUREX&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.170):&lt;br /&gt;SyncDiagramElement &lt;br /&gt;SecurityLookupWindow. Fix resize mode. &lt;br /&gt;BoardCodes. EUREX &lt;br /&gt;Doc link fixes. &lt;br /&gt;PositionModifyElement. TWAP supported.&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.172):&lt;br /&gt;SyncDiagramElement &lt;br /&gt;SecurityLookupWindow. Fix resize mode. &lt;br /&gt;BoardCodes. EUREX &lt;br /&gt;Doc link fixes. &lt;br /&gt;PositionModifyElement. TWAP supported.&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.174):&lt;br /&gt;SyncDiagramElement &lt;br /&gt;SecurityLookupWindow. Fix resize mode. &lt;br /&gt;BoardCodes. EUREX &lt;br /&gt;Doc link fixes. &lt;br /&gt;PositionModifyElement. TWAP supported.&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.139):&lt;br /&gt;SyncDiagramElement &lt;br /&gt;SecurityLookupWindow. Fix resize mode. &lt;br /&gt;BoardCodes. EUREX &lt;br /&gt;Doc link fixes. &lt;br /&gt;PositionModifyElement. TWAP supported.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/oanda/" title="Oanda"&gt;Oanda&lt;/a&gt; (v5.0.164):&lt;br /&gt;BoardCodes. EUREX&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.126):&lt;br /&gt;BoardCodes. EUREX&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.38):&lt;br /&gt;BoardCodes. EUREX&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.29):&lt;br /&gt;BoardCodes. EUREX &lt;br /&gt;SyncDiagramElement &lt;br /&gt;PositionModifyElement. TWAP supported.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/alor/" title="Alor connector"&gt;Alor&lt;/a&gt; (v5.0.36):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/tinkoff/" title="Tinkoff connector"&gt;Tinkoff&lt;/a&gt; (v5.0.36):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/hydra-server/" title="Hydra server"&gt;Hydra server&lt;/a&gt; (v5.0.34):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/polygonio/" title="PolygonIO connector"&gt;PolygonIO&lt;/a&gt; (v5.0.27):&lt;br /&gt;BoardCodes. EUREX&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.7):&lt;br /&gt;BoardCodes. EUREX&lt;br /&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/25770/</id>
    <title type="text">Release notes 5/6/2024</title>
    <published>2024-05-06T10:49:22Z</published>
    <updated>2024-05-06T14:13: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/market-data-downloader/" title="Hydra free market data downloader and database"&gt;Hydra&lt;/a&gt; (v5.0.173):&lt;br /&gt;Hydra-36 temp fix&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/hydra-server/" title="Hydra server"&gt;Hydra server&lt;/a&gt; (v5.0.33):&lt;br /&gt;Hydra-36 temp fix&lt;br /&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/25766/</id>
    <title type="text">Release notes 5/5/2024</title>
    <published>2024-05-05T08:02:17Z</published>
    <updated>2024-05-05T08:02:20Z</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.159):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;ProtectiveProcessor. Fix trailing logic &lt;a target="_blank" href="https://github.com/StockSharp/StockSharp/issues/436 " title="https://github.com/StockSharp/StockSharp/issues/436 "&gt;https://github.com/Stock...p/StockSharp/issues/436 &lt;/a&gt;&lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IProtectiveBehaviour. Position property. &lt;br /&gt;Localization. Extra langs moved to separated projects. &lt;br /&gt;IOrderBookMessage. GetPrice extension.&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.164):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/micex/" title="ASTSBridge"&gt;ASTSBridge&lt;/a&gt; (v5.0.166):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&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.170):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/transaq/" title="Transaq"&gt;Transaq&lt;/a&gt; (v5.0.164):&lt;br /&gt;ITakeProfitOrderCondition. IsTrailing removed. &lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/lmax/" title="LMAX"&gt;LMAX&lt;/a&gt; (v5.0.163):&lt;br /&gt;ITakeProfitOrderCondition. IsTrailing removed. &lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&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.180):&lt;br /&gt;ITakeProfitOrderCondition. IsTrailing removed. &lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/fast/" title="FAST"&gt;FAST connector&lt;/a&gt; (v5.0.13):&lt;br /&gt;ITakeProfitOrderCondition. IsTrailing removed. &lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/iqfeed/" title="IQFeed"&gt;IQFeed&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/rss-connector/" title="RSS"&gt;RSS&lt;/a&gt; (v5.0.164):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/barchart/" title="BarChart"&gt;BarChart&lt;/a&gt; (v5.0.164):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/rithmic/" title="Rithmic"&gt;Rithmic&lt;/a&gt; (v5.0.166):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/twime/" title="TWIME"&gt;TWIME&lt;/a&gt; (v5.0.165):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/spbex/" title=" SpbEX"&gt;SpbEX&lt;/a&gt; (v5.0.158):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/quanthouse/" title="QuantFEED"&gt;QuantFEED&lt;/a&gt; (v5.0.166):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/alphavantage/" title="AlphaVantage"&gt;AlphaVantage&lt;/a&gt; (v5.0.164):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/alor-history/" title="AlorHistory"&gt;AlorHistory&lt;/a&gt; (v5.0.164):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/dukascopy/" title="DukasCopy"&gt;DukasCopy&lt;/a&gt; (v5.0.164):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&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.164):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/finamconnector/" title="Finam"&gt;Finam connector&lt;/a&gt; (v5.0.166):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/mfd/" title="MFD"&gt;MFD&lt;/a&gt; (v5.0.164):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bibox/" title="Bibox"&gt;Bibox&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/binance/" title="Binance"&gt;Binance&lt;/a&gt; (v5.0.166):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitalong/" title=" S#.Bitalong"&gt;Bitalong&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitbank/" title="Bitbank"&gt;Bitbank&lt;/a&gt; (v5.0.162):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitexbook/" title="Bitexbook"&gt;Bitexbook&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitfinex/" title="Bitfinex"&gt;Bitfinex&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bithumb/" title="Bithumb"&gt;Bithumb&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitmax/" title="Bitmax"&gt;BitMax&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitmex/" title="Bitmex"&gt;Bitmex&lt;/a&gt; (v5.0.163):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitstamp/" title="Bitstamp"&gt;BitStamp&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bittrex/" title="Bittrex"&gt;Bittrex&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitz/" title="BitZ"&gt;BitZ&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/btce/" title="Btce"&gt;Btce&lt;/a&gt; (v5.0.160):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bw/" title="BW "&gt;BW&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/cex/" title="CEX"&gt;Cex&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinbase/" title=" S#.Coinbase"&gt;Coinbase&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinbene/" title="CoinBene"&gt;CoinBene&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coincap/" title="CoinCap"&gt;CoinCap&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coincheck/" title="Coincheck"&gt;Coincheck&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinex/" title="CoinEx"&gt;CoinEx&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinexchange/" title="CoinExchange"&gt;CoinExchange&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinhub/" title="CoinHub"&gt;CoinHub&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinigy/" title="Coinigy"&gt;Coinigy&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/cryptopia/" title="Cryptopia"&gt;Cryptopia&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/deribit/" title="Deribit"&gt;Deribit&lt;/a&gt; (v5.0.165):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/digifinex/" title=" S#.DigiFinex"&gt;Digifinex&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/digitexfutures/" title="DigitexFutures"&gt;DigitexFutures&lt;/a&gt; (v5.0.162):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/exmo/" title="Exmo"&gt;Exmo&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/fatbtc/" title="FatBTC"&gt;FatBtc&lt;/a&gt; (v5.0.160):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/gdax/" title="GDAX"&gt;Gdax&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/gopax/" title="GoPax"&gt;Gopax&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/hitbtc/" title="HitBTC"&gt;HitBtc&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/hotbit/" title="Hotbit"&gt;Hotbit&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&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.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/idax/" title="IDAX"&gt;Idax&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/kraken/" title="Kraken"&gt;Kraken&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/kucoin/" title="KuCoin"&gt;Kucoin&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/latoken/" title="Latoken"&gt;Latoken&lt;/a&gt; (v5.0.160):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/lbank/" title="LBank"&gt;LBank&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/liqui/" title="Liqui"&gt;Liqui&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/livecoin/" title="LiveCoin"&gt;LiveCoin&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/okcoin/" title="OKCoin"&gt;Okcoin&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/okex/" title="OKX connector"&gt;OKX&lt;/a&gt; (v5.0.166):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/poloniex/" title="Poloniex"&gt;Poloniex&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/prizmbit/" title="PrizmBit"&gt;PrizmBit&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/quoinex/" title="Quoinex"&gt;Quoinex&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/tradeogre/" title="TradeOgre"&gt;TradeOgre&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/upbit/" title="Upbit "&gt;Upbit&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/yobit/" title="Yobit"&gt;Yobit&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/zaif/" title="Zaif"&gt;Zaif&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/zb/" title="ZB "&gt;ZB&lt;/a&gt; (v5.0.161):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&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.168):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects. &lt;br /&gt;ITakeProfitOrderCondition. IsTrailing removed. &lt;br /&gt;MathDiagramElement. ClearSockets property. &lt;br /&gt;Position position elem can accepts order books. &lt;br /&gt;BaseExternalDiagramElement. Auto convert socket values. &lt;br /&gt;DiagramElement. Prepare method. &lt;br /&gt;BaseExternalDiagramElement. Fix reset output sockets while re-compilation. &lt;br /&gt;ProtectiveProcessor. Fix trailing logic &lt;a target="_blank" href="https://github.com/StockSharp/StockSharp/issues/436 " title="https://github.com/StockSharp/StockSharp/issues/436 "&gt;https://github.com/Stock...p/StockSharp/issues/436 &lt;/a&gt;&lt;br /&gt;IProtectiveBehaviour. Position property.&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.170):&lt;br /&gt;Fix show references window. &lt;br /&gt;DESIGNER-182 Made icon padding in solution explorer. &lt;br /&gt;Fix binding warnings. &lt;br /&gt;DESIGNER-219 Allow delete multiple configs from solution tree. &lt;br /&gt;Disable controls in ribbon when no any config selected. &lt;br /&gt;Fix edit refs for custom elements and indicators. &lt;br /&gt;Cloud. Fix show backtest for indexes. &lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects. &lt;br /&gt;ITakeProfitOrderCondition. IsTrailing removed. &lt;br /&gt;MathDiagramElement. ClearSockets property. &lt;br /&gt;Position position elem can accepts order books. &lt;br /&gt;BaseExternalDiagramElement. Auto convert socket values. &lt;br /&gt;DiagramElement. Prepare method. &lt;br /&gt;BaseExternalDiagramElement. Fix reset output sockets while re-compilation. &lt;br /&gt;ProtectiveProcessor. Fix trailing logic &lt;a target="_blank" href="https://github.com/StockSharp/StockSharp/issues/436 " title="https://github.com/StockSharp/StockSharp/issues/436 "&gt;https://github.com/Stock...p/StockSharp/issues/436 &lt;/a&gt;&lt;br /&gt;IProtectiveBehaviour. Position property.&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.172):&lt;br /&gt;Localization. Extra langs moved to separated projects. &lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;ITakeProfitOrderCondition. IsTrailing removed. &lt;br /&gt;MathDiagramElement. ClearSockets property. &lt;br /&gt;Position position elem can accepts order books. &lt;br /&gt;BaseExternalDiagramElement. Auto convert socket values. &lt;br /&gt;DiagramElement. Prepare method. &lt;br /&gt;BaseExternalDiagramElement. Fix reset output sockets while re-compilation. &lt;br /&gt;ProtectiveProcessor. Fix trailing logic &lt;a target="_blank" href="https://github.com/StockSharp/StockSharp/issues/436 " title="https://github.com/StockSharp/StockSharp/issues/436 "&gt;https://github.com/Stock...p/StockSharp/issues/436 &lt;/a&gt;&lt;br /&gt;IProtectiveBehaviour. Position property.&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.138):&lt;br /&gt;ITakeProfitOrderCondition. IsTrailing removed. &lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects. &lt;br /&gt;MathDiagramElement. ClearSockets property. &lt;br /&gt;Position position elem can accepts order books. &lt;br /&gt;BaseExternalDiagramElement. Auto convert socket values. &lt;br /&gt;DiagramElement. Prepare method. &lt;br /&gt;BaseExternalDiagramElement. Fix reset output sockets while re-compilation. &lt;br /&gt;ProtectiveProcessor. Fix trailing logic &lt;a target="_blank" href="https://github.com/StockSharp/StockSharp/issues/436 " title="https://github.com/StockSharp/StockSharp/issues/436 "&gt;https://github.com/Stock...p/StockSharp/issues/436 &lt;/a&gt;&lt;br /&gt;IProtectiveBehaviour. Position property.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/oanda/" title="Oanda"&gt;Oanda&lt;/a&gt; (v5.0.163):&lt;br /&gt;ITakeProfitOrderCondition. IsTrailing removed. &lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&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.125):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/quiklua/" title="Quik"&gt;QUIK&lt;/a&gt; (v5.0.158):&lt;br /&gt;ITakeProfitOrderCondition. IsTrailing removed. &lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&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.154):&lt;br /&gt;ITakeProfitOrderCondition. IsTrailing removed. &lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/mt5/" title="MT5"&gt;MT 5&lt;/a&gt; (v5.0.153):&lt;br /&gt;ITakeProfitOrderCondition. IsTrailing removed. &lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&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.37):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&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.27):&lt;br /&gt;Localization. Extra langs moved to separated projects. &lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;ITakeProfitOrderCondition. IsTrailing removed. &lt;br /&gt;MathDiagramElement. ClearSockets property. &lt;br /&gt;Position position elem can accepts order books. &lt;br /&gt;BaseExternalDiagramElement. Auto convert socket values. &lt;br /&gt;DiagramElement. Prepare method. &lt;br /&gt;BaseExternalDiagramElement. Fix reset output sockets while re-compilation. &lt;br /&gt;ProtectiveProcessor. Fix trailing logic &lt;a target="_blank" href="https://github.com/StockSharp/StockSharp/issues/436 " title="https://github.com/StockSharp/StockSharp/issues/436 "&gt;https://github.com/Stock...p/StockSharp/issues/436 &lt;/a&gt;&lt;br /&gt;IProtectiveBehaviour. Position property.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/alor/" title="Alor connector"&gt;Alor&lt;/a&gt; (v5.0.35):&lt;br /&gt;ITakeProfitOrderCondition. IsTrailing removed. &lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/tinkoff/" title="Tinkoff connector"&gt;Tinkoff&lt;/a&gt; (v5.0.35):&lt;br /&gt;ITakeProfitOrderCondition. IsTrailing removed. &lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/hydra-server/" title="Hydra server"&gt;Hydra server&lt;/a&gt; (v5.0.32):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects. &lt;br /&gt;ITakeProfitOrderCondition. IsTrailing removed. &lt;br /&gt;ProtectiveProcessor. Fix trailing logic &lt;a target="_blank" href="https://github.com/StockSharp/StockSharp/issues/436 " title="https://github.com/StockSharp/StockSharp/issues/436 "&gt;https://github.com/Stock...p/StockSharp/issues/436 &lt;/a&gt;&lt;br /&gt;IProtectiveBehaviour. Position property.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/polygonio/" title="PolygonIO connector"&gt;PolygonIO&lt;/a&gt; (v5.0.26):&lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&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.6):&lt;br /&gt;ITakeProfitOrderCondition. IsTrailing removed. &lt;br /&gt;LocalizedStrings. CurrentCulture property &lt;br /&gt;Removed UnitTypes localization. &lt;br /&gt; Extra langs moved to separated projects. &lt;br /&gt;Removed trailing take profit. &lt;br /&gt;IOrderBookMessage. GetPrice extension. &lt;br /&gt;Localization. Extra langs moved to separated projects.&lt;br /&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/25749/</id>
    <title type="text">Release notes 4/26/2024</title>
    <published>2024-04-26T10:12:36Z</published>
    <updated>2024-04-26T10:12:36Z</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.167):&lt;br /&gt;HistoryEmulationConnector. SupportBasketSecurities turned on by default. &lt;br /&gt;ProtectiveProcessor. Fix trailing &lt;br /&gt;IProtectiveBehaviour. Clear removed.&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.169):&lt;br /&gt;HistoryEmulationConnector. SupportBasketSecurities turned on by default. &lt;br /&gt;ProtectiveProcessor. Fix trailing &lt;br /&gt;IProtectiveBehaviour. Clear removed.&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.171):&lt;br /&gt;HistoryEmulationConnector. SupportBasketSecurities turned on by default. &lt;br /&gt;ProtectiveProcessor. Fix trailing &lt;br /&gt;IProtectiveBehaviour. Clear removed.&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.26):&lt;br /&gt;HistoryEmulationConnector. SupportBasketSecurities turned on by default. &lt;br /&gt;ProtectiveProcessor. Fix trailing &lt;br /&gt;IProtectiveBehaviour. Clear removed.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/hydra-server/" title="Hydra server"&gt;Hydra server&lt;/a&gt; (v5.0.31):&lt;br /&gt;HistoryEmulationConnector. SupportBasketSecurities turned on by default. &lt;br /&gt;ProtectiveProcessor. Fix trailing &lt;br /&gt;IProtectiveBehaviour. Clear removed.&lt;br /&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/25742/</id>
    <title type="text">Release notes 4/25/2024</title>
    <published>2024-04-25T15:01:25Z</published>
    <updated>2024-04-25T15:13:51Z</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.158):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added. &lt;br /&gt;Order. Calc AveragePrice &lt;br /&gt;ProtectiveProcessor cleanup. &lt;a target="_blank" href="https://github.com/StockSharp/StockSharp/issues/435 " title="https://github.com/StockSharp/StockSharp/issues/435 "&gt;https://github.com/Stock...p/StockSharp/issues/435 &lt;/a&gt;&lt;br /&gt;Fix &lt;a target="_blank" href="https://github.com/StockSharp/StockSharp/issues/434 " title="https://github.com/StockSharp/StockSharp/issues/434 "&gt;https://github.com/Stock...p/StockSharp/issues/434 &lt;/a&gt;&lt;br /&gt;CandleBuilderMessageAdapter. Prevent sent Finished candle twice. &lt;br /&gt;Fix &lt;a target="_blank" href="https://github.com/StockSharp/StockSharp/issues/433 " title="https://github.com/StockSharp/StockSharp/issues/433 "&gt;https://github.com/Stock...p/StockSharp/issues/433 &lt;/a&gt;&lt;br /&gt;SS-315 Issue query positions and portfolio in non sync mode. &lt;br /&gt;Strategy. Draw -&amp;gt; DrawOrderBook, DrawOrderBookOrder, DrawOrderBookOrderFail&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.163):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/micex/" title="ASTSBridge"&gt;ASTSBridge&lt;/a&gt; (v5.0.165):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&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.169):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/transaq/" title="Transaq"&gt;Transaq&lt;/a&gt; (v5.0.163):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/lmax/" title="LMAX"&gt;LMAX&lt;/a&gt; (v5.0.162):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&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.178):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/fast/" title="FAST"&gt;FAST connector&lt;/a&gt; (v5.0.12):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/iqfeed/" title="IQFeed"&gt;IQFeed&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/rss-connector/" title="RSS"&gt;RSS&lt;/a&gt; (v5.0.163):&lt;br /&gt;Order. CancelledTime, MatchedTime added. &lt;br /&gt;MarginModes enum.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/barchart/" title="BarChart"&gt;BarChart&lt;/a&gt; (v5.0.163):&lt;br /&gt;Order. CancelledTime, MatchedTime added. &lt;br /&gt;MarginModes enum.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/rithmic/" title="Rithmic"&gt;Rithmic&lt;/a&gt; (v5.0.165):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/twime/" title="TWIME"&gt;TWIME&lt;/a&gt; (v5.0.164):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/spbex/" title=" SpbEX"&gt;SpbEX&lt;/a&gt; (v5.0.157):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/quanthouse/" title="QuantFEED"&gt;QuantFEED&lt;/a&gt; (v5.0.165):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/alphavantage/" title="AlphaVantage"&gt;AlphaVantage&lt;/a&gt; (v5.0.163):&lt;br /&gt;Order. CancelledTime, MatchedTime added. &lt;br /&gt;MarginModes enum.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/alor-history/" title="AlorHistory"&gt;AlorHistory&lt;/a&gt; (v5.0.163):&lt;br /&gt;Order. CancelledTime, MatchedTime added. &lt;br /&gt;MarginModes enum.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/dukascopy/" title="DukasCopy"&gt;DukasCopy&lt;/a&gt; (v5.0.163):&lt;br /&gt;Order. CancelledTime, MatchedTime added. &lt;br /&gt;MarginModes enum.&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.163):&lt;br /&gt;Order. CancelledTime, MatchedTime added. &lt;br /&gt;MarginModes enum.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/finamconnector/" title="Finam"&gt;Finam connector&lt;/a&gt; (v5.0.165):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/mfd/" title="MFD"&gt;MFD&lt;/a&gt; (v5.0.163):&lt;br /&gt;Order. CancelledTime, MatchedTime added. &lt;br /&gt;MarginModes enum.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bibox/" title="Bibox"&gt;Bibox&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/binance/" title="Binance"&gt;Binance&lt;/a&gt; (v5.0.165):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitalong/" title=" S#.Bitalong"&gt;Bitalong&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitbank/" title="Bitbank"&gt;Bitbank&lt;/a&gt; (v5.0.161):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitexbook/" title="Bitexbook"&gt;Bitexbook&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitfinex/" title="Bitfinex"&gt;Bitfinex&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bithumb/" title="Bithumb"&gt;Bithumb&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitmax/" title="Bitmax"&gt;BitMax&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitmex/" title="Bitmex"&gt;Bitmex&lt;/a&gt; (v5.0.162):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitstamp/" title="Bitstamp"&gt;BitStamp&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bittrex/" title="Bittrex"&gt;Bittrex&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bitz/" title="BitZ"&gt;BitZ&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/btce/" title="Btce"&gt;Btce&lt;/a&gt; (v5.0.159):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/bw/" title="BW "&gt;BW&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/cex/" title="CEX"&gt;Cex&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinbase/" title=" S#.Coinbase"&gt;Coinbase&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinbene/" title="CoinBene"&gt;CoinBene&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coincap/" title="CoinCap"&gt;CoinCap&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coincheck/" title="Coincheck"&gt;Coincheck&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinex/" title="CoinEx"&gt;CoinEx&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinexchange/" title="CoinExchange"&gt;CoinExchange&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinhub/" title="CoinHub"&gt;CoinHub&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/coinigy/" title="Coinigy"&gt;Coinigy&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/cryptopia/" title="Cryptopia"&gt;Cryptopia&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/deribit/" title="Deribit"&gt;Deribit&lt;/a&gt; (v5.0.164):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/digifinex/" title=" S#.DigiFinex"&gt;Digifinex&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/digitexfutures/" title="DigitexFutures"&gt;DigitexFutures&lt;/a&gt; (v5.0.161):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/exmo/" title="Exmo"&gt;Exmo&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/fatbtc/" title="FatBTC"&gt;FatBtc&lt;/a&gt; (v5.0.159):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/gdax/" title="GDAX"&gt;Gdax&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/gopax/" title="GoPax"&gt;Gopax&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/hitbtc/" title="HitBTC"&gt;HitBtc&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/hotbit/" title="Hotbit"&gt;Hotbit&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&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.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/idax/" title="IDAX"&gt;Idax&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/kraken/" title="Kraken"&gt;Kraken&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/kucoin/" title="KuCoin"&gt;Kucoin&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/latoken/" title="Latoken"&gt;Latoken&lt;/a&gt; (v5.0.159):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/lbank/" title="LBank"&gt;LBank&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/liqui/" title="Liqui"&gt;Liqui&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/livecoin/" title="LiveCoin"&gt;LiveCoin&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/okcoin/" title="OKCoin"&gt;Okcoin&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/okex/" title="OKX connector"&gt;OKX&lt;/a&gt; (v5.0.165):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/poloniex/" title="Poloniex"&gt;Poloniex&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/prizmbit/" title="PrizmBit"&gt;PrizmBit&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/quoinex/" title="Quoinex"&gt;Quoinex&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/tradeogre/" title="TradeOgre"&gt;TradeOgre&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/upbit/" title="Upbit "&gt;Upbit&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/yobit/" title="Yobit"&gt;Yobit&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/zaif/" title="Zaif"&gt;Zaif&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/zb/" title="ZB "&gt;ZB&lt;/a&gt; (v5.0.160):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&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.166):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added. &lt;br /&gt;Order. Calc AveragePrice &lt;br /&gt;ProtectiveProcessor cleanup. &lt;a target="_blank" href="https://github.com/StockSharp/StockSharp/issues/435 " title="https://github.com/StockSharp/StockSharp/issues/435 "&gt;https://github.com/Stock...p/StockSharp/issues/435 &lt;/a&gt;&lt;br /&gt;Fix &lt;a target="_blank" href="https://github.com/StockSharp/StockSharp/issues/434 " title="https://github.com/StockSharp/StockSharp/issues/434 "&gt;https://github.com/Stock...p/StockSharp/issues/434 &lt;/a&gt;&lt;br /&gt;CandleBuilderMessageAdapter. Prevent sent Finished candle twice. &lt;br /&gt;Fix &lt;a target="_blank" href="https://github.com/StockSharp/StockSharp/issues/433 " title="https://github.com/StockSharp/StockSharp/issues/433 "&gt;https://github.com/Stock...p/StockSharp/issues/433 &lt;/a&gt;&lt;br /&gt;SS-315 Issue query positions and portfolio in non sync mode. &lt;br /&gt;Strategy. Draw -&amp;gt; DrawOrderBook, DrawOrderBookOrder, DrawOrderBookOrderFail &lt;br /&gt;PositionModifyElement &lt;br /&gt;Socket ids unique in dir set only. &lt;br /&gt;StrategyInputDiagramElement removed. &lt;br /&gt;Doc link fixes. &lt;br /&gt;Orders cubes grouped into own category. &lt;br /&gt;Positions cubed grouped into own category. &lt;br /&gt;FlagDiagramElement &lt;br /&gt;OrderRegisterDiagramElement. Finished, Matched, Cancelled output sockets added. &lt;br /&gt;OrderTradesDiagramElement made obsolete. &lt;br /&gt;ProtectPositionDiagramElement. TakeValue and StopValue is non nullable. &lt;br /&gt;Do not wait in debugger in stopping state. &lt;br /&gt;MarketDepthSparsedDiagramElement. PriceRange property &lt;br /&gt;Product. SourcesLink property&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.168):&lt;br /&gt;StrategiesGallery. Home page button. &lt;br /&gt;Product. SourcesLink property &lt;br /&gt;Order. CancelledTime, MatchedTime added. &lt;br /&gt;MarginModes enum. &lt;br /&gt;Strategy. Draw -&amp;gt; DrawOrderBook, DrawOrderBookOrder, DrawOrderBookOrderFail &lt;br /&gt;Order. Calc AveragePrice &lt;br /&gt;ProtectiveProcessor cleanup. &lt;a target="_blank" href="https://github.com/StockSharp/StockSharp/issues/435 " title="https://github.com/StockSharp/StockSharp/issues/435 "&gt;https://github.com/Stock...p/StockSharp/issues/435 &lt;/a&gt;&lt;br /&gt;Fix &lt;a target="_blank" href="https://github.com/StockSharp/StockSharp/issues/434 " title="https://github.com/StockSharp/StockSharp/issues/434 "&gt;https://github.com/Stock...p/StockSharp/issues/434 &lt;/a&gt;&lt;br /&gt;CandleBuilderMessageAdapter. Prevent sent Finished candle twice. &lt;br /&gt;Fix &lt;a target="_blank" href="https://github.com/StockSharp/StockSharp/issues/433 " title="https://github.com/StockSharp/StockSharp/issues/433 "&gt;https://github.com/Stock...p/StockSharp/issues/433 &lt;/a&gt;&lt;br /&gt;SS-315 Issue query positions and portfolio in non sync mode. &lt;br /&gt;PositionModifyElement &lt;br /&gt;Socket ids unique in dir set only. &lt;br /&gt;StrategyInputDiagramElement removed. &lt;br /&gt;Doc link fixes. &lt;br /&gt;Orders cubes grouped into own category. &lt;br /&gt;Positions cubed grouped into own category. &lt;br /&gt;FlagDiagramElement &lt;br /&gt;OrderRegisterDiagramElement. Finished, Matched, Cancelled output sockets added. &lt;br /&gt;OrderTradesDiagramElement made obsolete. &lt;br /&gt;ProtectPositionDiagramElement. TakeValue and StopValue is non nullable. &lt;br /&gt;Do not wait in debugger in stopping state. &lt;br /&gt;MarketDepthSparsedDiagramElement. PriceRange property&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.170):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added. &lt;br /&gt;Order. Calc AveragePrice &lt;br /&gt;ProtectiveProcessor cleanup. &lt;a target="_blank" href="https://github.com/StockSharp/StockSharp/issues/435 " title="https://github.com/StockSharp/StockSharp/issues/435 "&gt;https://github.com/Stock...p/StockSharp/issues/435 &lt;/a&gt;&lt;br /&gt;Fix &lt;a target="_blank" href="https://github.com/StockSharp/StockSharp/issues/434 " title="https://github.com/StockSharp/StockSharp/issues/434 "&gt;https://github.com/Stock...p/StockSharp/issues/434 &lt;/a&gt;&lt;br /&gt;CandleBuilderMessageAdapter. Prevent sent Finished candle twice. &lt;br /&gt;Fix &lt;a target="_blank" href="https://github.com/StockSharp/StockSharp/issues/433 " title="https://github.com/StockSharp/StockSharp/issues/433 "&gt;https://github.com/Stock...p/StockSharp/issues/433 &lt;/a&gt;&lt;br /&gt;SS-315 Issue query positions and portfolio in non sync mode. &lt;br /&gt;Strategy. Draw -&amp;gt; DrawOrderBook, DrawOrderBookOrder, DrawOrderBookOrderFail &lt;br /&gt;PositionModifyElement &lt;br /&gt;Socket ids unique in dir set only. &lt;br /&gt;StrategyInputDiagramElement removed. &lt;br /&gt;Doc link fixes. &lt;br /&gt;Orders cubes grouped into own category. &lt;br /&gt;Positions cubed grouped into own category. &lt;br /&gt;FlagDiagramElement &lt;br /&gt;OrderRegisterDiagramElement. Finished, Matched, Cancelled output sockets added. &lt;br /&gt;OrderTradesDiagramElement made obsolete. &lt;br /&gt;ProtectPositionDiagramElement. TakeValue and StopValue is non nullable. &lt;br /&gt;Do not wait in debugger in stopping state. &lt;br /&gt;MarketDepthSparsedDiagramElement. PriceRange property &lt;br /&gt;Product. SourcesLink property&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.137):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added. &lt;br /&gt;Order. Calc AveragePrice &lt;br /&gt;ProtectiveProcessor cleanup. &lt;a target="_blank" href="https://github.com/StockSharp/StockSharp/issues/435 " title="https://github.com/StockSharp/StockSharp/issues/435 "&gt;https://github.com/Stock...p/StockSharp/issues/435 &lt;/a&gt;&lt;br /&gt;Fix &lt;a target="_blank" href="https://github.com/StockSharp/StockSharp/issues/434 " title="https://github.com/StockSharp/StockSharp/issues/434 "&gt;https://github.com/Stock...p/StockSharp/issues/434 &lt;/a&gt;&lt;br /&gt;CandleBuilderMessageAdapter. Prevent sent Finished candle twice. &lt;br /&gt;Fix &lt;a target="_blank" href="https://github.com/StockSharp/StockSharp/issues/433 " title="https://github.com/StockSharp/StockSharp/issues/433 "&gt;https://github.com/Stock...p/StockSharp/issues/433 &lt;/a&gt;&lt;br /&gt;SS-315 Issue query positions and portfolio in non sync mode. &lt;br /&gt;Strategy. Draw -&amp;gt; DrawOrderBook, DrawOrderBookOrder, DrawOrderBookOrderFail &lt;br /&gt;PositionModifyElement &lt;br /&gt;Socket ids unique in dir set only. &lt;br /&gt;StrategyInputDiagramElement removed. &lt;br /&gt;Doc link fixes. &lt;br /&gt;Orders cubes grouped into own category. &lt;br /&gt;Positions cubed grouped into own category. &lt;br /&gt;FlagDiagramElement &lt;br /&gt;OrderRegisterDiagramElement. Finished, Matched, Cancelled output sockets added. &lt;br /&gt;OrderTradesDiagramElement made obsolete. &lt;br /&gt;ProtectPositionDiagramElement. TakeValue and StopValue is non nullable. &lt;br /&gt;Do not wait in debugger in stopping state. &lt;br /&gt;MarketDepthSparsedDiagramElement. PriceRange property &lt;br /&gt;Product. SourcesLink property&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/oanda/" title="Oanda"&gt;Oanda&lt;/a&gt; (v5.0.162):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&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.124):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&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.36):&lt;br /&gt;Order. CancelledTime, MatchedTime added. &lt;br /&gt;MarginModes enum.&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.25):&lt;br /&gt;Order. CancelledTime, MatchedTime added. &lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. Calc AveragePrice &lt;br /&gt;ProtectiveProcessor cleanup. &lt;a target="_blank" href="https://github.com/StockSharp/StockSharp/issues/435 " title="https://github.com/StockSharp/StockSharp/issues/435 "&gt;https://github.com/Stock...p/StockSharp/issues/435 &lt;/a&gt;&lt;br /&gt;Fix &lt;a target="_blank" href="https://github.com/StockSharp/StockSharp/issues/434 " title="https://github.com/StockSharp/StockSharp/issues/434 "&gt;https://github.com/Stock...p/StockSharp/issues/434 &lt;/a&gt;&lt;br /&gt;CandleBuilderMessageAdapter. Prevent sent Finished candle twice. &lt;br /&gt;Fix &lt;a target="_blank" href="https://github.com/StockSharp/StockSharp/issues/433 " title="https://github.com/StockSharp/StockSharp/issues/433 "&gt;https://github.com/Stock...p/StockSharp/issues/433 &lt;/a&gt;&lt;br /&gt;SS-315 Issue query positions and portfolio in non sync mode. &lt;br /&gt;Strategy. Draw -&amp;gt; DrawOrderBook, DrawOrderBookOrder, DrawOrderBookOrderFail &lt;br /&gt;PositionModifyElement &lt;br /&gt;Socket ids unique in dir set only. &lt;br /&gt;StrategyInputDiagramElement removed. &lt;br /&gt;Doc link fixes. &lt;br /&gt;Orders cubes grouped into own category. &lt;br /&gt;Positions cubed grouped into own category. &lt;br /&gt;FlagDiagramElement &lt;br /&gt;OrderRegisterDiagramElement. Finished, Matched, Cancelled output sockets added. &lt;br /&gt;OrderTradesDiagramElement made obsolete. &lt;br /&gt;ProtectPositionDiagramElement. TakeValue and StopValue is non nullable. &lt;br /&gt;Do not wait in debugger in stopping state. &lt;br /&gt;MarketDepthSparsedDiagramElement. PriceRange property&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/alor/" title="Alor connector"&gt;Alor&lt;/a&gt; (v5.0.34):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/tinkoff/" title="Tinkoff connector"&gt;Tinkoff&lt;/a&gt; (v5.0.34):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/hydra-server/" title="Hydra server"&gt;Hydra server&lt;/a&gt; (v5.0.30):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added. &lt;br /&gt;Order. Calc AveragePrice &lt;br /&gt;ProtectiveProcessor cleanup. &lt;a target="_blank" href="https://github.com/StockSharp/StockSharp/issues/435 " title="https://github.com/StockSharp/StockSharp/issues/435 "&gt;https://github.com/Stock...p/StockSharp/issues/435 &lt;/a&gt;&lt;br /&gt;Fix &lt;a target="_blank" href="https://github.com/StockSharp/StockSharp/issues/434 " title="https://github.com/StockSharp/StockSharp/issues/434 "&gt;https://github.com/Stock...p/StockSharp/issues/434 &lt;/a&gt;&lt;br /&gt;CandleBuilderMessageAdapter. Prevent sent Finished candle twice. &lt;br /&gt;Fix &lt;a target="_blank" href="https://github.com/StockSharp/StockSharp/issues/433 " title="https://github.com/StockSharp/StockSharp/issues/433 "&gt;https://github.com/Stock...p/StockSharp/issues/433 &lt;/a&gt;&lt;br /&gt;SS-315 Issue query positions and portfolio in non sync mode. &lt;br /&gt;Strategy. Draw -&amp;gt; DrawOrderBook, DrawOrderBookOrder, DrawOrderBookOrderFail&lt;br /&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/store/polygonio/" title="PolygonIO connector"&gt;PolygonIO&lt;/a&gt; (v5.0.25):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&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.5):&lt;br /&gt;MarginModes enum. &lt;br /&gt;Order. CancelledTime, MatchedTime added.&lt;br /&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/25708/</id>
    <title type="text">Leveraging JavaScript for Concurrent Execution of Quantitative Strategies: Encapsulating Go Functions</title>
    <published>2024-04-18T07:35:23Z</published>
    <updated>2024-04-18T07:35:23Z</updated>
    <author>
      <name>Quant</name>
      <uri>https://stocksharp.com/users/186455/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <category term="#trading" />
    <category term="#cryptocurrency" />
    <category term="#strategy" />
    <category term="#code" />
    <category term="#program" />
    <category term="#FMZQuant" />
    <category term="#function" />
    <category term="#concurrent" />
    <category term="#account" />
    <category term="#depth" />
    <content type="html">When implementing the quantitative strategy, concurrent execution can reduce latency and improve efficiency in many cases. Taking the hedging robot as an example, we need to obtain the depth of two coins. The code executed in sequence is as follows:&lt;br /&gt;```&lt;br /&gt;var depthA = exchanges[0].GetDepth()&lt;br /&gt;var depthB = exchanges[1].GetDepth()&lt;br /&gt;```&lt;br /&gt;There is a delay in requesting a rest API. Assuming that it is 100ms, the time for obtaining the depth is actually different. If more access is required, the delay problem will become more prominent and affect the implementation of the strategy.&lt;br /&gt;&lt;br /&gt;JavaScript has no multithreading, so the Go function is encapsulated at the bottom to solve this problem. However, due to the design mechanism, the implementation is relatively cumbersome.&lt;br /&gt;```&lt;br /&gt;var a = exchanges[0].Go(&amp;quot;GetDepth&amp;quot;)&lt;br /&gt;var b = exchanges[1].Go(&amp;quot;GetDepth&amp;quot;)&lt;br /&gt;var depthA = a.wait() // Call the wait method to wait for the return of the depth result asynchronously &lt;br /&gt;var depthB = b.wait()&lt;br /&gt;```&lt;br /&gt;In most simple cases, there is nothing wrong with writing the strategy this way. However, it is noted that this process should be repeated for each strategy loop. The intermediate variables a and b are only temporary aids. If we have a lot of concurrent tasks, we need to record the corresponding relationship between a and depthA, and b and depthB. When our concurrent tasks are uncertain, the situation becomes more complex. Therefore, we want to implement a function: when writing Go concurrently, bind a variable at the same time, and when the result of concurrent operation returns, the result will be automatically assigned to the variable, thus eliminating the intermediate variable and making the program more concise. The specific implementation is as follows:&lt;br /&gt;```&lt;br /&gt;function G(t, ctx, f) {&lt;br /&gt;    return {run:function(){&lt;br /&gt;        f(t.wait(1000), ctx)&lt;br /&gt;    }}&lt;br /&gt;}&lt;br /&gt;```&lt;br /&gt;We define a G function, where the parameter t is the Go function to be executed, ctx is the recording program context, and f is the specific assignment function. You will see the function later.&lt;br /&gt;&lt;br /&gt;At this time, the overall program framework can be written as similar to the &amp;quot;producer-consumer&amp;quot; model (with some differences). The producer keeps sending out tasks, and the consumer executes them concurrently. The following code is only for demonstration, not involving the program execution logic.&lt;br /&gt;```&lt;br /&gt;var Info = [{depth:null, account:null}, {depth:null, account:null}] // If we need to obtain the depth and account of the two exchanges, more information can also be put in, such as order ID, status, etc.&lt;br /&gt;var tasks = [ ] // Global list of tasks&lt;br /&gt;&lt;br /&gt;function produce(){ // Issue various concurrent tasks&lt;br /&gt;  // The logic of task generation is omitted here, for demonstration purposes only.&lt;br /&gt;  tasks.push({exchange:0, ret:&amp;#39;depth&amp;#39;, param:[&amp;#39;GetDepth&amp;#39;]})&lt;br /&gt;  tasks.push({exchange:1, ret:&amp;#39;depth&amp;#39;, param:[&amp;#39;GetDepth&amp;#39;]})&lt;br /&gt;  tasks.push({exchange:0, ret:&amp;#39;sellID&amp;#39;, param:[&amp;#39;Buy&amp;#39;, Info[0].depth.Asks[0].Price, 10]})&lt;br /&gt;  tasks.push({exchange:1, ret:&amp;#39;buyID&amp;#39;, param:[&amp;#39;Sell&amp;#39;, Info[1].depth.Bids[0].Price, 10]})&lt;br /&gt;}&lt;br /&gt;function worker(){&lt;br /&gt;    var jobs = []&lt;br /&gt;    for(var i=0;i&amp;lt;tasks.length;i++){&lt;br /&gt;        var task = tasks[i]&lt;br /&gt;        tasks.splice(i,1) // Delete executed tasks&lt;br /&gt;        jobs.push(G(exchanges[task.exchange].Go.apply(this, task.param), task, function(v, task) {&lt;br /&gt;                    Info[task.exchange][task.ret] = v // The v here is the return value of the concurrent Go function wait(), which can be experienced carefully.&lt;br /&gt;                }))&lt;br /&gt;    }&lt;br /&gt;    _.each(jobs, function(t){&lt;br /&gt;            t.run() // Execute all tasks concurrently here&lt;br /&gt;        })&lt;br /&gt;}&lt;br /&gt;function main() {&lt;br /&gt;    while(true){&lt;br /&gt;        produce()         // Send trade orders&lt;br /&gt;        worker()        // Concurrent execution&lt;br /&gt;        Sleep(1000)&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;```&lt;br /&gt;It seems that only one simple function has been implemented after going around in circles. In fact, the complexity of the code has been simplified greatly. We only need to care about what tasks the program needs to generate. The worker() program will automatically execute them concurrently and return the corresponding results. The flexibility has improved a lot.&lt;br /&gt;&lt;br /&gt;From: &lt;a target="_blank" rel="nofollow" href="https://stocksharp.com/away/?u=AQAAAAAAAAAezbpL9G-wNBo0jpp0vfUOQlbPNxIPafGj0KHUDS3Y63snD6Pmy6pqrWmTpTdhwkWfGOGxyMi7zL7OOb6tRc_sEYfAInfieSc7UebWcoQlCbcN4us_EriJ2CQPTwEgjGem1pkUoU3urLY_s4jaGfTA6OsaMKK6dN5_5Y-qXqKADQ5oT4skJZewQq0-dG4GQ3bqaJX5aQm9roEOEufupw_o" title="https://blog.mathquant.com/2023/01/31/use-javascript-to-implement-the-concurrent-execution-of-quantitative-strategy-encapsulate-the-go-function.html"&gt;https://blog.mathquant.c...ate-the-go-function.html&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/25706/</id>
    <title type="text">The Secret to Survival: 19 Professionals Share Their Advice on Digital Currency Trading</title>
    <published>2024-04-18T06:37:31Z</published>
    <updated>2024-04-18T06:37:31Z</updated>
    <author>
      <name>Quant</name>
      <uri>https://stocksharp.com/users/186455/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <category term="#trading" />
    <category term="#cryptocurrency" />
    <category term="#data" />
    <category term="#market" />
    <category term="#exchange" />
    <category term="#risk" />
    <category term="#FMZQuant" />
    <category term="#tool" />
    <category term="#plan" />
    <category term="#profits" />
    <content type="html">I have never worried about the digital currency market as much as I worry about it today. The market situation is very bad. Frankly speaking, it is weakening my sleep mode, and it is destroying my work efficiency. I&amp;#39;m torn. Should I sell or hold? You&amp;#39;re in the same boat, I know.&lt;br /&gt;&lt;br /&gt;You can&amp;#39;t keep yourself away from the chart. Every 5 minutes, a small voice comes into your mind.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;quot;Look at the chart, maybe the market has changed,&amp;quot; the voice said.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;You know that the market will not change. You also know that looking at these price charts won&amp;#39;t make you feel better. But you should do it anyway. Because you have real money invested in the market, and lots of it.&lt;br /&gt;&lt;br /&gt;This is not the first time you have done this. Maybe this is the second time. No, no, it&amp;#39;s at least the third time. I know it&amp;#39;s painful.&lt;br /&gt;&lt;br /&gt;What I&amp;#39;m about to tell you next will change your trading skills forever. These contents are not only applicable to the digital currency market, but also applicable to trading in any market, especially in the bear market - as we are facing, it is very necessary. What I want to tell you is how to keep calm when the &amp;quot;fire alarm&amp;quot; flashes.&lt;br /&gt;&lt;br /&gt;I will tell you what trading skills I learned after interviewing 19 digital currency trading professionals for a week.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:140%"&gt;The first rule of the traders&amp;#39; club is...&lt;/span&gt;&lt;br /&gt;Let&amp;#39;s start.&lt;br /&gt;&lt;br /&gt;1. Have a trading plan at all times&lt;br /&gt;&lt;br /&gt;Now it seems obvious to me.&lt;br /&gt;&lt;br /&gt;But I have changed this plan too many times. It&amp;#39;s too easy to say that you have a trading plan, because most of us have a loose definition of entry before trading. However, there is a huge difference between making a plan and sticking to it.&lt;br /&gt;&lt;br /&gt;I know you may have made the same mistake before. You often change plans at the last minute, so you buy too early or sell too late.&lt;br /&gt;&lt;br /&gt;You need to set standards. When the market appears in one way or another, you must abide by clearly defined rules. Every professional has a trading plan - they follow it faithfully.&lt;br /&gt;&lt;br /&gt;So it&amp;#39;s time for us to think like professionals. It&amp;#39;s time to make a trading plan. The trading plan can help you focus on the key points in all transactions.&lt;br /&gt;&lt;br /&gt;After making the plan, I want you to print it and paste it in the place where you do most of the transactions. It needs to be in the obvious sight. When the market meets the threshold in any of these plans, what you need to do is execute.&lt;br /&gt;&lt;br /&gt;Writing down the plan and putting it in front of you will make it more difficult to ignore.&lt;br /&gt;&lt;br /&gt;Attention: Sometimes, it is also helpful to go through some sort of fire drill-like training. For example, I often ask myself, &amp;quot;If the market crashes now, what will I do?&amp;quot; - If the answer is &amp;quot;Nothing,&amp;quot; then continue what I am doing. If the answer is &amp;quot;I will never recover&amp;quot;, please reconsider your method.&lt;br /&gt;&lt;br /&gt;2. Integrate your portfolio&lt;br /&gt;&lt;br /&gt;Browse your portfolio and separate currencies with long-term potential from currencies without long-term potential.&lt;br /&gt;&lt;br /&gt;This is a bear market. The ship may not have started to sink officially, but it will definitely go through a rough process.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Any extra weight will make you sink faster.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Henry, a trader with seven years of stock trading experience and digital currency trading experience, told me about his trading plan in the case of a sharp decline in the market.&lt;br /&gt;&lt;br /&gt;&amp;quot;Reduce your weight. In a bull market, hold your position and stick to it. In a bull market, the investment target you choose is not important - the market rises, everyone is a winner, but some people win more than others.&amp;quot;&lt;br /&gt;&lt;br /&gt;Because in such a market, everything is changing. You are taking risks with real money. If you don&amp;#39;t act quickly, you will lose them.&lt;br /&gt;&lt;br /&gt;Henry stressed how important it is to take decisive action when the market falls. Not acting in a timely manner results in everything coming to naught.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Even look at currencies that you think have potential in the long run.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Ask yourself, is the risk worth it? Because if you exit, put your money into a better investment target or you really believe that you can resist the risk of price collapse.&lt;br /&gt;&lt;br /&gt;Henry is very good at his major!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;ACTION: Add this to your trading plan list, list all your currencies and their priorities. When the market collapses, where will you start to cut investment or loss?&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;3. Reduce the noise&lt;br /&gt;&lt;br /&gt;You need to stay away from the nonsense of those warlocks and bullshitters.&lt;br /&gt;&lt;br /&gt;Of the 19 professional traders I spoke with, all 19 emphasized this point.&lt;br /&gt;&lt;br /&gt;Long-term profit means positioning yourself in front or behind the crowd. &lt;b&gt;Never be in the crowd.&lt;/b&gt; Stay away from chat rooms and trading forums. Each of these groups has his own motives.&lt;br /&gt;&lt;br /&gt;Many people spend their time in discussions like Slack, Reddit, Telegram, Facebook, and Discord... The list continues. You need to keep a distance from these groups. There are too many wrong messages spread, which will lead you to make hasty decisions and buy and sell too early.&lt;br /&gt;&lt;br /&gt;Your only job as a trader is to observe charts and make judgments. To make accurate judgments, it is not necessary to collect as much data as possible. Only obtain quality information, which need not be too much, but must be correct.&lt;br /&gt;&lt;br /&gt;What kind of information is quality information? Some traders suggest joining VIP groups. These are closely connected communities, and they hope to share their views and conduct better transactions as a group.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;ACTION: Question your source of information. Ask yourself - is this information necessary? Do I focus on the sources of information that really help my trading actions? If not, delete them.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;4. Build your &amp;quot;star team&amp;quot;&lt;br /&gt;&lt;br /&gt;The suggestion comes from Sparky, a trader from Sweden. Sparky is 43 years old. He has a wife and two children. Due to family reasons, his trading time is limited. So he came up with an ingenious solution.&lt;br /&gt;&lt;br /&gt;Sparky has a small team of five traders. Each of them subscribed to 2-3 main sources of information. Every day, they study these resources and send the best data back to Sparky, which is everyone&amp;#39;s mission.&lt;br /&gt;&lt;br /&gt;Only the best of the information is shared.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Sparky made five times better trading decisions therefore.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;It&amp;#39;s not difficult to start!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;ACTION: Go out and socialize, find a few people who make trades, and those you trust. Start group chat on Facebook Messenger or any platform you like. Each of you should study 2 - 3 reliable sources. Team members should study their sources of information every day and pass it on to only one member of the team. Don&amp;#39;t share it with everyone. Only focus on the sources that are critical to the transaction decision.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;5. Titan&amp;#39;s tools&lt;br /&gt;&lt;br /&gt;&amp;quot;Give a man a fish, and you feed him for a day. Teach a man to fish, and you feed him for a lifetime.&amp;quot; - but you can&amp;#39;t effectively &amp;quot;teach&amp;quot; when you don&amp;#39;t even have a fishing rod.&lt;br /&gt;&lt;br /&gt;Let me introduce some good &amp;quot;fishing rods&amp;quot; and help you install them. Here are some useful trading tools I found when talking with professional traders.&lt;br /&gt;&lt;br /&gt;- Trading View (Pro)&lt;br /&gt;&lt;br /&gt;TradeingView is a very good platform that can apply almost all content related to digital currency transactions.&lt;br /&gt;&lt;br /&gt;This tool will take you to a new level of experience. One of the best functions is the split screen function.&lt;br /&gt;&lt;br /&gt;The software supports up to four independent and fully interactive price charts in any window. You can control each screen, each indicator, and each chart separately.&lt;br /&gt;&lt;br /&gt;TradingView is like a task control center, controlling every currency you have as you like.&lt;br /&gt;&lt;br /&gt;- signalgroups.com&lt;br /&gt;&lt;br /&gt;We have all experienced that the price warning sounded at 4am. You are bullish on the market, but the price has been falling all night, and you&amp;#39;re about to reach the stop-loss. Your price warning sounded, but you didn&amp;#39;t wake up. In the morning, the price is deep red, and you are in a completely unprotected state. If this has not happened to you, I promise you that it will happen.&lt;br /&gt;&lt;br /&gt;This is where Signal made by Signalgroups.com can be used. You can stop profit or loss at the same time. Therefore, you can take a rest without having to pay attention to the price in front of the computer all day.&lt;br /&gt;&lt;br /&gt;If you take your transaction seriously, you must be prepared for this feature.&lt;br /&gt;&lt;br /&gt;- FMZ.com&lt;br /&gt;&lt;br /&gt;The best digital currency quantitative trading platform in the world. Now that you have read this article, I need not say more.&lt;br /&gt;&lt;br /&gt;To put it in a nutshell...&lt;br /&gt;&lt;br /&gt;Trading is a stressful job - I&amp;#39;m sure you don&amp;#39;t need me to tell you. But when you properly arm yourself with the best skills in trading, you will dominate.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;I hope these suggestions can help you - here are some key points I extracted from the sharing of these 19 traders:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;1. Develop a trading plan: prepare for every possibility and always have a strategy for closing your positions.&lt;br /&gt;&lt;br /&gt;2. Choose your currency wisely: invest in the currencies that can make profits only, and reduce the currencies that cannot make profits.&lt;br /&gt;&lt;br /&gt;3. Reduce noise: Be suspicious of the masses, which will affect your thinking and make it more tempting to make unreasonable decisions.&lt;br /&gt;&lt;br /&gt;4. Build a star team: find the traders you trust and let you know the situation in time.&lt;br /&gt;&lt;br /&gt;5. Use professional tools: these and your careful attention will be the biggest improvement in your trading career.&lt;br /&gt;&lt;br /&gt;From: &lt;a target="_blank" rel="nofollow" href="https://stocksharp.com/away/?u=AQAAAAAAAAAezbpL9G-wNBo0jpp0vfUOQlbPNxIPafGj0KHUDS3Y64HlkNn4eGrZ_7PfgIyWEue3k0YZ-S8hQFGCZxzAqiRnDVdvL3MXI3UzfA42Uo0IZG9VrlLY_wZzdIKvCE3QLUSox4CeKynvu74fFWEerYFl70ZLG57UuBV-y2tDrKm7DNA6HOhvHwQPz6q89vCNwWE" title="https://blog.mathquant.com/2023/01/31/the-secret-to-survival-19-professionals-share-their-advice-on-digital-currency-trading.html"&gt;https://blog.mathquant.c...al-currency-trading.html&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/25705/</id>
    <title type="text">Create a Bitcoin trading robot that won&amp;apos;t lose money</title>
    <published>2024-04-18T05:08:53Z</published>
    <updated>2024-04-18T05:08:53Z</updated>
    <author>
      <name>Quant</name>
      <uri>https://stocksharp.com/users/186455/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <category term="#trading" />
    <category term="#cryptocurrency" />
    <category term="#code" />
    <category term="#robot" />
    <category term="#bitcoin" />
    <category term="#FMZQuant" />
    <category term="#programmer" />
    <category term="#visualization" />
    <category term="#AI" />
    <category term="#optimization" />
    <content type="html">&lt;span style="font-size:140%"&gt;&lt;b&gt;Let&amp;#39;s use reinforcement learning in AI to build a digital currency trading robot.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;In this article, we will create and apply an enhanced learning frame number to learn how to make a Bitcoin trading robot. In this tutorial, we will use the gym of OpenAI and the PPO robot from the stable-baselines library, which is a branch of the OpenAI baseline library.&lt;br /&gt;&lt;br /&gt;Thank you very much for the open source software provided by OpenAI and DeepMind for the researchers of deep learning in the past few years. If you haven&amp;#39;t seen their amazing achievements with AlphaGo, OpenAI Five, AlphaStar and other technologies, you may have been living in isolation last year, but you should check them out.&lt;br /&gt;&lt;a href="https://stocksharp.com/file/150389
" title="https://stocksharp.com/file/150389
"&gt;https://stocksharp.com/file/150389
&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;AlphaStar training: &lt;a target="_blank" rel="nofollow" href="https://stocksharp.com/away/?u=AQAAAAAAAAC_xB2Ruv96xYCq6ib3_UdKLxke9smS3DThaXdIYZL074e8Zn-tD50hlVu-1Cwes6V5pNPuViynobkXVq1guvw0qpZJi969MeN_6vj_CuXCDilIxkRfgrHAooe51Gf9h_U" title="https://deepmind.com/blog/alphastar-mastering-real-time-strategy-game-starcraft-ii/
"&gt;https://deepmind.com/blo...tegy-game-starcraft-ii/
&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Although we will not create anything impressive, it is still not easy to trade Bitcoin robots in daily transactions. However, as Teddy Roosevelt once said,&lt;br /&gt;&lt;br /&gt;&lt;b&gt;There is no value in anything that is too simple.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Therefore, not only should we learn to trade ourselves, but also let robots trade for us.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:140%"&gt;Plan&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;1. Create a gym environment for our robot to perform machine learning&lt;br /&gt;&lt;br /&gt;2. Render a simple and elegant visual environment&lt;br /&gt;&lt;br /&gt;3. Train our robot to learn a profitable trading strategy&lt;br /&gt;&lt;br /&gt;If you are not familiar with how to create gym environments from scratch, or how to simply render the visualization of these environments. Before continuing, please feel free to google an article of this kind. These two actions will not be difficult for even the most junior programmers.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:140%"&gt;Getting Started&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;In this tutorial, we will use the Kaggle dataset generated by Zielak. If you want to download the source code, it will be provided in my Github repository, along with the .csv data file. Ok, let&amp;#39;s start.&lt;br /&gt;&lt;br /&gt;First, let&amp;#39;s import all the necessary libraries. Make sure to use pip to install any libraries you are missing.&lt;br /&gt;```&lt;br /&gt;import gym&lt;br /&gt;import pandas as pd&lt;br /&gt;import numpy as np&lt;br /&gt;from gym import spaces&lt;br /&gt;from sklearn import preprocessing&lt;br /&gt;```&lt;br /&gt;Next, let&amp;#39;s create our class for the environment. We need to pass in a Pandas data frame number and an optional initial_balance and a lookback_indow_size, which will indicate the number of past time steps observed by the robot in each step. We default the commission of each transaction to 0.075%, that is, the current exchange rate of Bitmex, and default the serial parameter to false, which means that our data frame number will be traversed by random fragments by default.&lt;br /&gt;&lt;br /&gt;We also call dropna() and reset_index() on the data, first delete the row with NaN value, and then reset the index of frame number, because we have deleted the data.&lt;br /&gt;```&lt;br /&gt;class BitcoinTradingEnv(gym.Env):&lt;br /&gt;  &amp;quot;&amp;quot;&amp;quot;A Bitcoin trading environment for OpenAI gym&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;  metadata = {&amp;#39;render.modes&amp;#39;: [&amp;#39;live&amp;#39;, &amp;#39;file&amp;#39;, &amp;#39;none&amp;#39;]}&lt;br /&gt;  scaler = preprocessing.MinMaxScaler()&lt;br /&gt;  viewer = None&lt;br /&gt;def __init__(self, df, lookback_window_size=50, &lt;br /&gt;                         commission=0.00075,  &lt;br /&gt;                         initial_balance=10000&lt;br /&gt;                         serial=False):&lt;br /&gt;    super(BitcoinTradingEnv, self).__init__()&lt;br /&gt;self.df = df.dropna().reset_index()&lt;br /&gt;    self.lookback_window_size = lookback_window_size&lt;br /&gt;    self.initial_balance = initial_balance&lt;br /&gt;    self.commission = commission&lt;br /&gt;    self.serial = serial&lt;br /&gt;# Actions of the format Buy 1/10, Sell 3/10, Hold, etc.&lt;br /&gt;    self.action_space = spaces.MultiDiscrete([3, 10])&lt;br /&gt;# Observes the OHCLV values, net worth, and trade history&lt;br /&gt;    self.observation_space = spaces.Box(low=0, high=1, shape=(10, lookback_window_size + 1), dtype=np.float16)&lt;br /&gt;```&lt;br /&gt;Our action_space is represented as a group of 3 options (buy, sell or hold) here and another group of 10 amounts (1/10, 2/10, 3/10, etc.). When we choose to buy, we will buy amount * self.balance word of BTC. For selling, we will sell amount * self.btc_held worth of BTC. Of course, holding will ignore the amount and do nothing.&lt;br /&gt;&lt;br /&gt;Our observation_space is defined as a continuous floating point set between 0 and 1, and its shape is (10, lookback_window_size+1). + 1 is used to calculate the current time step. For each time step in the window, we will observe the OHCLV value. Our net worth is equal to the number of BTCs we buy or sell, and the total amount of dollars we spend or receive on these BTCs.&lt;br /&gt;&lt;br /&gt;Next, we need to write the reset method to initialize the environment.&lt;br /&gt;```&lt;br /&gt;def reset(self):&lt;br /&gt;  self.balance = self.initial_balance&lt;br /&gt;  self.net_worth = self.initial_balance&lt;br /&gt;  self.btc_held = 0&lt;br /&gt;self._reset_session()&lt;br /&gt;self.account_history = np.repeat([&lt;br /&gt;    [self.net_worth],&lt;br /&gt;    [0],&lt;br /&gt;    [0],&lt;br /&gt;    [0],&lt;br /&gt;    [0]&lt;br /&gt;  ], self.lookback_window_size + 1, axis=1)&lt;br /&gt;self.trades = []&lt;br /&gt;return self._next_observation()&lt;br /&gt;```&lt;br /&gt;Here we use self._reset_session and self._next_observation, which we haven&amp;#39;t defined yet. Let&amp;#39;s define them first.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:140%"&gt;Trade session&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/file/150390
" title="https://stocksharp.com/file/150390
"&gt;https://stocksharp.com/file/150390
&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;An important part of our environment is the concept of trading sessions. If we deploy this robot outside the market, we may never run it for more than a few months at a time. For this reason, we will limit the number of consecutive frames in self.df, which is the number of frames that our robot can see at one time.&lt;br /&gt;&lt;br /&gt;In our _reset_session method, we reset the current_step to 0 first. Next, we will set steps_left to a random number between 1 to MAX_TRADING_SESSIONS, which we will define at the top of the program.&lt;br /&gt;```&lt;br /&gt;MAX_TRADING_SESSION = 100000 ＃ ~2 months&lt;br /&gt;```&lt;br /&gt;Next, if we want to traverse the number of frames consecutively, we must set it to traverse the entire number of frames, otherwise we set frame_start to a random point in self.df and create a new data frame named active_df, which is just a slice of self.df and it&amp;#39;s getting from frame_start to frame_start + steps_left.&lt;br /&gt;```&lt;br /&gt;def _reset_session(self):&lt;br /&gt;  self.current_step = 0&lt;br /&gt;if self.serial:&lt;br /&gt;    self.steps_left = len(self.df) - self.lookback_window_size - 1&lt;br /&gt;    self.frame_start = self.lookback_window_size&lt;br /&gt;  else:&lt;br /&gt;    self.steps_left = np.random.randint(1, MAX_TRADING_SESSION)&lt;br /&gt;    self.frame_start = np.random.randint(self.lookback_window_size, len(self.df) - self.steps_left)&lt;br /&gt;self.active_df = self.df[self.frame_start - self.lookback_window_size:self.frame_start + self.steps_left]&lt;br /&gt;```&lt;br /&gt;An important side effect of traversing the number of data frames in the random slice is that our robot will have more unique data for use in long-term training. For example, if we only traverse the number of data frames in a serial way (that is, from 0 to len(df)), we will only have as many unique data points as the number of data frames. Our observation space can only use a discrete number of states at each time step.&lt;br /&gt;&lt;br /&gt;However, by traversing the slices of the data set randomly, we can create a more meaningful set of trading results for each time step in the initial data set, that is, the combination of trading behavior and price behavior seen previously to create more unique data sets. Let me give an example to explain.&lt;br /&gt;&lt;br /&gt;When the time step after resetting the serial environment is 10, our robot will always run in the data set at the same time, and there are three options after each time step: buy, sell or hold. For each of the three options, you need another option: 10%, 20%, ... or 100% of the specific implementation amount. This means that our robot may encounter one of the 10 states of any 103, a total of 1030 cases.&lt;br /&gt;&lt;br /&gt;Now back to our random slicing environment. When the time step is 10, our robot may be in any len(df) time step within the number of data frames. Assuming that the same choice is made after each time step, it means that the robot can experience the unique state of any len(df) to the 30th power in the same 10 time steps.&lt;br /&gt;&lt;br /&gt;Although this may bring considerable noise to large data sets, I believe that robots should be allowed to learn more from our limited data. We will still traverse our test data in a serial way to obtain the freshest and seemingly &amp;#39;real-time&amp;#39; data, in order to obtain a more accurate understanding through the effectiveness of the algorithm.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:140%"&gt;Observed through the eyes of a robot&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Through effective visual environment observation, it is often helpful to understand the type of functions that our robot will use. For example, here is the visualization of observable space rendered using OpenCV.&lt;br /&gt;&lt;br /&gt;Observation of OpenCV visualization environment&lt;br /&gt;&lt;br /&gt;Each line in the image represents a row in our observation_space. The first four lines of red lines with similar frequencies represent OHCL data, and the orange and yellow dots directly below represent trading volume. The fluctuating blue bar below represents the net value of the robot, while the lighter bar below represents the transaction of the robot.&lt;br /&gt;&lt;br /&gt;If you observe carefully, you can even make a candle map yourself. Below the trading volume bar is a Morse code interface, displaying the trading history. It seems that our robot should be able to learn sufficiently from the data in our observation_space, so let&amp;#39;s continue. Here, we will define the _next_observation method, we scale the observed data from 0 to 1.&lt;br /&gt;&lt;br /&gt;- It is important to extend only the data observed by the robot so far to prevent leading deviation.&lt;br /&gt;```&lt;br /&gt;def _next_observation(self):&lt;br /&gt;  end = self.current_step + self.lookback_window_size + 1&lt;br /&gt;obs = np.array([&lt;br /&gt;    self.active_df[&amp;#39;Open&amp;#39;].values[self.current_step:end],  &lt;br /&gt;    self.active_df[&amp;#39;High&amp;#39;].values[self.current_step:end],&lt;br /&gt;    self.active_df[&amp;#39;Low&amp;#39;].values[self.current_step:end],&lt;br /&gt;    self.active_df[&amp;#39;Close&amp;#39;].values[self.current_step:end],&lt;br /&gt;    self.active_df[&amp;#39;Volume_(BTC)&amp;#39;].values[self.current_step:end],])&lt;br /&gt;scaled_history = self.scaler.fit_transform(self.account_history)&lt;br /&gt;obs = np.append(obs, scaled_history[:, -(self.lookback_window_size + 1):], axis=0)&lt;br /&gt;return obs&lt;br /&gt;```&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:140%"&gt;Take action&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;We have established our observation space, and now it is time to write our ladder function, and then take the robot&amp;#39;s scheduled action. Whenever self.steps_left == 0 for our current trading session, we will sell our BTC and call _reset_session(). Otherwise, we will set reward to the current net value. If we run out of funds, we will set done to True.&lt;br /&gt;```&lt;br /&gt;def step(self, action):&lt;br /&gt;  current_price = self._get_current_price() + 0.01&lt;br /&gt;  self._take_action(action, current_price)&lt;br /&gt;  self.steps_left -= 1&lt;br /&gt;  self.current_step += 1&lt;br /&gt;if self.steps_left == 0:&lt;br /&gt;    self.balance += self.btc_held * current_price&lt;br /&gt;    self.btc_held = 0&lt;br /&gt;    self._reset_session()&lt;br /&gt;obs = self._next_observation()&lt;br /&gt;  reward = self.net_worth&lt;br /&gt;  done = self.net_worth &amp;lt;= 0&lt;br /&gt;return obs, reward, done, {}&lt;br /&gt;```&lt;br /&gt;Taking trading action is as simple as getting current_price, determining the actions to be executed and the quantity to buy or sell. Let&amp;#39;s quickly write _take_action so that we can test our environment.&lt;br /&gt;```&lt;br /&gt;def _take_action(self, action, current_price):&lt;br /&gt;  action_type = action[0]&lt;br /&gt;  amount = action[1] / 10&lt;br /&gt;btc_bought = 0&lt;br /&gt;  btc_sold = 0&lt;br /&gt;  cost = 0&lt;br /&gt;  sales = 0&lt;br /&gt;if action_type &amp;lt; 1:&lt;br /&gt;    btc_bought = self.balance / current_price * amount&lt;br /&gt;    cost = btc_bought * current_price * (1 + self.commission)&lt;br /&gt;    self.btc_held += btc_bought&lt;br /&gt;    self.balance -= cost&lt;br /&gt;elif action_type &amp;lt; 2:&lt;br /&gt;    btc_sold = self.btc_held * amount&lt;br /&gt;    sales = btc_sold * current_price  * (1 - self.commission)&lt;br /&gt;    self.btc_held -= btc_sold&lt;br /&gt;    self.balance += sales&lt;br /&gt;```&lt;br /&gt;Finally, in the same method, we will attach the transaction to self.trades and update our net value and account history.&lt;br /&gt;```&lt;br /&gt;if btc_sold &amp;gt; 0 or btc_bought &amp;gt; 0:&lt;br /&gt;    self.trades.append({&lt;br /&gt;      &amp;#39;step&amp;#39;: self.frame_start+self.current_step,&lt;br /&gt;      &amp;#39;amount&amp;#39;: btc_sold if btc_sold &amp;gt; 0 else btc_bought,&lt;br /&gt;      &amp;#39;total&amp;#39;: sales if btc_sold &amp;gt; 0 else cost,&lt;br /&gt;      &amp;#39;type&amp;#39;: &amp;quot;sell&amp;quot; if btc_sold &amp;gt; 0 else &amp;quot;buy&amp;quot;&lt;br /&gt;    })&lt;br /&gt;self.net_worth = self.balance + self.btc_held * current_price&lt;br /&gt;  self.account_history = np.append(self.account_history, [&lt;br /&gt;    [self.net_worth],&lt;br /&gt;    [btc_bought],&lt;br /&gt;    [cost],&lt;br /&gt;    [btc_sold],&lt;br /&gt;    [sales]&lt;br /&gt;  ], axis=1)&lt;br /&gt;```&lt;br /&gt;Our robot can start a new environment now, complete the environment gradually, and take actions that affect the environment. It&amp;#39;s time to watch the trade.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:140%"&gt;Watch our robot trade&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Our rendering method can be as simple as calling print (self.net_word), but it is not interesting enough. Instead, we will draw a simple candle chart, which contains a separate chart of the trading volume column and our net worth.&lt;br /&gt;&lt;br /&gt;We will get the code in StockTrackingGraph.py from my last article and redesign it to adapt to the Bitcoin environment. You can get the code from my Github.&lt;br /&gt;&lt;br /&gt;The first change we need to make is to update self.df [&amp;#39;Date &amp;#39;] to self.df [&amp;#39;Timestamp&amp;#39;] and delete all calls to date2num, because our date is already in unix timestamp format. Next, in our rendering method, we will update the date tag to print human-readable dates instead of numbers.&lt;br /&gt;```&lt;br /&gt;from datetime import datetime&lt;br /&gt;```&lt;br /&gt;First, import the datetime library, and then we will use utcfromtimestampmethod to obtain the UTC string from each timestamp and strftime so that it is formatted as a string: Y-m-d H:M format.&lt;br /&gt;```&lt;br /&gt;date_labels = np.array([datetime.utcfromtimestamp(x).strftime(&amp;#39;%Y-%m-%d %H:%M&amp;#39;) for x in self.df[&amp;#39;Timestamp&amp;#39;].values[step_range]])&lt;br /&gt;```&lt;br /&gt;Finally, we will change self. df[&amp;#39;Volume &amp;#39;] to self. df[&amp;#39;Volume_ (BTC)&amp;#39;] to match our dataset. After completing these, we are ready. Back to our BitcoinTradingEnv, we can write rendering methods to display the chart now.&lt;br /&gt;```&lt;br /&gt;def render(self, mode=&amp;#39;human&amp;#39;, **kwargs):&lt;br /&gt;  if mode == &amp;#39;human&amp;#39;:&lt;br /&gt;    if self.viewer == None:&lt;br /&gt;      self.viewer = BitcoinTradingGraph(self.df,&lt;br /&gt;                                        kwargs.get(&amp;#39;title&amp;#39;, None))&lt;br /&gt;self.viewer.render(self.frame_start + self.current_step,&lt;br /&gt;                       self.net_worth,&lt;br /&gt;                       self.trades,&lt;br /&gt;                       window_size=self.lookback_window_size)&lt;br /&gt;```&lt;br /&gt;We can watch our robots trade Bitcoin now.&lt;br /&gt;&lt;br /&gt;Visualize our robot trading with Matplotlib&lt;br /&gt;&lt;br /&gt;The green phantom label represents the buying of BTC, and the red phantom label represents the selling. The white label in the upper right corner is the current net value of the robot, and the label in the lower right corner is the current price of Bitcoin. It&amp;#39;s simple and elegant. Now, it&amp;#39;s time to train our robots and see how much money we can make!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:140%"&gt;Training time &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;One of the criticisms I received in the previous article was lack of cross-validation and the failure to divide the data into training sets and test sets. The purpose of this is to test the accuracy of the final model on new data that has never been seen before. Although this is not the focus of that article, it is really very important. Because we use time series data, we don&amp;#39;t have many choices in cross validation.&lt;br /&gt;&lt;br /&gt;For example, a common form of cross-validation is called k-fold validation. In this validation, you divide the data into k equal groups, one by one, individually, as the test group and use the rest of the data as the training group. However, time series data are highly dependent on time, which means that subsequent data is highly dependent on previous data. So k-fold will not work, because our robot will learn from future data before trading, which is an unfair advantage.&lt;br /&gt;&lt;br /&gt;When applied to time series data, the same flaw applies to most other cross-validation strategies. Therefore, we only need to use a part of the complete data frame number as the training set from the frame number to some arbitrary indexes, and use the rest of the data as the test set.&lt;br /&gt;```&lt;br /&gt;slice_point = int(len(df) - 100000)&lt;br /&gt;train_df = df[:slice_point]&lt;br /&gt;test_df = df[slice_point:]&lt;br /&gt;```&lt;br /&gt;Next, since our environment is only set up to handle a single number of data frames, we will create two environments, one for the training data and one for the test data.&lt;br /&gt;```&lt;br /&gt;train_env = DummyVecEnv([lambda: BitcoinTradingEnv(train_df, commission=0, serial=False)])&lt;br /&gt;test_env = DummyVecEnv([lambda: BitcoinTradingEnv(test_df, commission=0, serial=True)])&lt;br /&gt;```&lt;br /&gt;Now, training our model is as simple as creating a robot using our environment and calling model.learn.&lt;br /&gt;```&lt;br /&gt;model = PPO2(MlpPolicy,&lt;br /&gt;             train_env,&lt;br /&gt;             verbose=1, &lt;br /&gt;             tensorboard_log=&amp;quot;./tensorboard/&amp;quot;)&lt;br /&gt;model.learn(total_timesteps=50000)&lt;br /&gt;```&lt;br /&gt;Here, we use tensor plates, so we can visualize our tensor flow charts easily and view some quantitative indicators about our robot. For example, the following is the discounted rewards chart of many robots with more than 200,000 time steps:&lt;br /&gt;&lt;a href="https://stocksharp.com/file/150393
" title="https://stocksharp.com/file/150393
"&gt;https://stocksharp.com/file/150393
&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Wow, it seems that our robot is very profitable! Our best robot can even achieve 1000x balance in 200,000 steps, and the rest will increase at least 30 times on average!&lt;br /&gt;&lt;br /&gt;At this time, I realized that there was a mistake in the environment... After fixing the bug, this is the new reward chart:&lt;br /&gt;&lt;a href="https://stocksharp.com/file/150392
" title="https://stocksharp.com/file/150392
"&gt;https://stocksharp.com/file/150392
&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As you can see, some of our robots are doing well, while others are going bankrupt. However, robots with good performance can reach 10 times or even 60 times the initial balance at most. I must admit that all profitable machines are trained and tested without commission, so it is unrealistic for our robots to make any real money. But at least we found the way!&lt;br /&gt;&lt;br /&gt;Let&amp;#39;s test our robots in the test environment (using new data they have never seen before) to see how they will behave.&lt;br /&gt;&lt;a href="https://stocksharp.com/file/150391
" title="https://stocksharp.com/file/150391
"&gt;https://stocksharp.com/file/150391
&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Our well-trained robots will go bankrupt when trading new test data&lt;br /&gt;&lt;br /&gt;Obviously, we still have a lot of work to do. By simply switching models to use A2C with stable baseline instead of the current PPO2 robot, we can improve our performance on this data set greatly. Finally, according to Sean O&amp;#39;Gorman&amp;#39;s suggestion, we can update our reward function slightly, so that we can add reward to net worth, rather than just realize high net worth and stay there.&lt;br /&gt;```&lt;br /&gt;reward = self.net_worth - prev_net_worth&lt;br /&gt;```&lt;br /&gt;These two changes alone can improve the performance of the test dataset greatly, and as you can see below, we were finally able to profit on new data that were not available in the training set.&lt;br /&gt;&lt;a href="https://stocksharp.com/file/150394
" title="https://stocksharp.com/file/150394
"&gt;https://stocksharp.com/file/150394
&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;But we can do better. In order to improve these results, we need to optimize our super parameters and train our robots for a longer time. It&amp;#39;s time for the GPU to start working and firing on all cylinders!&lt;br /&gt;&lt;br /&gt;So far, this article has been a little long, and we still have many details to consider, so we plan to take a rest here. In the next article, we will use Bayesian optimization to partition the best hyperparameters for our problem space and prepare for training/testing on GPU using CUDA.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:140%"&gt;Conclusion&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;In this article, we begin to use reinforcement learning to create a profitable Bitcoin trading robot from scratch. We can complete the following tasks:&lt;br /&gt;&lt;br /&gt;1. Create a Bitcoin trading environment from scratch using OpenAI&amp;#39;s gym.&lt;br /&gt;&lt;br /&gt;2. Use Matplotlib to build the visualization of the environment.&lt;br /&gt;&lt;br /&gt;3. Use simple cross-validation to train and test our robot.&lt;br /&gt;&lt;br /&gt;4. Adjust our robots slightly to achieve profits.&lt;br /&gt;&lt;br /&gt;Although our trading robot was not as profitable as we had hoped, we are already moving in the right direction. Next time, we will ensure that our robots can consistently beat the market. We will see how our trading robots process real-time data. Please continue to follow my next article and Viva Bitcoin!&lt;br /&gt;&lt;br /&gt;From: &lt;a target="_blank" rel="nofollow" href="https://stocksharp.com/away/?u=AQAAAAAAAAAezbpL9G-wNBo0jpp0vfUOQlbPNxIPafGj0KHUDS3Y61BeAcaxEvK7y74tUKh9Dc6P6huJd4NkgULHYBN66HApDeOTVDwt37lQqVGu0Cx5rUGWuAlBmiMzfGlsdvJUY0E" title="https://blog.mathquant.com/2023/02/01/create-a-bitcoin-trading-robot-that-wont-lose-money.html"&gt;https://blog.mathquant.c...hat-wont-lose-money.html&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/25704/</id>
    <title type="text">From Quantitative Trading to Asset Management - CTA Strategy Development for Absolute Return</title>
    <published>2024-04-18T03:37:38Z</published>
    <updated>2024-04-18T03:37:38Z</updated>
    <author>
      <name>Quant</name>
      <uri>https://stocksharp.com/users/186455/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <category term="#trading" />
    <category term="#cryptocurrency" />
    <category term="#arbitrage" />
    <category term="#strategy" />
    <category term="#return" />
    <category term="#asset" />
    <category term="#trend" />
    <category term="#position" />
    <category term="#FMZQuant" />
    <category term="#CTA" />
    <content type="html">&lt;span style="font-size:140%"&gt;&lt;b&gt;Preface&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;Why should I take this course?&lt;/b&gt;&lt;br /&gt;What do you gain from taking this course? First of all, this course is based on JavaScript and Python programming languages. Language is only a technology. Finally, we should apply this technology into an industry. Quantitative trading is an emerging industry, which is currently in a rapid development stage and has a large demand for talents.&lt;br /&gt;&lt;br /&gt;Through the systematic learning of this course, you can have a deeper understanding of the field of quantitative trading. If you are a student preparing to enter the field of quantitative trading, it will also help you. If you are a stock or futures investment enthusiast, then quantitative trading can assist your subjective trading. By developing trading strategies, you can gain profits in the financial market, and also broaden the channels and platforms for your investment and financial management.&lt;br /&gt;&lt;br /&gt;Before that, let me talk about my personal trading experience. I am not a finance major, I studied statistics. At first, I began to trade stocks subjectively in my school days. Later, I became a quantitative trading practitioner of domestic private equity funds, mainly engaged in strategy research and strategy development.&lt;br /&gt;&lt;br /&gt;I have been trading in this circle for more than ten years, and have developed various types of strategies. My investment philosophy is: risk control is above all else and focuses on absolute returns. The topic of our topic is: from quantitative trading to asset management - CTA strategy development for absolute return.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:140%"&gt;1. Futures CTA strategy money-making logic&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;1.1 Understanding Futures CTA&lt;/b&gt;&lt;br /&gt;Someone may ask what CTA is? What exactly is the CTA? CTA is called commodity trading advisors in foreign countries and investment manager in China. The traditional CTA is to collect the funds of the majority of investors, then entrust them to professional investment institutions, and finally invest in stock index futures, commodity futures, and treasury bond futures through trading advisers (namely CTA).&lt;br /&gt;&lt;br /&gt;But in fact, with the continuous development and expansion of the global futures market, the concept of CTA is also expanding, and its scope is far beyond traditional futures. It can invest not only in the futures market, but also in the interest rate market, the stock market, the foreign exchange market and the option market. As long as there is a certain amount of historical data for this variety, it can develop corresponding CTA strategies based on these historical data.&lt;br /&gt;&lt;br /&gt;As early as the 1980s, the electronic trading technology was not mature. At that time, most traders judged the future trend of commodity futures by drawing technical indicators manually, such as William index, KDJ, RSI, MACD, CCI, etc. Later, traders set up a special CTA fund to help customers manage assets. It was not until the popularization of electronic trading in the 1980s that the real CTA fund began to appear.&lt;br /&gt;&lt;br /&gt;*Changes in CTA fund management size*&lt;br /&gt;&lt;a href="https://stocksharp.com/file/150373
" title="https://stocksharp.com/file/150373
"&gt;https://stocksharp.com/file/150373
&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;In billions of dollars&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Let&amp;#39;s look at the chart above. Especially with the rise of quantitative trading, the scale of global CTA funds has increased from US $130.6 billion in 2005 to more than US $300 billion in 2015. CTA strategy has also become one of the mainstream investment strategies of global hedge funds.&lt;br /&gt;&lt;br /&gt;Rising alongside the size is the performance of CTA funds. Let&amp;#39;s look at the Barclays CTA index in the chart below. The Barclay CTA index is a representative industry benchmark for global commodity trading advisers. From the end of 1979 to the end of 2016, the cumulative return of the Barclay CTA Fund Index was up to 28.95 times, the annualized return was 9.59%, the Sharp ratio was 0.37, and the maximum withdrawal was 15.66%.&lt;br /&gt;&lt;br /&gt;Because in the asset allocation portfolio, the CTA strategy usually maintains very low correlation with other strategies. As shown in the red circle below, during the global stock bear market from 2000 to 2002 and the global subprime crisis in 2008, the Barclay CTA fund index not only did not fall but also achieved positive returns. When the stock market and bond market were in crisis, CTA could provide strong returns. In addition, we can see that the profit level of the Barclay Commodity CTA Index since 1980 has been stronger than the S&amp;amp;P 500, and the withdrawal is also much lower than the S&amp;amp;P 500.&lt;br /&gt;&lt;a href="https://stocksharp.com/file/150375
" title="https://stocksharp.com/file/150375
"&gt;https://stocksharp.com/file/150375
&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The development of CTA in China has only been in the past ten years, but the momentum is very strong. This is mostly due to the relatively open trading environment of domestic commodity futures, the low threshold of trading funds, the use of margin system to trade in both long and short positions, the low transaction costs, the more advanced technical structure of the exchange compared with stocks, and the easier system trading.&lt;br /&gt;&lt;br /&gt;Since 2010, CTA funds have mainly existed in the form of private funds. With the gradual opening of the investment scope of the fund special account in domestic policies, CTA funds began to exist in the form of fund special account. Its more transparent and open operation mode has also become a necessary tool for more investors to allocate assets.&lt;br /&gt;&lt;br /&gt;CTA strategies are also more suitable for individual traders than other trading strategies in terms of ease of entry, capital threshold, execution of trading strategies, and API connectivity. Domestic futures contracts are very small. For example, corn or soybean meal can be traded for thousands of yuan, and there is almost no capital threshold. In addition, because some CTA strategies come from traditional technical analysis, it is relatively easy compared with other strategies.&lt;br /&gt;&lt;br /&gt;The design process of CTA strategy is also relatively simple. First, the historical data is processed initially, and then input into the quantitative model. The quantitative model includes the trading strategy formed by mathematical modeling, programming design and other tools, and the trading signal is generated by calculating and analyzing these data. Of course, in actual development, it is not as simple as the above chart. Here we just give you an overall concept.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1.2 Type of futures CTA strategy&lt;/b&gt;&lt;br /&gt;From the perspective of trading strategy, CTA strategy is also diversified: it can be a trend strategy or an arbitrage strategy; It can be a large-period medium and long-term strategy, or an intraday short term strategy; The strategy logic can be based on technical analysis or fundamental analysis; It can be a subjective transaction or system transaction.&lt;br /&gt;&lt;br /&gt;CTA strategy has different classification methods. According to the transaction method, it can be divided into subjective transaction and system transaction. The development of foreign CTA strategy is relatively advanced, and the CTA strategy of system transaction has been close to 100%. According to the analysis method, it can be divided into basic analysis and technical analysis. According to the source of income, it can be divided into trend trading and oscillatory trading.&lt;br /&gt;&lt;br /&gt;In general, the CTA strategy accounts for about 70% of the total trading market, the trend strategy accounts for about 25%, and the counter trend or trend reversal strategy accounts for about 5%. Among them, the trend strategy with the largest proportion can be divided into high-frequency trading, intra-day trading, short- and medium-term trading, and medium- and long-term trading according to the position period.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:140%"&gt;High-frequency market making strategy&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;At present, there are two mainstream high-frequency trading strategies on the market: one is high-frequency market making strategy, the other is high-frequency arbitrage strategy. Market making strategy is to provide liquidity in the trading market. That is to say, in the trading market with a market maker, if someone wants to trade, the market maker must ensure that his order can be traded. If there is insufficient liquidity in the market and the order cannot be traded, the market maker must buy or sell the counterparty&amp;#39;s order.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:140%"&gt;High-frequency arbitrage strategy&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;High frequency arbitrage refers to trading two highly correlated stocks or ETF and ETF portfolio. According to the calculation method of ETF, the expected price of an ETF can be calculated in the same way. The ETF index price may subtract the ETF expected price to get a price difference. Usually, the price difference will run in a price channel. If the price difference breaks through the upper and lower channels, you can trade the price difference, wait for the return of the price difference, and earn income from it.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:140%"&gt;&lt;b&gt;Intraday strategy&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;In the literal sense, as long as there is no position overnight, it can be called intra-day trading strategy. Due to the short holding period of intraday trading, it is usually impossible to make profits immediately after entering the market, and then leave the market quickly. Therefore, this trading mode bears low market risk. However, because the market changes rapidly in a short period of time, the intra-day strategy usually has higher requirements for traders.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:140%"&gt;Medium and long-term strategy&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;In theory, the longer the holding period is, the greater the strategic capacity and the lower the risk-return ratio will be. Especially in institutional transactions, because of the limited capacity of short-term strategies, large funds cannot enter and exit the market in a short period of time, more long-term strategies will be allocated. Generally, the position period is several days and months, or even longer.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:140%"&gt;CTA strategy data&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Generally speaking, the CTA strategy is studied with minute, hour and daily data, which include: opening price, highest price, lowest price, closing price, trading volume, etc; Only a few CTA strategies will use Tick data, such as buy price, sell price, buy volume, sell volume and other in-depth data in L2 data.&lt;br /&gt;&lt;br /&gt;As for the basic idea of CTA strategy, the first thing we think of is based on traditional technical indicators, because there are many public reference materials in this area, and the logic is usually simple, most of which are based on statistical principles. For example, we are familiar with various technical indicators: MA, SMA, EMA, MACD, KDJ, RSI, BOLL, W&amp;amp;R, DMI, ATR, SAR, BIAS, OBV, etc.&lt;br /&gt;&lt;br /&gt;There are also some classic trading models on the market, which can also be used for reference and improved, including: multiple moving average combination, DualThrust, R-Breaker, Turtle trading method, grid trading method, etc.&lt;br /&gt;&lt;br /&gt;All of these are trading strategies based on traditional technical analysis. The process is to extract factors or trading conditions with probability advantages according to historical data and correct trading concepts, and assume that the market will still have such laws in the future. Finally, the trading strategy is realized by code and fully automatic trading. Open positions, stop profits, stop losses, increase positions, reduce positions, etc., which generally do not require manual intervention. In fact, it is a strategy of buying the winners by using the positive autocorrelation coefficient of the price time series.&lt;br /&gt;&lt;br /&gt;The biggest advantage of CTA strategy is that no matter whether the current market is rising or falling, it can obtain absolute returns, especially when the market is rapidly changing, or the market trend is obviously smooth, the advantage of the strategy is obvious, in short, if there is a trend, there is a gain. However, if the market is in a volatile situation or the trend is not obvious, the strategy may buy at a high point and sell at a low point, and stop the loss back and forth.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1.3 Profit principle of futures CTA strategy&lt;/b&gt;&lt;br /&gt;The futures CTA strategy is profitable mainly because of the following points:&lt;br /&gt;&lt;br /&gt;- 1. There is reflexivity in the price trend, which always continues in the way of trend. When investors observe that the price rises, they will follow the trend and buy, resulting in a further rise in the price. The same is true of price decreasing. Because investors are more irrational, sometimes we can see that the price rises abnormally and falls abnormally.&lt;br /&gt;- 2. Each investor has an asymmetrical tolerance for the ratio of profit to loss and a different tolerance for risk. For most retail investors, they are more inclined to choose a more conservative homeopathic trading method, and the market is also more prone to the trend.&lt;br /&gt;- 3. The formation of the price is determined by the transaction. It is true that the transaction is driven by people, but human nature is difficult to change. This is the reason why the fixed pattern will recur. The strategy is effective in the historical data backtesting, which indicates that it may also be effective in the future.&lt;br /&gt;&lt;br /&gt;In addition, the trading feature of trend tracking is to lose a small amount of money when there is no market, and make great fortune when the market comes. However, people who have done trading know that the market is volatile most of the time, and only in a small amount of time is the trend market. Therefore, the trend tracking strategy has a low winning rate in trading, but the overall profit and loss of each transaction is relatively large.&lt;br /&gt;&lt;br /&gt;Because the trend tracking strategy is unstable in terms of income, many investment institutions will use multiple varieties and strategies to build a portfolio, which will also be configured with a certain amount of reversal strategies. The reverse strategy is an autocorrelation with a negative coefficient in the time series of prices, i.e., high selling and low taking.&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Correlation between CTA and traditional assets&lt;/em&gt;&lt;br /&gt;&lt;a href="https://stocksharp.com/file/150376
" title="https://stocksharp.com/file/150376
"&gt;https://stocksharp.com/file/150376
&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Let&amp;#39;s look at the above chart. Theoretically, various strategies with different styles or relatively low correlation will sometimes the same and sometimes different trading signals at the same time when facing various changes in market prices. As multiple return curves overlap each other, the overall return is complementary, and the return curve will become more flat, thus reducing the volatility of returns.&lt;br /&gt;&lt;br /&gt;From the above point of view, it can be concluded that it is better to develop multiple moderate sub-strategies than to develop a master strategy. How to control these strategies? Here we can learn from the random forest algorithm in machine learning. The random forest is not an independent algorithm, it is a decision framework containing multiple decision trees. It is equivalent to the parent strategy above the sub-strategy of the decision tree. The substrategy cluster is organized and controlled through the parent strategy.&lt;br /&gt;&lt;br /&gt;Next, we need to design a parent strategy. We can evaluate the liquidity, profitability and stability of each variety in the entire commodity futures market to screen out the commodity futures variety portfolio with low volatility of earnings, and then conduct industry neutral screening, further reduce the overall volatility through the industry dispersion of the portfolio, and finally build the actual commodity futures multi-variety portfolio through market value matching for trading.&lt;br /&gt;&lt;br /&gt;Each variety can also be configured with multi-parameter strategies, and it can select the parameter combination with good performance in the backtest. When the market trend is obvious, the multi-parameter strategies will generally perform consistently, which is equivalent to adding positions; When the market is in a volatile situation, the performance of multiple sets of parameter strategies will usually be inconsistent, so that they can hedge risks by going long or short, respectively, which is equivalent to reducing positions. This can further reduce the maximum backtest rate of the portfolio, while maintaining the overall rate of return unchanged.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:140%"&gt;2. Classic futures CTA strategy example&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Newton once said: If I see further than others, it is because I stand on the shoulders of giants.&lt;br /&gt;&lt;br /&gt;The CTA strategies publicly available on the market include the SMA strategy, the Bollinger band strategy, the turtle trading rules, the momentum strategy, the arbitrage strategy, and so on. Quantitative trading strategies have one characteristic, that is, they will slowly fail once they are made public. But this does not affect us to learn from these strategies and learn from the essence of them, so that we can solve problems on the shoulders of giants.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2.1 Analysis of futures fundamentals (inventory, basis difference, price)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The fundamental analysis does not need to care about the short-term price trend. It is believed that the value will be reflected in the price ultimately. It is more about analyzing the factors behind the price to determine how much the variety is worth. Generally, the top-down analysis method is adopted: from macro factors, variety factors and other factors.&lt;br /&gt;&lt;a href="https://stocksharp.com/file/150377
" title="https://stocksharp.com/file/150377
"&gt;https://stocksharp.com/file/150377
&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;We can see from the above chart that there are many factors that affect commodity prices, and these data are changing constantly. It is beyond the ability of individual retail investors to obtain these huge data, let alone objective analysis.&lt;br /&gt;&lt;br /&gt;In fact, the fundamental analysis of commodity futures is not to analyze all the factors. We only need to grasp the core elements of fundamental analysis to find out the rules from the complex information.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:140%"&gt;Macro factors&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Macroeconomic data is complex and changeable. Every day, every moment, there are many economic data published, from national politics, central banks, investment banks, official and unofficial. In addition to the political and economic crisis, macro-analysis is a good material for chatting, but not practical. Peter Lynch, a famous fund management expert in the United States, once said: &amp;quot;I spend no more than 15 minutes on the analysis of the economic situation every year&amp;quot;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:140%"&gt;Variety factor&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;In the fundamental analysis, the variety analysis is mainly to analyze premium and discount, supply and demand relationship, commodity inventory, industrial profit, etc. It can be said that mastering the variety factor analysis of commodity futures can judge most of the market trend.&lt;br /&gt;&lt;br /&gt;As friends who have done futures know, domestic commodity futures can be simply divided into industrial products and agricultural products. The analysis methods of industrial products and agricultural products are different. We will elaborate on the two aspects of supply and demand. In industrial products, supply is relatively stable. Unless there is a major technological breakthrough, production capacity is unlikely to change significantly in a short period of time. Therefore, the main factor affecting the price of industrial products is demand. The demand for agricultural products is relatively stable. In the long run, the demand for agricultural products changes, but in the short run, the demand for agricultural products tends to be stable, so the main factor affecting the price of agricultural products is supply.&lt;br /&gt;&lt;br /&gt;Therefore, according to the laws of economics, it is the relationship between supply and demand that determines the price of goods ultimately. In theory, as long as the data of supply and demand can be obtained, the future price of goods can be determined. For industrial products, the supply data is easy to obtain, but it is difficult to obtain the demand data. For agricultural products, the demand data is easy to obtain, and it is difficult to obtain the supply data.&lt;br /&gt;&lt;br /&gt;In fact, we can further subtract. The mutual result of supply and demand in the economic market is inventory. We can judge the strength of the relationship between market supply and demand through inventory data. If the inventory of a commodity is very high, it means that the market supply is greater than the demand, and the commodity price will decrease on the premise that the external conditions remain unchanged. If the inventory of a commodity is very low, it means that the market demand is greater than supply, and the commodity price will increase on the premise that the external conditions remain unchanged.&lt;br /&gt;&lt;br /&gt;In addition to analyzing commodity inventory, we also need to analyze the price difference between the spot market and the futures market, which is also called the basis difference. If the futures price is greater than the spot price, we call it the futures premium; If the futures price is less than the spot price, we call it the futures discount. According to the futures delivery system, on the futures delivery date, the futures price should be equal to the spot price.&lt;br /&gt;&lt;br /&gt;Regardless of the premium or discount, due to the constraints of the futures delivery system, the futures price on the delivery date should be equal to the spot price in theory. As the delivery date approaches, both the spot price and the futures price will tend to be consistent. One is the return of futures to spot, and the other is the return of spot to futures.&lt;br /&gt;&lt;br /&gt;According to the above principle, we can use inventory and basis difference to determine future futures prices at the same time. If the inventory of a commodity is low, and if the futures price is much lower than the spot price, we can judge that the demand of the spot market is greater than the supply, and the probability of the spot price increasing in the future is large; Also due to the futures delivery system, as the delivery date approaches, the futures price will rise, and it will be equal to the spot price. The probability of futures price increasing is greater in the future.&lt;br /&gt;&lt;br /&gt;Finally, we judge the probable direction of the future price through the inventory and basis difference, but there is no accurate point of buying and selling, so we need to cooperate with technical analysis to give a clear signal of entry and exit. The structure of the whole fundamental analysis is: low inventory + deep discount + technical analysis long position signal = go long; High inventory + substantial premium + technical analysis short position signal = go short.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2.2 Turtle trading rules&lt;/b&gt;&lt;br /&gt;When it comes to trading strategies, we have to talk about the representative turtle trading rules. The turtle trading rule comes from the most famous experiment in the history of trading. Richard Dennis, a commodity speculator, wants to know whether great traders are born or trained. To this end, in 1983, he recruited 13 people and taught them the basic concepts of futures trading, as well as his own trading methods and principles. These students were called &amp;quot;turtles&amp;quot;.&lt;br /&gt;&lt;br /&gt;In the following four years, the Turtles achieved an average annual compound interest of 80%. Dennis proved that with a simple system and rules, people with little or no trading experience can become excellent traders. However, some turtles sell turtle trading rules on the website for profit. In order to prevent this behavior, two original turtles, Curtis Firth and Arthur Maddock, decided to make the turtle trading rules available to the public free of charge on the website.&lt;br /&gt;&lt;br /&gt;After the truth came out, people found that the Turtle trading rules adopted the optimized Donchian channel and used ATR indicators for position management. After decades of historical tests, it has become an easy trading method for ordinary retail investors to make profits. It still works today in some varieties.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:140%"&gt;Turtle core principles&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;- Mastering advantages: find a trading strategy with positive expectations, because in the long run, it can create positive returns.&lt;br /&gt;- Manage risk: control risk and hold your position, otherwise you may not wait for a day to make profits.&lt;br /&gt;- Perseverance: Only by unswervingly implementing your strategy, can you truly achieve systematic results.&lt;br /&gt;- Simple and clear: In the long run, simple systems have more vitality than complex systems.&lt;br /&gt;&lt;br /&gt;So next, let&amp;#39;s see what the Turtle trading rules say.&lt;br /&gt;1. Market - what to buy and sell, essentially in which markets to trade. Turtles are futures traders. They choose the markets with large trading volume and high liquidity only. Because choosing the markets with inactive trading will increase the extra slippage of entry and exit, and will also miss many opportunities of trend.&lt;br /&gt;2. Position size - how much to buy or sell is a very important part of the whole strategy, which is usually ignored or wrongly treated by most people. The Turtle trading rule adopts ATR, that is, the average real volatility index, to calculate the open position, increase position signal and stop loss signal. This is a very ingenious design. The original intention is to adjust the size of the position through the absolute volatility of the market. When the market volatility is strong, reduce the position, and when the market volatility is weak, increase the position. It first defines a unit whose formula is: (total assets * 1%)/ATR. The initial position is 1 unit. Even if the decline of the variety on that day reaches the level of ATR, the loss on that day can be controlled within 1% of the total asset. If the price rises by 0.5 unit, the long position will increase their positions by 1 unit, up to 4 units.&lt;br /&gt;3. Market entry - Turtle&amp;#39;s market entry is based on the Donchian channel. When the price rises above the highest price of the first 20 or 55 K lines, it will enter the market to go long. When the price falls below the lowest price of the first 20 or 55 K lines, it will enter the market to go short. When the signal appears, enter the market for trading, without waiting for the close or the next K-line.&lt;br /&gt;4. Stop loss - In the long run, transactions that do not stop loss will not succeed, but most traders are holding loss positions and trying to take chances to hope that the market will turn over. Turtle rules stipulate when to withdraw from the loss position strictly. If you hold long position orders and the price drops by 2 units, the long position is closed with a stop loss. If you hold a short position order and the price rises by 2 units, the short position will be closed with a stop loss.&lt;br /&gt;5. Stop profit - In Turtle rules, stop profit means losing a lot of floating profits, which is also an unacceptable part for many traders. If you currently hold long position orders and the price falls below the track of the Donchian channel of ten days, close all long orders; If the current short position order is held and the price rises above the track of the Donchian channel of ten days, close all short positions.&lt;br /&gt;&lt;br /&gt;Thus we can see that although the Turtle trading rules look very simple, in fact it has formed a real sense of the prototype of the trading system. It covers all aspects of a complete trading system, leaving no room for traders to make subjective imaginative decisions, which just makes the advantages of programmed operation of the system play, including: entry and exit rules, fund management and risk control, etc.&lt;br /&gt;&lt;br /&gt;The biggest advantage of the turtle trading method is to help us establish a set of effective trading methods. It is a combination of batch opening, dynamic stop profits and stop loss, and the trend following strategy of the market, especially the use of ATR value and the concept of position management, which is very worth learning. Of course, it also has a common problem with trend tracking strategy, that is, floating profit and taking back. It is likely that all the floating profits gained from buying the winners will be taken out due to the following wave of sharp falls. It is very strong in the general trend, and not as good as expected in the volatile market.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:140%"&gt;3. Develop futures CTA strategy in practice&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;3.1 Development of CTA trend strategy based on MyLanguage&lt;/b&gt;&lt;br /&gt;At the end of the last century, a very amazing trading method began to prevail in the field of financial investment in the United States. After thousands of people&amp;#39;s practice, people found that this method has effectiveness and great practical value. At the same time, it has been recognized by many investment experts and professional traders. Until now, it can be applied to almost all financial investment fields perfectly, whether foreign exchange, gold, stocks, futures, crude oil, or index and bond, which is chaos operation method.&lt;br /&gt;&lt;br /&gt;The word chaos refers to the description of the chaotic state of the universe originally. Its idea is that the result is inevitable, but because the existing knowledge cannot calculate the result, because the calculation itself is also changing the result, the maximum or minimum result may appear at last, but there is no inevitable result. This is very similar to the trading market. Participants also change the market when they analyze the market and buy and sell. The market has eternal variability. When the participants understand the new form of the market, the market also understands that it is recognized by the participants, so the variation occurs. And it will tend to change in the unknown direction of the participants. It has enough wisdom to prevent the participants from catching its change rules, that is, the market is not stable, and the understanding of the past of the market cannot represent the future.&lt;br /&gt;&lt;br /&gt;The chaos operation method is a complete set of investment ideas, trading strategies and entry and exit signals, invented by Bill Williams. At present, many investors in the world adopt chaos operation to participate in market transactions. Because the development of China&amp;#39;s financial market lags behind, and chaos theory is also a relatively new idea, there are few people studying chaos operation methods in China. Since chaos operation method is a trading strategy with high universality and can be applied to almost all financial investment fields, including stocks, bonds, futures, foreign exchange, and digital currency, this course uses a simplified version of chaos strategy as a starting point to improve your investment interest and income.&lt;br /&gt;&lt;br /&gt;As the name implies, the theoretical basis of chaos operation method is chaos theory, which was proposed by meteorologist Edward Lorenz. It was one of the greatest scientific discoveries at the end of the 20th century. He put forward the famous &amp;quot;butterfly effect&amp;quot;. Bill Williams applied chaos theory to the field of financial investment creatively, combined with fractal geometry, nonlinear dynamics and other disciplines, and created a series of very effective technical analysis indicators.&lt;br /&gt;&lt;br /&gt;The entire Chaos operation method is composed of five major dimensions (technical indicators):&lt;br /&gt;&lt;br /&gt;- Alligator&lt;br /&gt;&lt;br /&gt;- The Fractal&lt;br /&gt;&lt;br /&gt;- The Momentum&lt;br /&gt;&lt;br /&gt;- Acceleration&lt;br /&gt;&lt;br /&gt;- The Balance Line&lt;br /&gt;&lt;a href="https://stocksharp.com/file/150378
" title="https://stocksharp.com/file/150378
"&gt;https://stocksharp.com/file/150378
&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Let&amp;#39;s look at the above chart. The Alligator is a set of equilibrium lines using fractal geometry and nonlinear dynamics. Its essence is to extend the exponentially weighted moving average, which is a kind of mean line, but its calculation method is slightly more complicated than the ordinary mean line. Next, let&amp;#39;s look at how to define the Alligator in MyLanguage:&lt;br /&gt;```&lt;br /&gt;// Parameters&lt;br /&gt;N1:=11;&lt;br /&gt;N2:=21;&lt;br /&gt;&lt;br /&gt;// Defining the price median&lt;br /&gt;N3:=N1+N2;&lt;br /&gt;N4:=N2+N3;&lt;br /&gt;HL:=(H+L)/2;&lt;br /&gt;&lt;br /&gt;// Alligator&lt;br /&gt;Y^^SMA(REF(HL,N3),N4,1);&lt;br /&gt;R:=SMA(REF(HL,N2),N3,1);&lt;br /&gt;G:=SMA(REF(HL,N1),N2,1);&lt;br /&gt;```&lt;br /&gt;First, we define 2 external parameters N1 and N2, and then calculate the average HL of the highest price and the lowest price according to the external parameters, and then calculate the average HL with different parameters. For teeth, it is the average of the middle period of the midline, and the jaw is the average of the large period of the midline. In this strategy, we use the jaw.&lt;br /&gt;&lt;br /&gt;In the chaos operation method, a fractal concept is defined vividly. We can make an analogy: open the palm of the hand, with the fingers facing up, the middle finger is the upper fractal, the left little finger and the ring finger, and the right index finger and thumb respectively, represent the K-line with no record high. A basic fractal is composed of these five K-lines. Then you can define fractal with the following code:&lt;br /&gt;```&lt;br /&gt;// Fractal&lt;br /&gt;TOP_N:=BARSLAST(REF(H,2)=HHV(H,5))+2;&lt;br /&gt;BOTTOM_N:=BARSLAST(REF(L,2)=LLV(L,5))+2;&lt;br /&gt;&lt;br /&gt;TOP:=REF(H,TOP_N);&lt;br /&gt;BOTTOM:=REF(L,BOTTOM_N);&lt;br /&gt;&lt;br /&gt;MAX_YRG^^MAX(MAX(Y,R),G); &lt;br /&gt;MIN_YRG^^MIN(MIN(Y,R),G); &lt;br /&gt;&lt;br /&gt;TOP_FRACTAL^^VALUEWHEN(H&amp;gt;=MAX_YRG,TOP);&lt;br /&gt;BOTTOM_FRACTAL^^VALUEWHEN(L&amp;lt;=MIN_YRG,BOTTOM);&lt;br /&gt;```&lt;br /&gt;After calculating the alligator and fractal, we can write a simple chaos operation strategy based on these two conditions, and use a group of exponentially weighted moving average lines as the benchmark price for calculating the alligator and fractal index. Of course, the original chaotic operation strategy will be more complex. The code is as follows:&lt;br /&gt;```&lt;br /&gt;// If there are no current long position orders and the closing price rises above the upper fractal and the upper fractal is above the alligator, open a long position.&lt;br /&gt;BKVOL=0 AND C&amp;gt;=TOP_FRACTAL AND TOP_FRACTAL&amp;gt;MAX_YRG,BPK(1);&lt;br /&gt;// If there are no current short position orders and the closing price falls below the lower fractal and the lower fractal is below the alligator, open a short position.&lt;br /&gt;SKVOL=0 AND C&amp;lt;=BOTTOM_FRACTAL AND BOTTOM_FRACTAL&amp;lt;MIN_YRG,SPK(1);&lt;br /&gt;&lt;br /&gt;// Long positions are closed if the closing price falls below the jaws of the alligator.&lt;br /&gt;C&amp;lt;Y,SP(BKVOL);&lt;br /&gt;// Short positions are closed if the closing price rises above the jaws of the alligator.&lt;br /&gt;C&amp;gt;Y,BP(SKVOL);&lt;br /&gt;```&lt;br /&gt;For ease of understanding, I wrote the detailed comments into the code directly. We can simply list the trading logic of this strategy as follows:&lt;br /&gt;&lt;br /&gt;- Long opening position: if there are no long position orders at present, and the closing price rises below the upper fractal, and the upper fractal is above the alligator.&lt;br /&gt;- Short opening position: if there are no short position orders at present, and the closing price falls below the lower fractal, and the lower fractal is below the alligator.&lt;br /&gt;- Long closing position: if the closing price falls below the alligator chin.&lt;br /&gt;- Short closing position: if the closing price rises above the alligator chin.&lt;br /&gt;&lt;br /&gt;Next, let&amp;#39;s see what the results of this simple chaos operation strategy backtest actually look like. In order to make the backtest more close to the real market environment, the commission is set to twice the exchange rate, and the opening and closing positions are subject to a sliding point of two jumps each. The backtest data type is the rebar index, and the trading type is the rebar main force continuous, with a fixed 1 lot opening position. The following is the preliminary backtest performance report at the 1-hour level.&lt;br /&gt;&lt;a href="https://stocksharp.com/file/150379
" title="https://stocksharp.com/file/150379
"&gt;https://stocksharp.com/file/150379
&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;From the capital curve and backtest performance data, the strategy performed well, and the overall capital curve was steadily upward. However, since the end of 2016, the market characteristics of rebar varieties have changed, from the unilateral trend of high volatility to the broad volatility trend. From the perspective of capital curve, the profit from 2017 to now is obviously weak.&lt;br /&gt;&lt;br /&gt;In a word, the essence of chaos operation method is to find a turning point, without caring about how the market goes or whether it is true or false breakout. If it breaks through the fractal, it will enter the market directly. Never try to predict the market, but be an observer and follower.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3.2 Development of CTA arbitrage strategy based on JavaScript language&lt;/b&gt;&lt;br /&gt;George Soros put forward an important proposition in &amp;quot;The Alchemy of Finance&amp;quot; written in 1987: I believe the market prices are always wrong in the sense that they present a biased view of the future. He believed that the market efficiency hypothesis is only a theoretical hypothesis. In fact, market participants are not always rational, and at each time point, participants cannot completely obtain and objectively interpret all information. Moreover, even if it is the same information, everyone&amp;#39;s feedback is different. That is to say, the price itself already contains the wrong expectations of market participants, so in essence, the market price is always wrong. This may be the profit source of arbitrageurs.&lt;br /&gt;&lt;br /&gt;According to the above principles, we can know that in an ineffective futures market, the reason why the market impact on delivery contracts in different periods is not always synchronous, and the pricing is not completely effective. Then, based on the delivery contract price of the same transaction object in different periods, if there is a large price difference between the two prices, we can buy and sell futures contracts in different periods at the same time for cross-period arbitrage.&lt;br /&gt;&lt;br /&gt;Like commodity futures, digital currency also has a cross-period arbitrage contract portfolio. For example, in the OKEX exchange, there are: ETC current week, ETC next week, ETC quarter. For example, suppose that the price difference between the current week of ETC and the quarter of ETC remains around 5 for a long time. If the price difference reaches 7 one day, we expect that the price difference will return to 5 in the future. Then we can sell ETC that week and buy ETC quarter at the same time to go short the price difference, vice versa.&lt;br /&gt;&lt;br /&gt;Although this price difference exists, there are many uncertainties in manual arbitrage due to time-consuming manual operations, poor accuracy and the impact of price changes. The charm of quantitative arbitrage lies in capturing arbitrage opportunities through quantitative models and formulating arbitrage trading strategies, as well as placing trading orders automatically to exchanges through programmed algorithms, so as to capture opportunities quickly and accurately and make profits efficiently and stably.&lt;br /&gt;&lt;br /&gt;This course will teach you how to use the FMZ Quant Trading Platform and the ETC futures contract in the OKEX exchange to demonstrate how to capture the instantaneous arbitrage opportunities, seize the profits that can be seen every time, and hedge the risks that may be encountered in the digital currency trading with a simple arbitrage strategy.&lt;br /&gt;&lt;br /&gt;Create a cross-period arbitrage strategy for digital currency&lt;br /&gt;Difficulty: Normal&lt;br /&gt;&lt;br /&gt;Strategy environment&lt;br /&gt;&lt;br /&gt;- Transaction object: Ether Classic (ETC)&lt;br /&gt;- Spread data: ETC current week - ETC quarter (omit cointegration test)&lt;br /&gt;- Transaction period: 5 minutes&lt;br /&gt;- Transaction period: 5 minutes&lt;br /&gt;- Transaction type: cross period of the same type&lt;br /&gt;&lt;br /&gt;Strategy logic&lt;br /&gt;&lt;br /&gt;- Conditions for opening positions with going long the price difference: if the current account has no positions and the price difference is less than the lower bound of the ball, then go long the price difference. That is, buy opening positions ETC for the week, sell opening positions ETC for the quarter.&lt;br /&gt;- Conditions for opening positions with going short the price difference: if there is no position in the current account, and the price difference is greater than the upper bound of the ball, then go short the price difference. That is, sell opening positions ETC for the week, buy opening positions ETC for the quarter.&lt;br /&gt;- Conditions for closing positions with going long the price difference: if the current account holds going long orders of ETC in the current week and holds going short orders of ETC quarter, and the price difference is greater than the middle bound of the ball, then close long the price difference. That is, sell closing positions ETC for the week, buy closing positions ETC for the quarter.&lt;br /&gt;- Conditions for closing positions with going short the price difference: if the current account holds going short orders of ETC in the current week, and holds going long orders of ETC quarter, and the price difference is less than the middle bound of the ball, then close short the price difference. That is, buy closing positions ETC for the week, sell closing positions ETC for the quarter.&lt;br /&gt;&lt;br /&gt;The above is a simple logic description of the cross-period arbitrage strategy of digital currency. So how to implement our ideas in the program? We try to build the framework on the FMZ Quant Trading Platform.&lt;br /&gt;```&lt;br /&gt;function Data() {}  // Basic data function&lt;br /&gt;Data.prototype.mp = function () {}  // Position function&lt;br /&gt;Data.prototype.boll = function () {}  // Indicator function&lt;br /&gt;Data.prototype.trade = function () {}  // Order placement function&lt;br /&gt;Data.prototype.cancelOrders = function () {}  // Order withdrawal function&lt;br /&gt;Data.prototype.isEven = function () {}  // Processing single contract function&lt;br /&gt;Data.prototype.drawingChart = function () {}  // Drawing function&lt;br /&gt;&lt;br /&gt;function onTick() {&lt;br /&gt;    var data = new Data(tradeTypeA, tradeTypeB);  // Create a basic data object&lt;br /&gt;    var accountStocks = data.accountData.Stocks;  // Account balance&lt;br /&gt;    var boll = data.boll(dataLength, timeCycle);  // Calculate the technical indicators of boll&lt;br /&gt;    data.trade();  // Calculate trading conditions to place an order&lt;br /&gt;    data.cancelOrders();  // Cancel orders&lt;br /&gt;    data.drawingChart(boll);  // Drawing&lt;br /&gt;    data.isEven();  // Processing of holding individual contract&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;//Entry function&lt;br /&gt;function main() {&lt;br /&gt;    while (true) {  // Enter the polling mode&lt;br /&gt;        onTick();  // Execute onTick function&lt;br /&gt;        Sleep(500);  // Sleep for 0.5 seconds&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;```&lt;br /&gt;Imagine what our trading process is like in supervisory trading. There is no essential difference in system transactions. It is nothing more than acquiring data, calculating data, placing an order transaction, and processing after placing an order. The same is true in the program. First, the program will execute the main function in line 20, which is a convention. When the program completes the trading strategy preprocessing (if any), it will enter the infinite loop mode, that is, the polling mode. In the polling mode, the onTick function will be executed repeatedly.&lt;br /&gt;&lt;br /&gt;Then in the onTick function, it is our trading process in the subjective transaction: first, obtain the basic price data, then obtain the account balance, then calculate the index, then calculate the trading conditions and place the order, and finally the processing after placing the order, including order cancellation, drawing, and processing a single contract.&lt;br /&gt;&lt;br /&gt;The strategy framework can be easily set up according to the strategy idea and transaction process. The whole strategy can be simplified into three steps:&lt;br /&gt;&lt;br /&gt;- Pre-processing before transaction.&lt;br /&gt;- Get and calculate data.&lt;br /&gt;- Place an order and deal with it later.&lt;br /&gt;&lt;br /&gt;Next, we need to fill in the necessary detail code in the strategy framework according to the actual transaction process and transaction details.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:140%"&gt;&lt;b&gt;I. Pre-processing before transaction&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. Declare the necessary global variables in the global scope.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;- Declare a chart object for the configuration chart&lt;br /&gt;```&lt;br /&gt;var chart = {}&lt;br /&gt;```&lt;br /&gt;- Call Chart function and initialize the chart&lt;br /&gt;```&lt;br /&gt;var ObjChart = Chart ( chart )&lt;br /&gt;```&lt;br /&gt;- Declare an empty array to store price difference series&lt;br /&gt;```&lt;br /&gt;var bars = []&lt;br /&gt;```&lt;br /&gt;- Declare a record history data timestamp variable&lt;br /&gt;```&lt;br /&gt;var oldTime = 0&lt;br /&gt;```&lt;br /&gt;&lt;b&gt;2. Configure the external parameters of the strategy.&lt;/b&gt;&lt;br /&gt;```&lt;br /&gt;var tradeTypeA = &amp;quot;this_week&amp;quot;; // Arbitrage A Contract&lt;br /&gt;var tradeTypeB = &amp;quot;quarter&amp;quot;; // Arbitrage B Contract&lt;br /&gt;var dataLength = 10; // Indicator period length&lt;br /&gt;var timeCycle = 1; // K-line period&lt;br /&gt;var name = &amp;quot;ETC&amp;quot;; // Currencies&lt;br /&gt;var unit = 1; // Order quantity&lt;br /&gt;```&lt;br /&gt;&lt;b&gt;3. Define the data processing function&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;- Basic data function: Data()&lt;br /&gt;Create a constructor, Data, and define its internal properties. Including: account data, position data, K-line data timestamp, buy/sell price of arbitrage A/B contract, and positive/negative arbitrage price difference.&lt;br /&gt;```&lt;br /&gt;function Data(tradeTypeA, tradeTypeB) { // Pass in arbitrage A contract and arbitrage B contract&lt;br /&gt;    this.accountData = _C(exchange.GetAccount); // Get account information&lt;br /&gt;    this.positionData = _C(exchange.GetPosition); // Get position information&lt;br /&gt;    var recordsData = _C(exchange.GetRecords); // Get K-line data&lt;br /&gt;    exchange.SetContractType(tradeTypeA); // Subscription arbitrage A contract&lt;br /&gt;    var depthDataA = _C(exchange.GetDepth); // Depth data of arbitrage A contract&lt;br /&gt;    exchange.SetContractType(tradeTypeB); // Subscription arbitrage B contract&lt;br /&gt;    var depthDataB = _C(exchange.GetDepth); // Depth data of arbitrage B contract&lt;br /&gt;    this.time = recordsData[recordsData.length - 1].Time; // Time of obtaining the latest data&lt;br /&gt;    this.askA = depthDataA.Asks[0].Price; // Sell one price of Arbitrage A contract&lt;br /&gt;    this.bidA = depthDataA.Bids[0].Price; // Buy one price of Arbitrage A contract&lt;br /&gt;    this.askB = depthDataB.Asks[0].Price; // Sell one price of Arbitrage B contract&lt;br /&gt;    this.bidB = depthDataB.Bids[0].Price; // Buy one price of Arbitrage B contract&lt;br /&gt;    // Positive arbitrage price differences (Sell one price of contract A - Buy one price of contract B)&lt;br /&gt;    this.basb = depthDataA.Asks[0].Price - depthDataB.Bids[0].Price;&lt;br /&gt;    // Negative arbitrage price differences (Buy one price of contract A - Sell one price of contract B)&lt;br /&gt;    this.sabb = depthDataA.Bids[0].Price - depthDataB.Asks[0].Price;&lt;br /&gt;}&lt;br /&gt;```&lt;br /&gt;- Get the position function: mp ( )&lt;br /&gt;Traverse the entire position array and return the position quantity of the specified contract and direction. If not, return false.&lt;br /&gt;```&lt;br /&gt;Data.prototype.mp = function (tradeType, type) {&lt;br /&gt;    var positionData = this.positionData; // Get position information&lt;br /&gt;    for (var i = 0; i &amp;lt; positionData.length; i++) {&lt;br /&gt;        if (positionData[i].ContractType == tradeType) {&lt;br /&gt;            if (positionData[i].Type == type) {&lt;br /&gt;                if (positionData[i].Amount &amp;gt; 0) {&lt;br /&gt;                    return positionData[i].Amount;&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    return false;&lt;br /&gt;}&lt;br /&gt;```&lt;br /&gt;- K-line and indicator function: boll()&lt;br /&gt;A new K-line sequence is synthesized according to the positive arbitrage/negative arbitrage price difference data. The data of upper track, middle track and lower track calculated by the boll indicator are returned.&lt;br /&gt;```&lt;br /&gt;Data.prototype.boll = function (num, timeCycle) {&lt;br /&gt;    var self = {}; // Temporary objects&lt;br /&gt;    // Median value of positive arbitrage price difference and negative arbitrage price difference&lt;br /&gt;    self.Close = (this.basb + this.sabb) / 2;&lt;br /&gt;    if (this.timeA == this.timeB) {&lt;br /&gt;        self.Time = this.time;&lt;br /&gt;    } // Compare two depth data timestamps&lt;br /&gt;    if (this.time - oldTime &amp;gt; timeCycle * 60000) {&lt;br /&gt;        bars.push(self);&lt;br /&gt;        oldTime = this.time;&lt;br /&gt;    } // Pass in the price difference data object into the K-line array according to the specified time period&lt;br /&gt;    if (bars.length &amp;gt; num * 2) {&lt;br /&gt;        bars.shift(); // Control the length of the K-line array&lt;br /&gt;    } else {&lt;br /&gt;        return;&lt;br /&gt;    }&lt;br /&gt;    var boll = TA.BOLL(bars, num, 2); // Call the boll indicator in the talib library&lt;br /&gt;    return {&lt;br /&gt;        up: boll[0][boll[0].length - 1], // boll indicator upper track&lt;br /&gt;        middle: boll[1][boll[1].length - 1], // boll indicator middle track&lt;br /&gt;        down: boll[2][boll[2].length - 1] // boll indicator down track&lt;br /&gt;    } // Return a processed boll indicator data&lt;br /&gt;}&lt;br /&gt;```&lt;br /&gt;- Order function: trade()&lt;br /&gt;Pass in the order contract name and order type, then place the order with consideration, and return the result after placing the order. Since it is necessary to place two orders in different directions at the same time, the buy/sell one price is converted within the function according to the contract name of the order.&lt;br /&gt;```&lt;br /&gt;Data.prototype.trade = function (tradeType, type) {&lt;br /&gt;    exchange.SetContractType(tradeType); // Resubscribe to a contract before placing an order&lt;br /&gt;    var askPrice, bidPrice;&lt;br /&gt;    if (tradeType == tradeTypeA) { // If the order is placed in contract A&lt;br /&gt;        askPrice = this.askA; // set askPrice&lt;br /&gt;        bidPrice = this.bidA; // set bidPrice&lt;br /&gt;    } else if (tradeType == tradeTypeB) { // If the order is placed in contract B&lt;br /&gt;        askPrice = this.askB; // set askPrice&lt;br /&gt;        bidPrice = this.bidB; // set bidPrice&lt;br /&gt;    }&lt;br /&gt;    switch (type) { // Match order placement mode&lt;br /&gt;        case &amp;quot;buy&amp;quot;:&lt;br /&gt;            exchange.SetDirection(type); // Set order placement mode&lt;br /&gt;            return exchange.Buy(askPrice, unit);&lt;br /&gt;        case &amp;quot;sell&amp;quot;:&lt;br /&gt;            exchange.SetDirection(type); // Set order placement mode&lt;br /&gt;            return exchange.Sell(bidPrice, unit);&lt;br /&gt;        case &amp;quot;closebuy&amp;quot;:&lt;br /&gt;            exchange.SetDirection(type); // Set order placement mode&lt;br /&gt;            return exchange.Sell(bidPrice, unit);&lt;br /&gt;        case &amp;quot;closesell&amp;quot;:&lt;br /&gt;            exchange.SetDirection(type); // Set order placement mode&lt;br /&gt;            return exchange.Buy(askPrice, unit);&lt;br /&gt;        default:&lt;br /&gt;            return false;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;```&lt;br /&gt;- Cancel Order Function: cancelOrders()&lt;br /&gt;Get an array of all outstanding orders and cancel them one by one. In addition, false is returned if there is an unfilled order, and true is returned if there is no unfilled order.&lt;br /&gt;```&lt;br /&gt;Data.prototype.cancelOrders = function () {&lt;br /&gt;    Sleep(500); // Delay before cancellation, because some exchanges, you know what I mean&lt;br /&gt;    var orders = _C(exchange.GetOrders); // Get an array of unfilled orders&lt;br /&gt;    if (orders.length &amp;gt; 0) { // If there are unfilled orders&lt;br /&gt;        for (var i = 0; i &amp;lt; orders.length; i++) { // Iterate through the array of unfilled orders&lt;br /&gt;            exchange.CancelOrder(orders[i].Id); // Cancel unfilled orders one by one&lt;br /&gt;            Sleep(500); // Delay 0.5 seconds&lt;br /&gt;        }&lt;br /&gt;        return false; // Return false if an unfilled order is cancelled&lt;br /&gt;    }&lt;br /&gt;    return true; // Return true if there are no unfilled orders&lt;br /&gt;}&lt;br /&gt;```&lt;br /&gt;- Handle holding a single contract: isEven()&lt;br /&gt;In the case of a single leg in the arbitrage transaction, we will simply close all positions. Of course, it can also be changed to the tracking method.&lt;br /&gt;```&lt;br /&gt;Data.prototype.isEven = function () {&lt;br /&gt;    var positionData = this.positionData; // Get position information&lt;br /&gt;    var type = null; // Switch position direction&lt;br /&gt;    // If the remaining 2 of the position array length is not equal to 0 or the position array length is not equal to 2&lt;br /&gt;    if (positionData.length % 2 != 0 || positionData.length != 2) {&lt;br /&gt;        for (var i = 0; i &amp;lt; positionData.length; i++) { // Iterate through the position array&lt;br /&gt;            if (positionData[i].Type == 0) { // If it is a long order&lt;br /&gt;                type = 10; // Set order parameters&lt;br /&gt;            } else if (positionData[i].Type == 1) { // If it is a short order&lt;br /&gt;                type = -10; // Set order parameters&lt;br /&gt;            }&lt;br /&gt;            // Close all positions&lt;br /&gt;            this.trade(positionData[i].ContractType, type, positionData[i].Amount);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;```&lt;br /&gt;- Drawing function: drawingChart ( )&lt;br /&gt;Call ObjChart Add () method, draw the necessary market data and indicator data in the chart: upper track, middle track, lower track, positive/negative arbitrage price difference.&lt;br /&gt;```&lt;br /&gt;Data.prototype.drawingChart = function (boll) {&lt;br /&gt;    var nowTime = new Date().getTime();&lt;br /&gt;    ObjChart.add([0, [nowTime, boll.up]]);&lt;br /&gt;    ObjChart.add([1, [nowTime, boll.middle]]);&lt;br /&gt;    ObjChart.add([2, [nowTime, boll.down]]);&lt;br /&gt;    ObjChart.add([3, [nowTime, this.basb]]);&lt;br /&gt;    ObjChart.add([4, [nowTime, this.sabb]]);&lt;br /&gt;    ObjChart.update(chart);&lt;br /&gt;}&lt;br /&gt;```&lt;br /&gt;&lt;b&gt;4. In the entry function main(), execute the pre-transaction pre-processing code, which will only run once after the program is started, including:&lt;/b&gt;&lt;br /&gt;- ```SetErrorFilter ( )``` to filter the unimportant information in the console&lt;br /&gt;- ```exchange.IO ( )``` to set the digital currency to be traded&lt;br /&gt;- ```ObjChart.reset ( )``` to clear the previous chart drawn before starting the program&lt;br /&gt;- ```LogProfitReset ( )``` to clear the status bar information before starting the program&lt;br /&gt;&lt;br /&gt;After the above pre-transaction pre-processing is defined, the next step is to enter the polling mode and execute the onTick() function repeatedly. It also sets the sleep time for Sleep () polling, because the API of some digital currency exchanges has built-in access limit for a certain period of time.&lt;br /&gt;```&lt;br /&gt;function main() {&lt;br /&gt;    // Filter the unimportant information in the console&lt;br /&gt;    SetErrorFilter(&amp;quot;429|GetRecords:|GetOrders:|GetDepth:|GetAccount|:Buy|Sell|timeout|Futures_OP&amp;quot;);&lt;br /&gt;    exchange.IO(&amp;quot;currency&amp;quot;, name + &amp;#39;_USDT&amp;#39;); // Set the digital currency to be traded&lt;br /&gt;    ObjChart.reset(); // Clear the previous chart drawn before starting the program&lt;br /&gt;    LogProfitReset(); // Clear the status bar information before starting the program&lt;br /&gt;    while (true) { // Enter the polling mode&lt;br /&gt;        onTick(); // Execute onTick function&lt;br /&gt;        Sleep(500); // Sleep for 0.5 seconds&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;```&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:140%"&gt;II. Get and calculate data&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;1. Obtain basic data object, account balance, and boll indicator data for use in the trading logic.&lt;br /&gt;```&lt;br /&gt;function onTick() {&lt;br /&gt;    var data = new Data(tradeTypeA, tradeTypeB); // Create a basic data object&lt;br /&gt;    var accountStocks = data.accountData.Stocks; // Account balance&lt;br /&gt;    var boll = data.boll(dataLength, timeCycle); // Get boll indicator data&lt;br /&gt;    if (!boll) return; // Return if there is no boll data&lt;br /&gt;}&lt;br /&gt;```&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:140%"&gt;III. Place an order and handle the follow-up&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;1. Execute the buying and selling operation according to the above strategic logic. First, judge whether the price and indicator conditions are valid, then judge whether the position conditions are valid, and finally execute the trade () order function.&lt;br /&gt;```&lt;br /&gt;// Explanation of the price difference&lt;br /&gt;// basb = (Sell one price of contract A - Buy one price of contract B)&lt;br /&gt;// sabb = (Buy one price of contract A - Sell one price of contract B)&lt;br /&gt;if (data.sabb &amp;gt; boll.middle &amp;amp;&amp;amp; data.sabb &amp;lt; boll.up) { // If sabb is higher than the middle track&lt;br /&gt;    if (data.mp(tradeTypeA, 0)) { // Check whether contract A has long orders before placing an order&lt;br /&gt;        data.trade(tradeTypeA, &amp;quot;closebuy&amp;quot;); // Contract A closes long position&lt;br /&gt;    }&lt;br /&gt;    if (data.mp(tradeTypeB, 1)) { // Check whether contract B has short orders before placing an order&lt;br /&gt;        data.trade(tradeTypeB, &amp;quot;closesell&amp;quot;); // Contract B closes short position&lt;br /&gt;    }&lt;br /&gt;} else if (data.basb &amp;lt; boll.middle &amp;amp;&amp;amp; data.basb &amp;gt; boll.down) { // If basb is lower than the middle track&lt;br /&gt;    if (data.mp(tradeTypeA, 1)) { // Check whether contract A has short orders before placing an order&lt;br /&gt;        data.trade(tradeTypeA, &amp;quot;closesell&amp;quot;); // Contract A closes short position&lt;br /&gt;    }&lt;br /&gt;    if (data.mp(tradeTypeB, 0)) { // Check whether contract B has long orders before placing an order&lt;br /&gt;        data.trade(tradeTypeB, &amp;quot;closebuy&amp;quot;); // Contract B closes long position&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;if (accountStocks * Math.max(data.askA, data.askB) &amp;gt; 1) { // If there is balance in the account&lt;br /&gt;    if (data.basb &amp;lt; boll.down) { // If basb price difference is lower than the down track&lt;br /&gt;        if (!data.mp(tradeTypeA, 0)) { // Check whether contract A has long orders before placing an order&lt;br /&gt;            data.trade(tradeTypeA, &amp;quot;buy&amp;quot;); // Contract A opens long position&lt;br /&gt;        }&lt;br /&gt;        if (!data.mp(tradeTypeB, 1)) { // Check whether contract B has short orders before placing an order&lt;br /&gt;            data.trade(tradeTypeB, &amp;quot;sell&amp;quot;); // Contract B opens short position&lt;br /&gt;        }&lt;br /&gt;    } else if (data.sabb &amp;gt; boll.up) { // If sabb price difference is higher than the upper track&lt;br /&gt;        if (!data.mp(tradeTypeA, 1)) { // Check whether contract A has short orders before placing an order&lt;br /&gt;            data.trade(tradeTypeA, &amp;quot;sell&amp;quot;); // Contract A opens short position&lt;br /&gt;        }&lt;br /&gt;        if (!data.mp(tradeTypeB, 0)) { // Check whether contract B has long orders before placing an order&lt;br /&gt;            data.trade(tradeTypeB, &amp;quot;buy&amp;quot;); // Contract B opens long position&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;```&lt;br /&gt;2. After the order is placed, it is necessary to deal with the abnormal situations such as the unsettled order and the holding of a single contract. And draw the chart.&lt;br /&gt;```&lt;br /&gt;data.cancelOrders(); // cancel orders&lt;br /&gt;data.drawingChart(boll); // drawing&lt;br /&gt;data.isEven(); // Handle holding individual contracts&lt;br /&gt;```&lt;br /&gt;As above, we have created a simple cross-period arbitrage strategy of digital currency completely through more than 200 lines code. The complete code is as follows:&lt;br /&gt;```&lt;br /&gt;// Global variable&lt;br /&gt;// Declare a chart object for the configuration chart&lt;br /&gt;var chart = {&lt;br /&gt;    __isStock: true,&lt;br /&gt;    tooltip: {&lt;br /&gt;        xDateFormat: &amp;#39;%Y-%m-%d %H:%M:%S, %A&amp;#39;&lt;br /&gt;    },&lt;br /&gt;    title: {&lt;br /&gt;        text: &amp;#39;transaction profit and loss curve (detailed)&amp;#39;&lt;br /&gt;    },&lt;br /&gt;    rangeSelector: {&lt;br /&gt;        buttons: [{&lt;br /&gt;            type: &amp;#39;hour&amp;#39;,&lt;br /&gt;            count: 1,&lt;br /&gt;            text: &amp;#39;1h&amp;#39;&lt;br /&gt;        }, {&lt;br /&gt;            type: &amp;#39;hour&amp;#39;,&lt;br /&gt;            count: 2,&lt;br /&gt;            text: &amp;#39;3h&amp;#39;&lt;br /&gt;        }, {&lt;br /&gt;            type: &amp;#39;hour&amp;#39;,&lt;br /&gt;            count: 8,&lt;br /&gt;            text: &amp;#39;8h&amp;#39;&lt;br /&gt;        }, {&lt;br /&gt;            type: &amp;#39;all&amp;#39;,&lt;br /&gt;            text: &amp;#39;All&amp;#39;&lt;br /&gt;        }],&lt;br /&gt;        selected: 0,&lt;br /&gt;        inputEnabled: false&lt;br /&gt;    },&lt;br /&gt;    xAxis: {&lt;br /&gt;        type: &amp;#39;datetime&amp;#39;&lt;br /&gt;    },&lt;br /&gt;    yAxis: {&lt;br /&gt;        title: {&lt;br /&gt;            text: &amp;#39;price difference&amp;#39;&lt;br /&gt;        },&lt;br /&gt;        opposite: false,&lt;br /&gt;    },&lt;br /&gt;    series: [{&lt;br /&gt;        name: &amp;quot;upper track&amp;quot;,&lt;br /&gt;        id: &amp;quot;line1,up&amp;quot;,&lt;br /&gt;        data: []&lt;br /&gt;    }, {&lt;br /&gt;        name: &amp;quot;middle track&amp;quot;,&lt;br /&gt;        id: &amp;quot;line2,middle&amp;quot;,&lt;br /&gt;        data: []&lt;br /&gt;    }, {&lt;br /&gt;        name: &amp;quot;down track&amp;quot;,&lt;br /&gt;        id: &amp;quot;line3,down&amp;quot;,&lt;br /&gt;        data: []&lt;br /&gt;    }, {&lt;br /&gt;        name: &amp;quot;basb&amp;quot;,&lt;br /&gt;        id: &amp;quot;line4,basb&amp;quot;,&lt;br /&gt;        data: []&lt;br /&gt;    }, {&lt;br /&gt;        name: &amp;quot;sabb&amp;quot;,&lt;br /&gt;        id: &amp;quot;line5,sabb&amp;quot;,&lt;br /&gt;        data: []&lt;br /&gt;    }]&lt;br /&gt;};&lt;br /&gt;var ObjChart = Chart(chart); // Drawing object&lt;br /&gt;var bars = []; // Storage price difference series&lt;br /&gt;var oldTime = 0; // Record historical data timestamp&lt;br /&gt;&lt;br /&gt;// Parameters&lt;br /&gt;var tradeTypeA = &amp;quot;this_week&amp;quot;; // Arbitrage A contract&lt;br /&gt;var tradeTypeB = &amp;quot;quarter&amp;quot;; // Arbitrage B contract&lt;br /&gt;var dataLength = 10; // Indicator period length&lt;br /&gt;var timeCycle = 1; // K-line period&lt;br /&gt;var name = &amp;quot;ETC&amp;quot;; // Currencies&lt;br /&gt;var unit = 1; // Order quantity&lt;br /&gt;&lt;br /&gt;// basic data&lt;br /&gt;function Data(tradeTypeA, tradeTypeB) { // Pass in arbitrage A contract and arbitrage B contract&lt;br /&gt;    this.accountData = _C(exchange.GetAccount); // Get account information&lt;br /&gt;    this.positionData = _C(exchange.GetPosition); // Get position information&lt;br /&gt;    var recordsData = _C(exchange.GetRecords); // Get K-line data&lt;br /&gt;    exchange.SetContractType(tradeTypeA); // Subscribe to arbitrage A contract&lt;br /&gt;    var depthDataA = _C(exchange.GetDepth); // Arbitrage A contract depth data&lt;br /&gt;    exchange.SetContractType(tradeTypeB); // Subscribe to arbitrage B contract&lt;br /&gt;    var depthDataB = _C(exchange.GetDepth); // Arbitrage B contract depth data&lt;br /&gt;    this.time = recordsData[recordsData.length - 1].Time; // Time to get the latest data&lt;br /&gt;    this.askA = depthDataA.Asks[0].Price; // Sell one price of arbitrage A contract&lt;br /&gt;    this.bidA = depthDataA.Bids[0].Price; // Buy one price of arbitrage A contract&lt;br /&gt;    this.askB = depthDataB.Asks[0].Price; // Sell one price of arbitrage B contract&lt;br /&gt;    this.bidB = depthDataB.Bids[0].Price; // Buy one price of arbitrage B contract&lt;br /&gt;    // Positive arbitrage price difference (Sell one price of contract A - Buy one price of contract B)&lt;br /&gt;    this.basb = depthDataA.Asks[0].Price - depthDataB.Bids[0].Price;&lt;br /&gt;    // Negative arbitrage price difference (Buy one price of contract A - Sell one price of contract B)&lt;br /&gt;    this.sabb = depthDataA.Bids[0].Price - depthDataB.Asks[0].Price;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Get position&lt;br /&gt;Data.prototype.mp = function (tradeType, type) {&lt;br /&gt;    var positionData = this.positionData; // Get position information&lt;br /&gt;    for (var i = 0; i &amp;lt; positionData.length; i++) {&lt;br /&gt;        if (positionData[i].ContractType == tradeType) {&lt;br /&gt;            if (positionData[i].Type == type) {&lt;br /&gt;                if (positionData[i].Amount &amp;gt; 0) {&lt;br /&gt;                    return positionData[i].Amount;&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    return false;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Synthesis of new K-line data and boll indicator data&lt;br /&gt;Data.prototype.boll = function (num, timeCycle) {&lt;br /&gt;    var self = {}; // Temporary objects&lt;br /&gt;    // Median value of between positive arbitrage price difference and negative arbitrage price difference&lt;br /&gt;    self.Close = (this.basb + this.sabb) / 2;&lt;br /&gt;    if (this.timeA == this.timeB) {&lt;br /&gt;        self.Time = this.time;&lt;br /&gt;    } // Compare two depth data timestamps&lt;br /&gt;    if (this.time - oldTime &amp;gt; timeCycle * 60000) {&lt;br /&gt;        bars.push(self);&lt;br /&gt;        oldTime = this.time;&lt;br /&gt;    } // Pass in the price difference data object into the K-line array according to the specified time period&lt;br /&gt;    if (bars.length &amp;gt; num * 2) {&lt;br /&gt;        bars.shift(); // Control the length of the K-line array&lt;br /&gt;    } else {&lt;br /&gt;        return;&lt;br /&gt;    }&lt;br /&gt;    var boll = TA.BOLL(bars, num, 2); // Call the boll indicator in the talib library&lt;br /&gt;    return {&lt;br /&gt;        up: boll[0][boll[0].length - 1], // boll indicator upper track&lt;br /&gt;        middle: boll[1][boll[1].length - 1], // boll indicator middle track&lt;br /&gt;        down: boll[2][boll[2].length - 1] // boll indicator down track&lt;br /&gt;    } // Return a processed boll indicator data&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Place an order&lt;br /&gt;Data.prototype.trade = function (tradeType, type) {&lt;br /&gt;    exchange.SetContractType(tradeType); // Resubscribe to a contract before placing an order&lt;br /&gt;    var askPrice, bidPrice;&lt;br /&gt;    if (tradeType == tradeTypeA) { // If the order is placed in contract A&lt;br /&gt;        askPrice = this.askA; // Set askPrice&lt;br /&gt;        bidPrice = this.bidA; // Set bidPrice&lt;br /&gt;    } else if (tradeType == tradeTypeB) { // If the order is placed in contract B&lt;br /&gt;        askPrice = this.askB; // Set askPrice&lt;br /&gt;        bidPrice = this.bidB; // Set bidPrice&lt;br /&gt;    }&lt;br /&gt;    switch (type) { // Match order placement mode&lt;br /&gt;        case &amp;quot;buy&amp;quot;:&lt;br /&gt;            exchange.SetDirection(type); // Set order placement mode&lt;br /&gt;            return exchange.Buy(askPrice, unit);&lt;br /&gt;        case &amp;quot;sell&amp;quot;:&lt;br /&gt;            exchange.SetDirection(type); // Set order placement mode&lt;br /&gt;            return exchange.Sell(bidPrice, unit);&lt;br /&gt;        case &amp;quot;closebuy&amp;quot;:&lt;br /&gt;            exchange.SetDirection(type); // Set order placement mode&lt;br /&gt;            return exchange.Sell(bidPrice, unit);&lt;br /&gt;        case &amp;quot;closesell&amp;quot;:&lt;br /&gt;            exchange.SetDirection(type); // Set order placement mode&lt;br /&gt;            return exchange.Buy(askPrice, unit);&lt;br /&gt;        default:&lt;br /&gt;            return false;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Cancel orders&lt;br /&gt;Data.prototype.cancelOrders = function () {&lt;br /&gt;    Sleep(500); // Delay before cancellation, because some exchanges, you know what I mean&lt;br /&gt;    var orders = _C(exchange.GetOrders); // Get an array of unfilled orders&lt;br /&gt;    if (orders.length &amp;gt; 0) { // If there are unfilled orders&lt;br /&gt;        for (var i = 0; i &amp;lt; orders.length; i++) { // Iterate through the array of unfilled orders&lt;br /&gt;            exchange.CancelOrder(orders[i].Id); // Cancel unfilled orders one by one&lt;br /&gt;            Sleep(500); // Sleep for 0.5 seconds&lt;br /&gt;        }&lt;br /&gt;        return false; // Return false if an unfilled order is cancelled&lt;br /&gt;    }&lt;br /&gt;    return true; // Return true if there are no unfilled orders&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Handle holding individual contracts&lt;br /&gt;Data.prototype.isEven = function () {&lt;br /&gt;    var positionData = this.positionData; // Get position information&lt;br /&gt;    var type = null; // Switch position direction&lt;br /&gt;    // If the remaining 2 of the position array length is not equal to 0 or the position array length is not equal to 2&lt;br /&gt;    if (positionData.length % 2 != 0 || positionData.length != 2) {&lt;br /&gt;        for (var i = 0; i &amp;lt; positionData.length; i++) { // Iterate through the position array&lt;br /&gt;            if (positionData[i].Type == 0) { // If it is a long order&lt;br /&gt;                type = 10; // Set order parameters&lt;br /&gt;            } else if (positionData[i].Type == 1) { // If it is a short order&lt;br /&gt;                type = -10; // Set order parameters&lt;br /&gt;            }&lt;br /&gt;            // Close all positions&lt;br /&gt;            this.trade(positionData[i].ContractType, type, positionData[i].Amount);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Drawing&lt;br /&gt;Data.prototype.drawingChart = function (boll) {&lt;br /&gt;    var nowTime = new Date().getTime();&lt;br /&gt;    ObjChart.add([0, [nowTime, boll.up]]);&lt;br /&gt;    ObjChart.add([1, [nowTime, boll.middle]]);&lt;br /&gt;    ObjChart.add([2, [nowTime, boll.down]]);&lt;br /&gt;    ObjChart.add([3, [nowTime, this.basb]]);&lt;br /&gt;    ObjChart.add([4, [nowTime, this.sabb]]);&lt;br /&gt;    ObjChart.update(chart);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Trading conditions&lt;br /&gt;function onTick() {&lt;br /&gt;    var data = new Data(tradeTypeA, tradeTypeB); // Create a basic data object&lt;br /&gt;    var accountStocks = data.accountData.Stocks; // Account balance&lt;br /&gt;    var boll = data.boll(dataLength, timeCycle); // Get boll indicator data&lt;br /&gt;    if (!boll) return; // Return if there is no boll data&lt;br /&gt;    // Explanation of price difference&lt;br /&gt;    // basb = (Sell one price of contract A - Buy one price of contract B)&lt;br /&gt;    // sabb = (Buy one price of contract A - Sell one price of contract B)&lt;br /&gt;    if (data.sabb &amp;gt; boll.middle &amp;amp;&amp;amp; data.sabb &amp;lt; boll.up) { // If sabb is higher than the middle track&lt;br /&gt;        if (data.mp(tradeTypeA, 0)) { // Check whether contract A has long orders before placing an order&lt;br /&gt;            data.trade(tradeTypeA, &amp;quot;closebuy&amp;quot;); // Contract A closes long position&lt;br /&gt;        }&lt;br /&gt;        if (data.mp(tradeTypeB, 1)) { // Check whether contract B has short orders before placing an order&lt;br /&gt;            data.trade(tradeTypeB, &amp;quot;closesell&amp;quot;); // Contract B closes short position&lt;br /&gt;        }&lt;br /&gt;    } else if (data.basb &amp;lt; boll.middle &amp;amp;&amp;amp; data.basb &amp;gt; boll.down) { // If basb is lower than the middle track&lt;br /&gt;        if (data.mp(tradeTypeA, 1)) { // Check whether contract A has short orders before placing an order&lt;br /&gt;            data.trade(tradeTypeA, &amp;quot;closesell&amp;quot;); // Contract A closes short position&lt;br /&gt;        }&lt;br /&gt;        if (data.mp(tradeTypeB, 0)) { // Check whether contract B has long orders before placing an order&lt;br /&gt;            data.trade(tradeTypeB, &amp;quot;closebuy&amp;quot;); // Contract B closes long position&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    if (accountStocks * Math.max(data.askA, data.askB) &amp;gt; 1) { // If there is a balance in the account&lt;br /&gt;        if (data.basb &amp;lt; boll.down) { // If basb price difference is lower than the down track&lt;br /&gt;            if (!data.mp(tradeTypeA, 0)) { // Check whether contract A has long orders before placing an order&lt;br /&gt;                data.trade(tradeTypeA, &amp;quot;buy&amp;quot;); // Contract A opens long position&lt;br /&gt;            }&lt;br /&gt;            if (!data.mp(tradeTypeB, 1)) { // Check whether contract B has short orders before placing an order&lt;br /&gt;                data.trade(tradeTypeB, &amp;quot;sell&amp;quot;); // Contract B opens short position&lt;br /&gt;            }&lt;br /&gt;        } else if (data.sabb &amp;gt; boll.up) { // If sabb price difference is higher than the upper track&lt;br /&gt;            if (!data.mp(tradeTypeA, 1)) { // Check whether contract A has short orders before placing an order&lt;br /&gt;                data.trade(tradeTypeA, &amp;quot;sell&amp;quot;); // Contract A opens short position&lt;br /&gt;            }&lt;br /&gt;            if (!data.mp(tradeTypeB, 0)) { // Check whether contract B has long orders before placing an order&lt;br /&gt;                data.trade(tradeTypeB, &amp;quot;buy&amp;quot;); // Contract B opens long position&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;    data.cancelOrders(); // Cancel orders&lt;br /&gt;    data.drawingChart(boll); // Drawing&lt;br /&gt;    data.isEven(); // Handle holding individual contracts&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// Entry function&lt;br /&gt;function main() {&lt;br /&gt;    // Filter unimportant information in the console&lt;br /&gt;    SetErrorFilter(&amp;quot;429|GetRecords:|GetOrders:|GetDepth:|GetAccount|:Buy|Sell|timeout|Futures_OP&amp;quot;);&lt;br /&gt;    exchange.IO(&amp;quot;currency&amp;quot;, name + &amp;#39;_USDT&amp;#39;); //Set the digital currency to be traded&lt;br /&gt;    ObjChart.reset(); // Clear the previous chart drawn before starting the program&lt;br /&gt;    LogProfitReset(); // Clear the status bar information before starting the program&lt;br /&gt;    while (true) { // Enter polling mode&lt;br /&gt;        onTick(); // Execute the onTick function&lt;br /&gt;        Sleep(500); // Sleep for 0.5 seconds&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;```&lt;br /&gt;Arbitrage trading originated from the stock trading strategy of Morgan Stanley. Its idea is that the price difference of two highly correlated varieties conforms to the &amp;quot;popcorn process&amp;quot;, that is, the price difference keeps returning to the mean from a position that deviates from the historical mean, and then deviates again from the mean.&lt;br /&gt;&lt;br /&gt;Therefore, we can buy low and sell high on the price difference to gain profits. Then, according to the principle of standard deviation in statistics, the Bollinger band is formed by a middle track and the upper and lower tracks calculated by the standard deviation, the formation of three mesh band, which are very practical in the price difference arbitrage transaction.&lt;br /&gt;&lt;br /&gt;After testing, operating according to this strategy, the overall income is relatively stable, although the income is not very much each time without considering the handling fee and impact cost. It should be noted that due to the statistical arbitrage, there is a risk of reverse expansion of the price difference. We must consider the stop-loss problem when designing. Secondly, we also need to pay attention to the impact cost. When the liquidity of the two contracts involved in the transaction shrinks, it will have a great impact on the income, and investors should avoid it as appropriate.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:140%"&gt;4. Advanced iteration of CTA strategy development&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;4.1 Avoid the pitfalls of futures CTA strategy&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;In the last two classes, we wrote a trend strategy in MyLanguage and an arbitrage strategy in JavaScript. We didn&amp;#39;t see any problems in the strategy backtest. However, quantitative trading is not a program, whose backtest can be done directly without any problems.&lt;br /&gt;&lt;br /&gt;In fact, the backtest is only a simulation of the strategy. It is only used to evaluate the performance of the strategy in the historical data. It allows traders to evaluate and discard some trading strategies quickly.&lt;br /&gt;&lt;br /&gt;In many cases, strategies that look great in the backtest often fail to meet the backtest standard in the real market for a variety of reasons. Some of them are beyond the control of traders, but some of the failures are caused by common or potential errors.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:140%"&gt;Static data and dynamic data&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;We should have a concept of static data and dynamic data to quantify first. In the backtest, we use static historical data. The price of opening high and closing low with each K-line is complete, and each transaction signal can be closed 100%. But the data in the real market is dynamic. For example, if the maximum price is greater than the maximum price within 1 hour of opening, buy. But if the current K-line has not finished, the maximum price is dynamic, and the trading signal may flicker back and forth. This situation indicates that the strategy uses the future function in judging the conditions of the buy and sell trading.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:140%"&gt;Future function&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;What is the future function? Let&amp;#39;s take a look at Baidu Encyclopedia&amp;#39;s explanation first: A quantity depends on another quantity, such as quantity A and quantity B. If B changes, A changes, then A is a function of B. If B is a later quantity, A is an earlier quantity, A changes with B, and A is a future function of B. You may be confused.&lt;br /&gt;&lt;br /&gt;Generally speaking, it is a function of quoting future data, such as forecasting tomorrow&amp;#39;s price with tomorrow&amp;#39;s price. If a technical indicator contains a future function, its signal is uncertain. It is often the current transaction signal. When the next K-line appears, the signal disappears or changes position.&lt;br /&gt;&lt;br /&gt;The closing price is a future function. The closing price is always changing until the latest K-line runs out. You must wait until the K-line runs out to determine the closing price. Since the closing price itself is a future function, all technical indicators based on the closing price are also future functions.&lt;br /&gt;&lt;br /&gt;Therefore, if a technical indicator uses the confirmed closing price as the basic data, the trading signal will not change no matter how long it has passed, it can be said that the technical indicator does not refer to the future function. But the basic data it uses is the unconfirmed closing price, so this technical indicator refers to the future function, and the trading signal may change in practical application.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:140%"&gt;Past prices&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;The future function uses the future price, which may also use the past price on the contrary. This is also a problem that many novices tend to ignore. To better illustrate this problem in the future, let&amp;#39;s take an example: if the current maximum price is greater than the maximum price within 1 hour after the opening, buy at the opening price. Obviously, there is no problem with the conditions of the buying and selling signal, but the price of the order has used the past price.&lt;br /&gt;&lt;br /&gt;In the backtest, the strategy is normal, because the backtest engine based on static data can be closed 100% only if there is a buy signal. However, when the highest price is greater than the highest price within 1 hour after the opening, it is certain that the order cannot be issued at the previous price opening price.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:140%"&gt;Price vacuum&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;The so-called price vacuum refers to the prices displayed on the K-line chart, but the prices that cannot be traded in the real market, mainly divided into the following cases:&lt;br /&gt;&lt;br /&gt;- 1. Anyone who has done trading knows that it is difficult to buy when the price is up and difficult to sell when the price is down. But it can be concluded in the backtest.&lt;br /&gt;- 2. The matching mechanism of the exchange is price priority and time priority. Some varieties will often have a large number of orders in the market. If you are trading with orders in the real market, you must rank behind others&amp;#39; orders. You can only trade after others&amp;#39; orders are traded. Even before the price can be traded, the price has changed. However, in the backtest, if your strategy is to deal with the order, you will deal in time, which is different from the real market environment.&lt;br /&gt;- 3. If you use an arbitrage strategy, the profit of the backtest is very high, because it is assumed that you have captured these price differences every time. In reality, many price differentials can&amp;#39;t be grabbed, or only one leg can be grabbed. Generally speaking, it must be the one that is not conducive to your direction. Then you need to fill the other leg immediately. At this time, the sliding point is no longer 1 or 2 points, and the arbitrage strategy itself aims to earn the price difference of these points. This situation cannot be simulated in the backtest. The real profit is not as good as the backtest.&lt;br /&gt;- 4. Although the black swan event is not used commonly, it still has a great impact on quantitative trading. As shown in the chart below, in the case of the black swan event of the foreign exchange Swiss franc, both high and low prices can be seen from the chart. In fact, in the extreme market of the day, the middle price is vacuum, and a large number of stop loss orders cause stampede events. The liquidity is zero, and it is very difficult to deal with, but it can stop loss in the backtest.&lt;br /&gt;&lt;a href="https://stocksharp.com/file/150381
" title="https://stocksharp.com/file/150381
"&gt;https://stocksharp.com/file/150381
&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:140%"&gt;Overfitting&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Overfitting is a common mistake made by quantitative trading beginners. What is overfitting? To take a simple example, some people use a great deal of exercises to memorize each question in the school exam. He can&amp;#39;t do it if the subject changes a little during the exam. Because he memorized the practice of each question in a very complex way, he did not abstract the general rules.&lt;br /&gt;&lt;a href="https://stocksharp.com/file/150380
" title="https://stocksharp.com/file/150380
"&gt;https://stocksharp.com/file/150380
&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Like the chart above, a model can adapt to data perfectly as long as it is complex enough. This is also true of overfitting in quantitative trading. If your strategy is complex and it has many external parameters, there will always be one or several parameters that can perfectly fit the historical market in the limited historical data backtest.&lt;br /&gt;&lt;br /&gt;However, in the future real market, the price change may exceed your strategy limit. In fact, the essence of quantitative trading strategy development is the process of matching local non-random data from a large number of seemingly random data. Therefore, we need to use statistical knowledge to avoid the trap. How do we do it?&lt;br /&gt;&lt;br /&gt;The compromise solution is to use intra-sample and extra-sample data. Divide the whole data into two parts, and use the intra-sample as the training set, which is responsible for the data backtest. The extra-sample is used as the test set and is responsible for verification. If there is little historical data, you can also use the cross-test method.&lt;br /&gt;&lt;br /&gt;If you find that the data out of the sample performs not well, and you feel that it is too bad to lose the model or you are unwilling to admit that your model is not good, and you continue to optimize the model for the extra-sample data until the extra-sample data also perform well, then you must lose your money in the end.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:140%"&gt;Survivorship bias&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;The survivorship bias can be explained by the following examples:&lt;br /&gt;1. When standing at the tuyere, pigs will fly.&lt;br /&gt;2. People who sell parachutes online are praised, because people with problems with parachutes don&amp;#39;t live anymore.&lt;br /&gt;3. The reporter interviewed whether passengers have bought tickets on the bus, because people without tickets can&amp;#39;t get on the bus at all.&lt;br /&gt;4. The media advertises that the lottery can be won, because the media will not actively promote people who do not win the lottery.&lt;br /&gt;&lt;br /&gt;In the above example, we can find that the information that people usually receive is actually filtered, which makes a large number of data or samples ignored selectively, and the result is that the conclusions based on survivorship bias have deviated from real-time. So in quantitative trading, we also need to focus on whether the results of the backtest are part of luck. In many cases, the results of the backtest may be the best performance in the whole backtest. Pay attention to the following figure:&lt;br /&gt;&lt;a href="https://stocksharp.com/file/150382
" title="https://stocksharp.com/file/150382
"&gt;https://stocksharp.com/file/150382
&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- Left chart (semblance): A very good trading strategy. Without major withdrawal, investors can obtain stable investment returns.&lt;br /&gt;- Right chart (the reality): This is only the best one in 200 random trading backtests.&lt;br /&gt;&lt;br /&gt;The picture on the left is a very good trading strategy. The capital curve is good, and there is no significant withdrawal, and stable profit returns can be obtained. But look at the picture on the right. It is only the best one in the hundreds of backtest transactions. On the other hand, when we look at the financial market, there are always more stars and less longevity stars. If the strategy of the traders is consistent with the market situation, then the market every year can create a batch of stars, but it is difficult to see longevity stars who can make steady profits for more than three years in a row.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:140%"&gt;Cost shock&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Unless you are pending an order, you may have a sliding price when trading. On the varieties with active trading, the bid-price and ask-price are usually different in one point. On the varieties with inactive trading, the difference may be greater. Every time you want to take the initiative to close a deal, you need one point difference at least, or even more. However, in the backtest, we do not need to consider the issue of transaction, as long as there is a signal, we can trade, so in order to simulate the real trading environment, we must add one sliding price at least.&lt;br /&gt;&lt;br /&gt;Especially for the strategy that is traded more frequently, if the sliding price is not added when the strategy is backtested, the capital curve will always tilt upward, and once the reasonable sliding price is added, it will turn to a loss immediately. In addition, this phenomenon is not only caused by point difference, but also needs to be considered in the real trading environment: network delay, software and hardware systems, server response and other issues.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:140%"&gt;Strategy capacity&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;The same strategy will be quite different in efficient and inefficient markets, even the opposite. For example, in inefficient markets such as domestic stock markets, commodity futures, and foreign digital currencies, due to the small base of trading volume, the capacity of high-frequency strategy itself is not very large, and there is no profit space for more people, and even the strategy that was originally profitable has become a loss. But in an efficient foreign exchange market, it can accommodate many different types of high-frequency strategies.&lt;br /&gt;&lt;br /&gt;The above are the problems and pitfalls that may occur in the development and use of strategies. For an experienced trading system developer, backtesting is a must. Because it can tell you whether a strategic idea can be verified in historical transactions. But many times, backtesting does not mean that it will be profitable in the future. Because there are too many pitfalls in the backtest, you won&amp;#39;t understand without paying for some lessons. This course can help you avoid many quantitative detours and pitfalls at least.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4.2 Establish the best position management&lt;/b&gt;&lt;br /&gt;In &amp;quot;Reminiscences of a stock operator&amp;quot;, there is a very interesting paragraph: the Old Turkey (formerly known as Partridge) who is in the same securities company as the hero Livermore, always makes a big deal. When he was advised to sell after taking profits and buy again after the stock price had retraced. The Old Turkey always intoned: No, you know, this is a bull market!&lt;br /&gt;&lt;br /&gt;Even Livermore sighed finally: There is nothing remarkable about the trend. There are always many people who are bullish in the bull market and bearish in the bear market. But they are always good at bargaining with the market, trying to buy at the lowest point and sell at the highest point. Like the Old Turkey, it is those who see the market and hold their positions that really make a great fortune, which is also the most difficult to learn. This not only faces the choice of target and timing, but also faces a more important question: how much position (risk) should we hold (bear)?&lt;br /&gt;&lt;br /&gt;All failed traders have one-sided thinking. When trading, greedy people only see profits rather than risks, while timid people only see risks rather than profits. Greedy and timid people forget risks when rising, and forget profits when falling. However, successful traders will consider both risks and returns, that is to say, they will bear several dollars of risk for every dollar they earn. Then the index to measure return and risk is the return risk ratio.&lt;br /&gt;&lt;br /&gt;Many people know that the risk is as big as the profit, that is, the return is proportional to the risk. In the view of some people, the relationship between return and risk should be as follows: the horizontal axis is the percentage of risk, and the vertical axis is the percentage of return:&lt;br /&gt;&lt;a href="https://stocksharp.com/file/150387
" title="https://stocksharp.com/file/150387
"&gt;https://stocksharp.com/file/150387
&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;But in the actual transaction, the return and risk are far from being as simple as two points of a line, at least it doesn&amp;#39;t always move linearly. The real risk is the maximum amount of loss that can be taken with the expected return, or what we call the maximum volatility. Although sometimes the maximum floating loss does not always equal the closing loss in terms of the outcome of the trade, the maximum floating loss is real.&lt;br /&gt;&lt;br /&gt;From this, we can know that the ratio of return to risk in the figure above is not the real performance. In a real trading environment, the ratio of return to risk should be the same as in the chart below:&lt;br /&gt;&lt;a href="https://stocksharp.com/file/150388
" title="https://stocksharp.com/file/150388
"&gt;https://stocksharp.com/file/150388
&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Let&amp;#39;s look at the chart above. The yellow curve shows the fluctuation of net worth at different risks. With the expected returns expanding, the risks are also expanding gradually. If we set bankruptcy at 0.5, that is, the maximum loss reaches 50%, then this is a failed trading strategy. Although the final return of the strategy is positive from the result, it has already gone bankrupt in the middle.&lt;br /&gt;&lt;br /&gt;Even if your strategy is a positive one, it will be liquidations under the wrong position management. So from this point of view, how much to buy and sell is more important than when to buy and sell. How to manage the position scientifically has become a fundamental issue in financial transactions. So before trying to solve this problem, let&amp;#39;s see how to bet scientifically in gambling.&lt;br /&gt;&lt;a href="https://stocksharp.com/file/150386
" title="https://stocksharp.com/file/150386
"&gt;https://stocksharp.com/file/150386
&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Let&amp;#39;s take the coin toss as an example. Suppose that both sides of a coin are equally weighted. If there is a head profit of 2 yuan and a tail loss of 1 yuan, it is obvious that this is a positive expectation game. The winning rate is 50% and a loss of 2. Here comes the question: Now that you have 100 yuan, how can you repeat the bet so that 100 yuan can reach 1 million yuan at the fastest speed.&lt;br /&gt;&lt;br /&gt;If we don&amp;#39;t think carefully, we will think that since the return of each bet is 50% * 2-50% * 1, that is, 50%, then in order to achieve the maximum return quickly, we should invest as much capital as possible in each bet. This bet must be 100%.&lt;br /&gt;&lt;br /&gt;However, it is obvious that it is unreasonable to invest 100% of the principal in every game of gambling, because as long as you lose the principal once, it will be lost, even if it is very unlikely. Because as long as you gamble enough times, losing money will happen definitely.&lt;br /&gt;&lt;br /&gt;Someone may ask, since 100% bet is unreasonable, what about 90% or lower bet? In fact, to solve this problem, we can make an experiment to simulate the gambling game and see how the result of each bet is. As shown in the following chart:&lt;br /&gt;&lt;a href="https://stocksharp.com/file/150384
" title="https://stocksharp.com/file/150384
"&gt;https://stocksharp.com/file/150384
&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;From the chart, we can see that when we gradually reduce the position from 90%, 80%, 70%, 60% and 50%, in the same gamble, the results are completely different. Careful friends may have noticed that with the gradual reduction of the position, the final capital is expanding gradually.&lt;br /&gt;&lt;br /&gt;Then some people may ask whether the smaller the bet each time is, the better, such as 10%. It is impossible to calculate every bet proportion. This is the problem to be solved by the famous Kelly Criterion. In statistics, Kelly Criterion can maximize the long-term growth rate of a strategy with positive expectation of repeated bets, and it can calculate the best bet ratio in each bet.&lt;br /&gt;&lt;br /&gt;Not only that, assuming that the principal and the bet can be divided endlessly, it is impossible to go bankrupt in any bet by using the Kelly Criterion. Especially in the practical application of financial transactions, it is a position management strategy with both attack and defense. Let&amp;#39;s look at how Kelly Criterion is calculated, and see the following figure:&lt;br /&gt;&lt;a href="https://stocksharp.com/file/150383
" title="https://stocksharp.com/file/150383
"&gt;https://stocksharp.com/file/150383
&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;- f is the optimal betting ratio for the available capital;&lt;br /&gt;- b is the odds ratio, which can also be called the profit/loss ratio in trading;&lt;br /&gt;- p is the success rate;&lt;br /&gt;- q is the failure rate.&lt;br /&gt;&lt;br /&gt;Then we can calculate the gambling example in this lesson according to the Kelly Criterion. The initial capital of 100 yuan can reach 1 million yuan at the fastest speed by using the betting ratio when the winning ratio is 50% and the odds is 2. Set into the Kelly Criterion, the calculation process is as follows:&lt;br /&gt;&lt;br /&gt;(0.5*(2+1) -1)/2=0.25&lt;br /&gt;&lt;br /&gt;The winning rate of 50% is 0.5. Multiply the odds by 2 plus 1, then subtract 1, and then divide by 2. The calculation result is 0.25. That is to say, in each bet, using 25% of the principal, you can reach 1 million yuan at the fastest speed. We can simulate manually according to the calculation results to see if it is correct.&lt;br /&gt;&lt;a href="https://stocksharp.com/file/150385
" title="https://stocksharp.com/file/150385
"&gt;https://stocksharp.com/file/150385
&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The figure above is the result of manual simulation. Please see the last line. In the same bet, after more than 100 rounds, 25% of the positions reached 1 million yuan first. The result of 90%, 80%, 70% and 60% positions is negative, which shows that even a positive expectation trading strategy will go bankrupt under the wrong position management.&lt;br /&gt;&lt;br /&gt;We can also see that 50% of the positions will not lose or win in the end, which is also consistent with the result of the law of large numbers. In order to further illustrate the problem, a position of 10% was also added in the manual simulation. Although the final result was a positive return, the effect was several orders of magnitude worse than that of a position of 25%.&lt;br /&gt;&lt;br /&gt;You can see the power of Kelly Criterion. If you choose 10% of the principal position in the actual application, your principal will become more than 30,000 in more than 100 bets. Although the return is large, compared with 25% of the principal position, it is equivalent to no profit. This is the power of knowledge.&lt;br /&gt;&lt;br /&gt;If you want to make profits from Kelly Criterion in life, you need to meet the application conditions of Kelly Criterion. There is no doubt that this bet must come from the financial market. Especially in quantitative trading, we can roughly calculate the corresponding winning ratio and odds through historical data backtesting.&lt;br /&gt;&lt;br /&gt;Of course, the practical application of Kelly Criterion in financial transactions cannot be so simple, and there are many details to be dealt with, such as the cost of capital in leveraged transactions, the capital and position in real transactions can not be divided wirelessly, and the winning ratio and loss ratio in transactions are changing dynamically, and so on. Whatever, Kelly Criterion shows us how to establish the best position management method.&lt;br /&gt;&lt;br /&gt;From: &lt;a target="_blank" rel="nofollow" href="https://stocksharp.com/away/?u=AQAAAAAAAAAezbpL9G-wNBo0jpp0vfUOQlbPNxIPafGj0KHUDS3Y6yaRDtrGn92RTJJ6GDDaOrcYRqX-_tIfOKBwLwx535erfDmGmRz7j8nf3ZQMsXwCMxDKU0hNcvmT0f_iFgln5iJYfGH-v9R3t_0CjD3DbHONKu4c0dfLcPYrt74ZdeAkYF3Z91GLU5KgL42FxWwWflQ" title="https://blog.mathquant.com/2023/02/07/from-quantitative-trading-to-asset-management-cta-strategy-development-for-absolute-return.html"&gt;https://blog.mathquant.c...for-absolute-return.html&lt;/a&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.com/topic/25703/</id>
    <title type="text">9 trading rules help a trader earn $46,000 from $1,000 in less than a year</title>
    <published>2024-04-18T02:45:58Z</published>
    <updated>2024-04-18T02:45:58Z</updated>
    <author>
      <name>Quant</name>
      <uri>https://stocksharp.com/users/186455/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <category term="#trading" />
    <category term="#cryptocurrency" />
    <category term="#strategy" />
    <category term="#market" />
    <category term="#bitcoin" />
    <category term="#return" />
    <category term="#profit" />
    <category term="#loss" />
    <category term="#FMZQuant" />
    <category term="#invest" />
    <content type="html">No, I am not a successful trader. I have been lucky many times, and I am still refining and trying strategies; On the other hand, I am still one of the people who constantly trade to increase the profit of the portfolio. Although some results can be attributed to luck, most of them are based on fundamentals, good habits and experience.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:140%"&gt;&lt;b&gt;The result of good habits&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Miles is the co-founder of Pure Investments. In May 2017, he began with $1,000, which he saved by saving 10% of his salary every month. Today, his income is $46,000; In other words, he increased his portfolio by 46 times in less than one year.&lt;br /&gt;&lt;br /&gt;Similarly, after starting Pure Investments in September 2017, Miles accepted his first community member, who was nicknamed &amp;quot;SP&amp;quot; on the Discord channel. When SP started trading, it invested $40,000. By January 2018, his investment income had exceeded $1 million.&lt;br /&gt;&lt;br /&gt;Although the cryptocurrency market price is extremely volatile, and all investors are affected by price fluctuations, including Miles, SP, me and you, good habits will help reduce losses and maximize profits.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:140%"&gt;9 cryptocurrency trading rules&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Please note that these are not specific investment suggestions. Please bear your own investment risk!&lt;br /&gt;&lt;br /&gt;1. Only invest in what you can lose. During the price collapse in January 2018, many amateur investors were cleaned out of the market. Their funny performance is that the ground is full of broken monitors, the balance in laptops and bank accounts has shrunk significantly. Although sequential trading steps and methods are important, there is no doubt that the principles behind these trading steps and methods are more important. Once your funds are converted into cryptocurrency, by default that the money has been lost. The market can never guarantee that you can take it back. The loss is not only from the decline of the market; External factors such as hackers, loopholes and government regulation may mean that you will never see any part of the funds again. If you can&amp;#39;t afford to lose when investing, you need to step back and reassess your current financial situation, because what you will do will be accompanied by despair. This includes: using credit cards, mortgages, applying for loans, selling everything and traveling around the world (which sounds fascinating).&lt;br /&gt;&lt;br /&gt;2. Always pay attention to Bitcoin. Most Altcoins (every cryptocurrency except Bitcoin) are more closely related to Bitcoin than Asian currencies and the US dollar during the Asian financial crisis. If the price of Bitcoin rises sharply, people will try to exit the Altcoins to gain BTC profits, and the price of Altcoins will decrease; On the contrary, if the price of Bitcoin decreases sharply, the price of Altcoins will also decrease, because people withdraw from Altcoins to exchange for fiat currency. When Bitcoin shows a sideways shock or fall, the best period for the growth of Altcoins will appear.&lt;br /&gt;&lt;br /&gt;3. Do not put all the eggs in one basket. Investment needs diversification. Although the amount you invest in digital currency increases the potential to earn more profits, the possibility of losing more will also be magnified. Another way of thinking is to take the cryptocurrency market as a whole; If you think this is just the beginning, the entire market value of cryptocurrency will increase. What is the probability that the market value increase will be driven by one currency rather than many currencies? The best way to safely capture the overall growth of cryptocurrencies is to diversify and benefit from multiple currencies. In addition, the interesting fact is that from January 2016 to January 2018, Corgicoin increased by 60,000 times and Verge increased by 13,000 times. Over the same period, Bitcoin has increased 34 times. Although you will get impressive benefits from Bitcoin, expanding to other currencies may give you greater benefits.&lt;br /&gt;&lt;br /&gt;4. Don&amp;#39;t be greedy. It is human nature to have losses and gains. When a currency begins to grow, our inner greed follows. If a currency increases by 30%, why not consider profits? Even if the target is set at 40% or 50%, if a currency fails to meet the target, you should get some profits from it at least. If you wait too long or try to exit at a higher point, you may lose the profits you have earned, or even turn profits into losses. If you want to continue to gain potential profits, form the habit of stopping profits and looking for re-entering the market.&lt;br /&gt;&lt;br /&gt;5. Don&amp;#39;t invest blindly. Some people in the world will sell a pair of glasses to a blind person without limit, as long as the business can bring him profits. Such people also exist in the cryptocurrency market, and they will take every opportunity to deceive investors with little knowledge. They will tell you what to buy or claim that some currencies will decrease, just to raise or depress the price so that they can cash out. Due to the highly speculative nature of today&amp;#39;s cryptocurrency market, an excellent investor must always conduct his own research in order to take full responsibility or potential investment results. Even if the information comes from the best investors, it is only a good information at best, but it is by no means a commitment, so you can still incur losses.&lt;br /&gt;&lt;br /&gt;6. Don&amp;#39;t worry about profits and losses. This is where people often lose money. A typical case of manipulation in December, the joint speculation of the two media, the announcement of the Chicago Mercantile Exchange and the Chicago Options Exchange, and a large number of news pushed the price of Bitcoin from $10,000 to $20,000. Since then, Bitcoin has fallen to a low of $9,000, and is currently about $11,000. It&amp;#39;s easy to go back and say, &amp;quot;If I only waited for one month, I could buy it at the price of $9,000 instead of waiting for Bitcoin to reach $20,000 again, so that I could make both ends meet.&amp;quot; But the reality is that the decision of insatiable greed and blind investment will indeed make Bitcoin reach a record high, but it is also a terrible decision to stand firmly at a high position. In any speculative market, if an investment target blowouts rapidly, it will certainly correct itself - it is only a matter of time. The correction mechanism after excessive speculation almost always follows. Although trying to jump on a train at full speed sounds as exciting as a James Bond movie, I believe most of us agree that if we wait for it at the next station, we may retain some limbs.&lt;br /&gt;&lt;br /&gt;7. Classify your investment and try to look at the long line chart. During your research, you will eventually find that you have encountered several different types of currencies. For some of them, you believe they have excellent teams, good vision, amazing publicity and successful implementation records. That&amp;#39;s great! Put them into the medium or long-term vision, and then marinate them into delicious bacon. When the price falls, do not consider selling, because anything in the medium-term or long-term portfolio should remain unaffected by the price for a period of time. BNB is a good example of currency that Miles considers a long-term holding. Recently, it has declined by 20% temporarily. In our community, we have witnessed some panic selling to protect profits. A week later, it rose nearly three times in a period of time.&lt;br /&gt;&lt;br /&gt;8. Always learn from mistakes. Never wait for a position to close when you are close to liquidation. Always evaluate the market situation and try to find out why it happened. Take this assessment as the basis for your next action, and if you continue to do so, you will know more than before and make more informed decisions. We are all amateurs, and we will lose money in the whole trading process. In his first month of trading, Miles lost from $1,000 to $300. Most of these losses were caused by selling through fear. No one is perfect, no one will win every transaction. Don&amp;#39;t let losses discourage you, because the reality is that if you choose to learn from losses, they will make you a better trader.&lt;br /&gt;&lt;br /&gt;9. If you are conducting any trading activities, please set a stop loss. For any currency that is not in your medium or long-term holding, always set a stop loss. This is important for several reasons - the most obvious is to reduce your losses. But more importantly, you force yourself to decide the acceptable loss point, and because you now have a reference point, you can measure the effectiveness of your reservation or adjustment of future transactions. Sometimes, during the decline of the market, Altcoins may plummet and can be used to re-enter at a lower price through automatic selling.&lt;br /&gt;&lt;br /&gt;10. One extra note: always check the currency code. Code symbols are not universal and may vary from exchange to exchange in rare cases. However, these small probability situations may still turn around and bite you. For example, Bitcoin cash is traded as BCH in some exchanges and BCC in other exchanges. BCC, also the code of BitConnect, recently went bankrupt as a Ponzi scheme. If you think you are buying Bitcoin cash and end up buying BitConnect, you will lose a lot of money.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size:140%"&gt;You don&amp;#39;t have to do it alone&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Although these rules are by no means the only courses you need, they are definitely a good starting point. But sometimes things are easier said than done. For example, you still have the iron will to resist the sell button when you watch the value of your portfolio plummet. One of the best solutions I have found is to join a like-minded cryptocurrency investor community. Educated digital currency traders and community members will fully support your work and will be with you during the tough times.&lt;br /&gt;&lt;br /&gt;From: &lt;a target="_blank" rel="nofollow" href="https://stocksharp.com/away/?u=AQAAAAAAAAAezbpL9G-wNBo0jpp0vfUOQlbPNxIPafGj0KHUDS3Y6-cLTQvjwVD6lNcTnaqoPVf309XHYWVEWyTJCI22hX1eu2pw2zEm-omCzITAuEBAYjxjS5YbF-VMZm84u3r4mFPfbPOTyWyv9apGa5vBM9xtbq0xoB9DHdKsUEMx0qHorw" title="https://blog.mathquant.com/2023/02/07/9-trading-rules-help-a-trader-earn-46000-from-1000-in-less-than-a-year.html"&gt;https://blog.mathquant.c...in-less-than-a-year.html&lt;/a&gt;</content>
  </entry>
</feed>