﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.ru/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.ru/css/bbeditor.css'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html">Форум. StockSharp</title>
  <id>https://stocksharp.ru/handlers/atom.ashx?category=forum&amp;page=18</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-05-06T11:55:10Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=forum&amp;page=18" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/topic/11259/</id>
    <title type="text">Transaq: некорректный код инструмента (SIZ9)</title>
    <published>2019-12-15T18:02:42Z</published>
    <updated>2019-12-15T18:02:42Z</updated>
    <author>
      <name>szn</name>
      <uri>https://stocksharp.ru/users/116976/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Transaq" />
    <content type="html">Добрый вечер. &lt;br /&gt;S#: 4.4.16.&lt;br /&gt;Скачал примеры, пытаюсь в SampleTransaq посмотреть свечи для SIZ9, вылетает сообщение  &amp;quot;Инструмент не найден...&amp;quot;, или срабатывает обработчик MarketDataSubscriptionFailed.&lt;br /&gt;Причем скачанный пример для TransaqConnector с Finam не выдает никаких ошибок. Момент есть один: там код инструмента представлен как SiZ9. Вероятно, ошибка тут кроется.&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/11253/</id>
    <title type="text">два независимых графика</title>
    <published>2019-12-10T11:09:58Z</published>
    <updated>2019-12-12T10:10:40Z</updated>
    <author>
      <name>Orinoko</name>
      <uri>https://stocksharp.ru/users/116735/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Здравствуйте! Есть ли возможность построить два независимых графика - например инструмент один, два таймфрейма - один график дни, второй часы. И каждый масштабировать независимо от другого? В идеале два окна графика.</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/11194/</id>
    <title type="text">[BUG] ComboBox для выбора подключения закрывается сразу автоматически</title>
    <published>2019-11-22T05:18:50Z</published>
    <updated>2019-12-02T18:55:15Z</updated>
    <author>
      <name>andrew</name>
      <uri>https://stocksharp.ru/users/108550/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="API" />
    <category term="bug" />
    <content type="html">Добрый день.&lt;br /&gt;&lt;br /&gt;Скачал ночную сборку и запустил пример SimpleConnection в режиме разработка. Если нажать на выбор подключения, то ComboBox показывается и с сразу же закрывается. Это известная ошибка?&lt;br /&gt;&lt;br /&gt;- API 4.4.17&lt;br /&gt;- .Net Framework 4.6&lt;br /&gt;- Visual Studio 2019&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/10979/</id>
    <title type="text">При добавление значения на график выпадает ошибка</title>
    <published>2019-09-05T15:56:11Z</published>
    <updated>2019-11-30T20:08:00Z</updated>
    <author>
      <name>ghost-mo</name>
      <uri>https://stocksharp.ru/users/94687/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Добрый день.&lt;br /&gt;Пока индикаторы не сформированы я их не рисую.&lt;br /&gt;При старте стратегии и прогрузке и прорисовке графиков. Например при использовании Macd при попытке добавить на график данные (свечку, трэйды и индикатор ) выскакивает ошибка:&lt;br /&gt;&amp;quot;Получен новый индикатор без предварительного вызова Reset().&amp;quot;&lt;br /&gt;Хотя я пробовал при старте стратегии добавить по каждому индикатору Reset()&lt;br /&gt;Подскажете в чем может быть проблема, код наверное нужен? Постараюсь вырезать суть</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/11212/</id>
    <title type="text">Как в PropertyGridEx организовать редактирование свойства в собственной форме</title>
    <published>2019-11-26T19:33:07Z</published>
    <updated>2019-11-26T19:58:13Z</updated>
    <author>
      <name>Дмитрий_</name>
      <uri>https://stocksharp.ru/users/62269/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="PropertyGridEx" />
    <content type="html">Добрый день&lt;br /&gt;&lt;br /&gt;Есть статья &lt;br /&gt;&lt;div class='spoilertitle'&gt;&lt;input type='button' value='Показать спойлер' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_f73653e448004309b3dbfe4bff8c10b5');" title='Показать спойлер' /&gt;&lt;/div&gt;&lt;div class='spoilerbox' id='spolier_f73653e448004309b3dbfe4bff8c10b5' style='display:none'&gt;https://rsdn.org/article/dotnet/PropertyGridFAQ.xml&lt;/div&gt;&lt;br /&gt;В ней есть глава &amp;quot;Как организовать редактирование свойства в собственной форме&amp;quot;&lt;br /&gt;В ней работа реализована через UITypeEditor, но в WPF - UITypeEditor не поддерживается.&lt;br /&gt;&lt;br /&gt;Как в PropertyGridEx организовать редактирование свойства в собственной форме (У вас это реализовано окнами &amp;quot;Выбор портфеля&amp;quot;, &amp;quot;Выбор инструмента&amp;quot;)?</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/11213/</id>
    <title type="text">Как в PropertyGridEx организовать редактирование свойства в выпадающем списке</title>
    <published>2019-11-26T19:52:11Z</published>
    <updated>2019-11-26T19:52:11Z</updated>
    <author>
      <name>Дмитрий_</name>
      <uri>https://stocksharp.ru/users/62269/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="PropertyGridEx" />
    <content type="html">Добрый день&lt;br /&gt;&lt;br /&gt;Есть статья&lt;br /&gt;&lt;div class='spoilertitle'&gt;&lt;input type='button' value='Показать спойлер' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_05cbb518f5f848d2a014f3cc8afba237');" title='Показать спойлер' /&gt;&lt;/div&gt;&lt;div class='spoilerbox' id='spolier_05cbb518f5f848d2a014f3cc8afba237' style='display:none'&gt;https://rsdn.org/article/dotnet/PropertyGridFAQ.xml&lt;/div&gt;&lt;br /&gt;В ней есть глава &amp;quot;Как организовать редактирование свойства в выпадающем списке&amp;quot;&lt;br /&gt;В ней работа реализована через UITypeEditor, но в WPF - UITypeEditor не поддерживается.&lt;br /&gt;&lt;br /&gt;Как в PropertyGridEx организовать редактирование свойства в выпадающем списке (У вас это реализовано в выборе тайм-фрейма (CandleSeries))?</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/11190/</id>
    <title type="text">Почему Дизайнер ( 4.4.17) не качает историю с финам?</title>
    <published>2019-11-20T22:05:16Z</published>
    <updated>2019-11-25T14:23:38Z</updated>
    <author>
      <name>SelfDeleted</name>
      <uri>https://stocksharp.ru/users/115336/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Просто уходит в вечное сообщение &amp;#171;Идет загрузка&amp;#187;, которая ничем не заканчивается и крутится пока неприбить программу.. даже нажатие кнопки &amp;#171;отмена&amp;#187; не помогает&lt;br /&gt;Откуда еще можно тиковые данные по фьючам получить ?&lt;br /&gt;&lt;br /&gt;Заранее спасибо&lt;br /&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/10995/</id>
    <title type="text">Что нового в обучении по курсу API?</title>
    <published>2019-09-10T11:08:29Z</published>
    <updated>2019-11-12T09:13:45Z</updated>
    <author>
      <name>Marat</name>
      <uri>https://stocksharp.ru/users/101940/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="API" />
    <category term="Алготрейдинг" />
    <category term="Торговые роботы" />
    <category term="Edu" />
    <category term="обучение торговым роботам" />
    <category term="обучение торговым стратегиям" />
    <category term="создать торгового робота" />
    <category term="обучение алготрейдингу" />
    <category term="торговый робот своими руками" />
    <content type="html">&lt;em&gt;&lt;b&gt;Друзья!&lt;br /&gt;&lt;/b&gt;&lt;/em&gt;&lt;br /&gt;Наша компания обновила материалы обучающего курса по API и &lt;a href="https://stocksharp.ru/products/shell/" title="https://stocksharp.ru/products/shell/"&gt;&lt;u&gt;S#.Shell&lt;/u&gt;&lt;/a&gt; [happy].&lt;br /&gt;&lt;br /&gt;&lt;a href='https://stocksharp.ru/file/109661/photo_2019-09-13_15-07-48.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.ru/file/109661/photo_2019-09-13_15-07-48.png?size=800x800" alt="photo_2019-09-13_15-07-48.png" title="photo_2019-09-13_15-07-48.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Это связано со скорым выходом &lt;a href="https://stocksharp.ru/products/api/" title="https://stocksharp.ru/products/api/"&gt;&lt;u&gt;S#.API&lt;/u&gt;&lt;/a&gt; 4.4.17, в частности с изменениями по работе с Quik 8.&lt;br /&gt;&lt;br /&gt;Курс позволяет научиться создавать &lt;b&gt;прибыльных&lt;/b&gt; торговых роботов используя библиотеки API [nerd]!&lt;br /&gt;&lt;br /&gt;&lt;a href='https://stocksharp.ru/file/109662/%D0%A4%D0%BE%D0%BD.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.ru/file/109662/%D0%A4%D0%BE%D0%BD.png?size=800x800" alt="Фон.png" title="Фон.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Обновления уже &lt;b&gt;доступны&lt;/b&gt; и их можно скачать по &lt;b&gt;ссылке&lt;/b&gt; доступной владельцам курса.&lt;br /&gt;Что бы узнать наиболее подробную информацию о курсе обучения и его стоимости переходите по &lt;b&gt;&lt;u&gt;&lt;a href="https://stocksharp.ru/edu/" title="https://stocksharp.ru/edu/"&gt;ссылке&lt;/a&gt;&lt;/u&gt;&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Мы двигаемся вперед и каждый день стараемся сделать наши продукты лучше[lol].</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/11154/</id>
    <title type="text">Не работает GetCandle</title>
    <published>2019-11-11T00:39:09Z</published>
    <updated>2019-11-11T00:39:09Z</updated>
    <author>
      <name>qpile</name>
      <uri>https://stocksharp.ru/users/6397/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Здравствуйте!&lt;br /&gt;пытаюсь получить серию свечей- никак не выходит увы.&lt;br /&gt;&lt;br /&gt;Делаю для теста так. При этом само событие срабатывает- свечи приходят&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt; private void Connector_CandleSeriesProcessing(CandleSeries candleSeries, Candle candle)&lt;br /&gt;        {&lt;br /&gt;           &lt;br /&gt;                double high = (double)candle.HighPrice;&lt;br /&gt;            var prev100Candles = Trader.GetCandles&amp;lt;TimeFrameCandle&amp;gt;(candleSeries, 100);&lt;br /&gt;&lt;br /&gt;            var prev5Candle = Trader.GetCandle&amp;lt;TimeFrameCandle&amp;gt;(candleSeries, 5);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            foreach (TimeFrameCandle candle2 in prev100Candles)&lt;br /&gt;            {&lt;br /&gt;                double high2 = (double)candle2.HighPrice;&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;        }&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Подписываюсь так&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt; foreach(Security sec in Trader.Securities)&lt;br /&gt;                {&lt;br /&gt;                    if (sec.Code == row&amp;#91;&amp;quot;Код&amp;quot;&amp;#93;.ToString())&lt;br /&gt;                    {&lt;br /&gt;                      &lt;br /&gt;                        var _candleSeries = new CandleSeries(typeof(TimeFrameCandle),sec, TimeSpan.FromMinutes(1));&lt;br /&gt;                        Trader.SubscribeCandles(_candleSeries, DateTime.Today.Subtract(TimeSpan.FromDays(30)), DateTime.Now);&lt;br /&gt;                    }&lt;br /&gt;                }&lt;/div&gt;&lt;/div&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/10897/</id>
    <title type="text">Ошибки выставления ордеров для Kraken</title>
    <published>2019-07-31T08:52:39Z</published>
    <updated>2019-10-30T14:40:36Z</updated>
    <author>
      <name>Ринас Андрей</name>
      <uri>https://stocksharp.ru/users/99935/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Kraken" />
    <content type="html">Добрый день, при выставлении лимитного ордера приходит ошибка:&lt;br /&gt;&lt;br /&gt;System.InvalidOperationException: EGeneral:Invalid arguments:expiretm&lt;br /&gt;   at StockSharp.Kraken.Native.HttpClient.MakeRequest[T](Uri url, IRestRequest request, Int32 apiCallCost)&lt;br /&gt;   at StockSharp.Kraken.Native.HttpClient.AddOrder(String pair, String type, String orderType, Decimal volume, Nullable`1 price, Nullable`1 price2, String leverage, String orderFlags, String startTime, Nullable`1 expireTime, Nullable`1 userRef, Boolean validate)&lt;br /&gt;   at StockSharp.Kraken.KrakenMessageAdapter.ProcessOrderRegister(OrderRegisterMessage regMsg)&lt;br /&gt;   at StockSharp.Kraken.KrakenMessageAdapter.OnSendInMessage(Message message)&lt;br /&gt;   at StockSharp.Messages.MessageAdapter.SendInMessage(Message message)</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/10863/</id>
    <title type="text">Ошибки подписки на данные для Bithumb версия 4.4.17</title>
    <published>2019-07-10T15:37:10Z</published>
    <updated>2019-10-30T14:26:45Z</updated>
    <author>
      <name>Ринас Андрей</name>
      <uri>https://stocksharp.ru/users/99935/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">При подписке на данные выводится следующая ошибка:&lt;br /&gt;&lt;br /&gt;System.AggregateException: Произошла одна или несколько ошибок. ---&amp;gt; System.Net.WebSockets.WebSocketException: Невозможно соединиться с удаленным сервером ---&amp;gt; System.Net.WebException: Удаленный сервер возвратил ошибку: (403) Запрещено.&lt;br /&gt;   в System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)&lt;br /&gt;   в System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)&lt;br /&gt;--- Конец трассировка стека из предыдущего расположения, где возникло исключение ---&lt;br /&gt;   в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()&lt;br /&gt;   в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)&lt;br /&gt;   в System.Net.WebSockets.ClientWebSocket.&amp;lt;ConnectAsyncCore&amp;gt;d__21.MoveNext()&lt;br /&gt;   --- Конец трассировки внутреннего стека исключений ---&lt;br /&gt;   в System.Net.WebSockets.ClientWebSocket.&amp;lt;ConnectAsyncCore&amp;gt;d__21.MoveNext()&lt;br /&gt;   --- Конец трассировки внутреннего стека исключений ---&lt;br /&gt;   в System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)&lt;br /&gt;   в System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)&lt;br /&gt;   в Ecng.Net.WebSocketClient.Connect(String url, Boolean immediateConnect, Action`1 init)&lt;br /&gt;   в StockSharp.Bithumb.Native.PusherClient.Connect()&lt;br /&gt;   в StockSharp.Bithumb.BithumbMessageAdapter.&amp;lt;EnsureCreatePusher&amp;gt;b__22_0(String key)&lt;br /&gt;   в Ecng.Collections.CollectionHelper.SafeAdd[TKey,TValue](IDictionary`2 dictionary, TKey key, Func`2 handler, Boolean&amp;amp; isNew)&lt;br /&gt;   в StockSharp.Bithumb.BithumbMessageAdapter.EnsureCreatePusher(String currency)&lt;br /&gt;   в StockSharp.Bithumb.BithumbMessageAdapter.ProcessMarketData(MarketDataMessage mdMsg)&lt;br /&gt;   в StockSharp.Bithumb.BithumbMessageAdapter.OnSendInMessage(Message message)&lt;br /&gt;   в StockSharp.Messages.MessageAdapter.SendInMessage(Message message)&lt;br /&gt;---&amp;gt; (Внутреннее исключение #0) System.Net.WebSockets.WebSocketException (0x80004005): Невозможно соединиться с удаленным сервером ---&amp;gt; System.Net.WebException: Удаленный сервер возвратил ошибку: (403) Запрещено.&lt;br /&gt;   в System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)&lt;br /&gt;   в System.Threading.Tasks.TaskFactory`1.FromAsyncCoreLogic(IAsyncResult iar, Func`2 endFunction, Action`1 endAction, Task`1 promise, Boolean requiresSynchronization)&lt;br /&gt;--- Конец трассировка стека из предыдущего расположения, где возникло исключение ---&lt;br /&gt;   в System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()&lt;br /&gt;   в System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)&lt;br /&gt;   в System.Net.WebSockets.ClientWebSocket.&amp;lt;ConnectAsyncCore&amp;gt;d__21.MoveNext()&lt;br /&gt;   в System.Net.WebSockets.ClientWebSocket.&amp;lt;ConnectAsyncCore&amp;gt;d__21.MoveNext()&amp;lt;---&lt;br /&gt;&lt;br /&gt;и так по всем доступным инструментам. В чем здесь может быть проблема?</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/11124/</id>
    <title type="text">Что такое торговый робот?</title>
    <published>2019-10-28T14:10:20Z</published>
    <updated>2019-10-30T09:55:19Z</updated>
    <author>
      <name>Marat</name>
      <uri>https://stocksharp.ru/users/101940/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Алготрейдинг" />
    <category term="трейдинг" />
    <category term="Биржа" />
    <category term="Московская биржа" />
    <category term="торговый робот" />
    <category term="маркет данные" />
    <category term="история котировок" />
    <category term="торговая стратегия" />
    <category term="торговля" />
    <category term="биржевая торговля" />
    <category term="биржевая информация" />
    <category term="HFT -трейдинг" />
    <content type="html">Рост активности работы на мировых рынках среди трейдеров, а так же постоянный прогресс технологий, привели к &lt;b&gt;увеличению скорости&lt;/b&gt; действий проводимых игроками на торговой площадке.&lt;br /&gt;Сегодня многие трейдеры, активно работающие с различными финансовыми инструментами, отдают предпочтение &lt;b&gt;торговым роботам&lt;/b&gt;, нежели ручной торговле. Во многом э&lt;b&gt;то связано со скоростью протекания операций и их объемом.&lt;/b&gt;&lt;br /&gt;Давайте разберемся, что такое торговый робот? &lt;b&gt;Торговый робот&lt;/b&gt; – специальная программа, созданная по особому &lt;b&gt;алгоритму&lt;/b&gt;, в соответствии с которым она проводит торговые операции. [nerd]&lt;br /&gt;Давайте чуть подробнее рассмотрим особенности таких программ.&lt;br /&gt;Программа торгового робота позволяет полностью или частично &lt;b&gt;взять на себя процесс работы&lt;/b&gt; на торговой площадке. За трейдером, как за оператором торгового робота, &lt;b&gt;остается возможность полного контроля&lt;/b&gt; над ним, что позволяет корректировать роботу торгового робота, вносить изменения в код программы или менять алгоритм.&lt;br /&gt;Фактически, торговый робот при автономной работе&lt;b&gt; самостоятельно принимает&lt;/b&gt; решения о заявках и сделках, согласно установленным критериям его алгоритма, при вмешательстве в процесс пользователя, операции &lt;b&gt;могут проводиться в ручном режиме&lt;/b&gt;.&lt;br /&gt;Программный код торгового робота основополагается на  рассчитанных и продуманных математических последовательностях. Следя за разными данными, такие как &lt;em&gt;индексы, индикаторы&lt;/em&gt; и иные маркет данные получаемые с биржи. Программа торгового робота решает, покупать или продавать те или иные активы. Скорость реакции на изменения рынка, позволяет торговому роботу &lt;b&gt;совершать гораздо больше операций&lt;/b&gt;, соответственно потенциально приносить &lt;b&gt;большую прибыль&lt;/b&gt; и &lt;b&gt;сокращать потери&lt;/b&gt;. [nerd]&lt;br /&gt;&lt;br /&gt;&lt;a href='https://stocksharp.ru/file/109969/algorithmic-trading-forex.jpg' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.ru/file/109969/algorithmic-trading-forex.jpg?size=800x800" alt="algorithmic-trading-forex.jpg" title="algorithmic-trading-forex.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Вернемся к основной задаче торгового робота. Можно сказать, что задача торгового робота по упрощению торговли для трейдера, не является основной. &lt;b&gt;Основная задача торгового робота &lt;/b&gt; заключается в&lt;b&gt; возможности реализации&lt;/b&gt; посредством программирования &lt;b&gt;торговых алгоритмов&lt;/b&gt;, которые сложно или невозможно воплотить в жизнь при ручной торговле. Упрощенно говоря, торговый робот – установленная последовательность действий для совершения сделки.&lt;br /&gt;&lt;br /&gt;Из общей массы торговых роботов стоит выделить три основные группы, отличающиеся между собой алгоритмом работы или типом стратегии.&lt;br /&gt;- &lt;em&gt;Трендовые (дирекционные) или направленные&lt;/em&gt;,&lt;br /&gt;-&lt;em&gt; Контртрендовые&lt;/em&gt;;&lt;br /&gt;- &lt;em&gt;Арбитражные&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href='https://stocksharp.ru/file/109974/trade-robot-strategy.jpg' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.ru/file/109974/trade-robot-strategy.jpg?size=800x800" alt="trade-robot-strategy.jpg" title="trade-robot-strategy.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Рассмотрим более подробно особенности каждого из типов торговых роботов.&lt;br /&gt;1.      &lt;em&gt;Трендовые или направленные роботы&lt;/em&gt;. Целью робота является &lt;b&gt;максимально быстрая реакция на тенденцию движения рынка&lt;/b&gt;, иными словами отследить в какую сторону развернулся рынок. В зависимости от направления торговый робот автоматически открывает позицию либо продажей, либо покупкой. Соответственно, если рынок меняет свое направление, то торговый робот максимально быстро осуществляет обратное действие, открывая позицию.&lt;br /&gt;2.     &lt;em&gt; Контртрендовые торговые роботы&lt;/em&gt;. Их целью является &lt;b&gt;отслеживание откатов цены.&lt;/b&gt;  Данный торговый робот отслеживает откаты цен, происходящих  во флетовом положении рынка, и выставляет заявки исходя из установленного алгоритма.&lt;br /&gt;3.      &lt;em&gt;Арбитражный торговый робот&lt;/em&gt;. Такой торговый робот является чуть ли не самым популярным типом. Торговый робот такой к примеру как &lt;b&gt;&lt;a href="https://stocksharp.ru/robot/10/ehdvard--ruki-nozhnitsy/" title="https://stocksharp.ru/robot/10/ehdvard--ruki-nozhnitsy/"&gt;&lt;u&gt;&amp;#171;Эдвард&amp;#187;&lt;/u&gt;&lt;/a&gt;&lt;/b&gt;, &lt;b&gt;приносит прибыль определяя различия цен &lt;/b&gt;между схожими или одинаковыми инструментами на различных рынках. Фактически он покупает на одном рынке, продает на другом, компенсирую разницу и получая прибыль.&lt;br /&gt;&lt;br /&gt;&lt;a href='https://stocksharp.ru/file/109970/trade-robot-api.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.ru/file/109970/trade-robot-api.png?size=800x800" alt="trade-robot-api.png" title="trade-robot-api.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Еще один способ разделение роботов:&lt;br /&gt;- &lt;em&gt;Свечные&lt;/em&gt;. Это торговые роботы, использующие для определения сигналов к выставлению заявок  данные свечей.&lt;br /&gt;- &lt;em&gt;Индикаторные&lt;/em&gt;. Эти роботы, использующие для открытия заявки данные индикаторов.&lt;br /&gt;&lt;br /&gt;Поговорим о построении торгового робота. Само написание программного кода - не сложное занятие, сводимое к знаю языков программирования. Гораздо сложнее этого – &lt;b&gt;найти верный путь создания торгового алгоритма&lt;/b&gt;, на основе которого создается торговый робот.&lt;br /&gt;На сегодня до &lt;b&gt;50%&lt;/b&gt; сделок на торговых площадках совершаются &lt;b&gt;торговыми роботами&lt;/b&gt;. Торговых роботов по праву относят к одному из самых надежных и эффективных инструментов торговли. Этому есть объяснение :&lt;br /&gt;- &lt;em&gt;Торговый робот упрощает работу при сделках с большим объемом лота, разделяя заявки на более мелке части и совершая сделки по частям&lt;/em&gt;;&lt;br /&gt;- &lt;em&gt;Торговый робот сокращает трудозатраты трейдера, совершая торговые операции автоматически. Это способствует к росту объема совершаемых сделок, увеличению прибыли, которую приносит торговля, и важное, сокращает возможную потерю&lt;/em&gt;;&lt;br /&gt;- &lt;em&gt;Оставаясь автоматическим, торговый робот всегда может быть переведен в ручной режим, то есть остается полностью подконтрольным своему владельцу&lt;/em&gt;;&lt;br /&gt;- &lt;em&gt;Огромный перечень инструментов и методов, которые может использовать торговый робот, позволяют говорить, что торговый робот дает возможность воплотить в жизнь самые сложные математические задачи для торговли;&lt;/em&gt;&lt;br /&gt;- &lt;em&gt;У торгового робота отсутствует критерий эмоциональности, по сути, он трезво действует своему заложенному механизму. Не паникует в стрессовой ситуации.&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;&lt;a href='https://stocksharp.ru/file/109971/HFT-trade-forex.jpg' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.ru/file/109971/HFT-trade-forex.jpg?size=800x800" alt="HFT-trade-forex.jpg" title="HFT-trade-forex.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Разбирая торговые роботы, трейдер &lt;b&gt;должен выбрать для себя нужный путь&lt;/b&gt;, исходя из которого он сможет подобрать робота для себя. Трейдер &lt;b&gt;должен понимать&lt;/b&gt;, что торговый робот – инструмент торговли, не является  панацеей для &lt;b&gt;100% успеха&lt;/b&gt;. Помимо самого трейдера, важно знать и платформы реализации таких торговых роботов. Таких достаточно много (TSlab, &lt;a href="https://stocksharp.ru/products/designer/" title="https://stocksharp.ru/products/designer/"&gt;&lt;u&gt;S#.Designer&lt;/u&gt;&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;a href='https://stocksharp.ru/file/109973/holy-grail-forex.jpg' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.ru/file/109973/holy-grail-forex.jpg?size=800x800" alt="holy-grail-forex.jpg" title="holy-grail-forex.jpg" /&gt;&lt;/a&gt;                                        &lt;a href='https://stocksharp.ru/file/109972/exchange-trade-strategy.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.ru/file/109972/exchange-trade-strategy.png?size=800x800" alt="exchange-trade-strategy.png" title="exchange-trade-strategy.png" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Подводя итог, можно сказать, что &lt;b&gt;торговый робот&lt;/b&gt; &lt;b&gt;надежный и удобный функционал на вооружении у трейдера&lt;/b&gt;, самое главное правильно использовать его при ведение биржевой торговли.</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/11120/</id>
    <title type="text">Знакомство с Алготрейдингом.</title>
    <published>2019-10-23T11:33:30Z</published>
    <updated>2019-10-23T11:33:30Z</updated>
    <author>
      <name>Marat</name>
      <uri>https://stocksharp.ru/users/101940/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Алготрейдинг" />
    <category term="трейдинг" />
    <category term="Биржа" />
    <category term="Московская биржа" />
    <category term="маркет данные" />
    <category term="история котировок" />
    <category term="торговля" />
    <category term="биржевая торговля" />
    <category term="биржевая информация" />
    <category term="HFT -трейдинг" />
    <content type="html">&lt;br /&gt;Прежде чем начать разговор об &lt;b&gt;алготрейдинге&lt;/b&gt;, необходимо дать ему определение. &lt;br /&gt;Итак, что такое алготрейдинг? Существует разное определение данному понятию, неизменным остается только его суть и принципы, на основе которых строится работа. &lt;b&gt;Алготрейдинг – трейдинг&lt;/b&gt;, который проходит посредством полностью &lt;b&gt;автоматизированного алгоритма&lt;/b&gt;, который прописывает трейдер, исполнение которого потенциально &lt;b&gt;приносит трейдеру прибыль&lt;/b&gt;.  Фактически это программа, которая несет в себе последовательность исполнения действий. [nerd]&lt;br /&gt;&lt;br /&gt;&lt;a href='https://stocksharp.ru/file/109909/trading_robot.jpg' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.ru/file/109909/trading_robot.jpg?size=800x800" alt="trading_robot.jpg" title="trading_robot.jpg" /&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;Сам трейдер составляет и &lt;b&gt;определяет последовательность&lt;/b&gt; подачи заявок на покупку или продажу, указывая порядок управления своими средствами. &lt;br /&gt;Условия управления капиталом, установленные трейдером как параметры &lt;b&gt;программы&lt;/b&gt;, определяют необходимый или оптимальный размер вложений, например, купленных ценных бумаг. Так же эта система управляет допустимой потери или риска, при котором размер убытка будет приемлемым. При этом управление риском производится путем установки алгоритма &lt;b&gt;стоп-лосс&lt;/b&gt;.&lt;br /&gt;Отсутствие у алгоритмической программы чувств и эмоций позволяет избежать нервных срывов или иных эмоциональных всплесков. Это безусловно идет в плюс, та как работа трейдера зачастую происходит на грани нервного напряжения, и порой у человека могут сдать нервы, что повлечет за собой необдуманный шаг и как следствие потери. В то же время, трейдер имеет возможность вмешиваться в работу торговой стратегии, внося необходимые корректировки. [laugh]&lt;br /&gt;&lt;b&gt;Задача алготрейдинга &lt;/b&gt;– это точное исполнение указаний своей системы. Часто в некоторых источниках можно увидеть название &lt;em&gt;механические торговые системы&lt;/em&gt; (&lt;em&gt;МТС&lt;/em&gt;), однако алготрейдинг наиболее распространенное название. По сути, алгоритм&lt;b&gt; &amp;#171;механически&amp;#187; исполняется программой&lt;/b&gt;, исключая суждения о рыночной ситуации и состоянии различных инструментов. Нужно сказать, что &amp;#171;механическая&amp;#187; система не всегда автоматизирована. Последняя в отличие от первой, самостоятельно совершает сделки, при этом участие человека не требуется или сведено к минимуму.&lt;br /&gt;&lt;br /&gt;&lt;a href='https://stocksharp.ru/file/109902/trade_systems.jpg' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.ru/file/109902/trade_systems.jpg?size=800x800" alt="trade_systems.jpg" title="trade_systems.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;    &lt;br /&gt;Эксперты отмечают, что алготрейдинг состоит из &lt;b&gt;двух этапов&lt;/b&gt;. Давайте подробнее рассмотрим их.&lt;br /&gt;На уровне &lt;b&gt;первого этапа&lt;/b&gt;, трейдер создает свою &amp;#171;механическую&amp;#187; стратегию. После создания, проходит процесс тестирования на маркет данных, и впоследствии, при достижении стратегией необходимого уровня потенциальной прибыли, тестирование переходит в режим реального времени или реальных торгов. Отметим, что последний этап проходит при использовании &lt;b&gt;минимального капитала&lt;/b&gt;, так как является тестированием, а некоторые трейдеры предпочитают ему &amp;#171;торговлю на бумаге&amp;#187;. При этом доходность, это не единственный критерий который дает оценку работоспособности стратегии. &lt;br /&gt;Давайте поговорим о средствах создания и последующего тестирования созданных стратегий. К таким средствам могут относится специальные программы, предназначенные для технического анализа созданных алгоритмических систем. Наиболее известными являются: осуществляется с использованием специализированных программ: &lt;em&gt;MetaStock, S#.Designer, Wealth-Lab, ТSLab&lt;/em&gt; и другие.&lt;br /&gt;Программа стратегии пишется на различных языках программирования таких как: &lt;em&gt;C#, C++, LUA&lt;/em&gt; и другие. Записанный алгоритм дает возможность использовать скаченные маркет данные для тестирования стратегии, а в дальнейшем позволяет выставлять заявки в программах используемых для торговли. Стоит отметить, что стратегии могут быть  созданы как в &lt;b&gt;программах конструкторах&lt;/b&gt; например: &lt;em&gt;&lt;a href="https://stocksharp.ru/products/designer/" title="https://stocksharp.ru/products/designer/"&gt;&lt;u&gt;S#.Designer&lt;/u&gt;&lt;/a&gt;, ТSLab&lt;/em&gt;, в которых стратегия создается на базе кубиков, а программа представляет собой схему, так и в программах где используется непосредственное программирование &lt;em&gt;MetaStock, Wealth-Lab&lt;/em&gt; , в том числе с использованием готовых библиотек, например &lt;em&gt;&lt;a href="https://stocksharp.ru/products/api/" title="https://stocksharp.ru/products/api/"&gt;&lt;u&gt;S#.API&lt;/u&gt;&lt;/a&gt;&lt;/em&gt;.&lt;br /&gt;&lt;b&gt;Второй этап &lt;/b&gt;разработки начинается после того как стратегия трейдера полностью прошла тестирование и готова к реальной торговле. На втором этапе реализуется подход к работе стратегии либо создается торговый робот, который будет торговать по установленному алгоритму, либо трейдер выбирает ручное выставление заявок по сигналу получаемому от созданной стратегии. &lt;br /&gt;Трейдер подключает &lt;b&gt;экспортирование биржевых маркет данных&lt;/b&gt;,  полученных в режиме реального времени к программе в которой создана его торговая стратегия. Стратегия обрабатывает полученные данные и  исходя из результата, подает сигнал на подачу заявок.&lt;br /&gt;Еще раз напомним, что действия по сигналу стратегии могут быть сделаны вручную трейдером, например как в системе &lt;em&gt;QUIK&lt;/em&gt;, а так же могут быть делегированы торговому роботу, который выставляет заявки автоматически согласно алгоритму, например в таких системах как &lt;em&gt;S#.Designer, MT4, TSlab&lt;/em&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href='https://stocksharp.ru/file/109903/Trade_Strategy.jpg' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.ru/file/109903/Trade_Strategy.jpg?size=800x800" alt="Trade_Strategy.jpg" title="Trade_Strategy.jpg" /&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;&lt;b&gt;Необходимо помнить,&lt;/b&gt; что создание торгового робота, &lt;b&gt;не снимает&lt;/b&gt; с трейдера ответственности за саму торговлю. Трейдер должен постоянно &lt;b&gt;отслеживать&lt;/b&gt; работу своего робота, &lt;b&gt;редактировать&lt;/b&gt; условия совершения сделок согласно изменницею ситуации на рынке. [nerd] Стоит сказать, при работе на длинных тайм фреймах, сопоставимых, например, с часом, автоматизация выставления заявок может отпасть, так как трейдер способен сам коррелировать и управлять торговлей на длительных периодах. &lt;br /&gt;Любое выбранное направление алготрейдинга несомненно может принести трейдеру &lt;b&gt;прибыль&lt;/b&gt;, но подход должен быть глубокий, не просто на уровне выбранного алгоритма, необходимо учесть инструменты на которых будет вестись торговля, программное обеспечение. &lt;b&gt;Важное правило&lt;/b&gt; – анализ и тестирование, это всегда минимизирует ваши потери.&lt;br /&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/11112/</id>
    <title type="text">FAQ по FIX протоколу. Лимитные ордера при работе через FIX протокол.</title>
    <published>2019-10-21T12:33:24Z</published>
    <updated>2019-10-21T12:33:24Z</updated>
    <author>
      <name>Marat</name>
      <uri>https://stocksharp.ru/users/101940/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Алготрейдинг" />
    <category term="трейдинг" />
    <category term="Биржа" />
    <category term="Московская биржа" />
    <category term="торговля" />
    <category term="биржевая торговля" />
    <category term="FIX протокол" />
    <category term="биржевая информация" />
    <category term="FIX 4" />
    <category term="FIX 5" />
    <category term="высокочастотный трейдинг" />
    <category term="FIX коннектор" />
    <category term="коннектор к бирже" />
    <category term="коннектор для трейдинга" />
    <content type="html">Как говорилось раньше &lt;b&gt;важным&lt;/b&gt; преимуществом работы через FIX протокол это возможность использовать лимитные ордера &lt;b&gt;FOK (&amp;#39;Fill or Kill&amp;#39;) &lt;/b&gt;и&lt;b&gt; IOC (&amp;#39;Immediate Or Cancel&amp;#39;)&lt;/b&gt;. Их &lt;b&gt;преимущество&lt;/b&gt;  перед простыми рыночными ордерами в &lt;b&gt;отсутствии проскальзывания цены&lt;/b&gt;. Фактически для арбитражных стратегий, таких как  &lt;em&gt;&lt;a href="https://stocksharp.ru/robot/10/ehdvard--ruki-nozhnitsy/" title="https://stocksharp.ru/robot/10/ehdvard--ruki-nozhnitsy/"&gt;&amp;#171;Эдвард – руки ножницы&amp;#187;&lt;/a&gt;&lt;/em&gt; от компании &lt;a href="https://stocksharp.ru" title="https://stocksharp.ru"&gt;StockSharp&lt;/a&gt;, это означает практически&lt;b&gt; нулевой риск&lt;/b&gt; – Рассмотрим как работают ордера &lt;em&gt;FOK&lt;/em&gt; и &lt;em&gt;IOC&lt;/em&gt; по FIX протоколу на примере сравнения их с обычными ордерами.&lt;br /&gt;Перед совершением сделки, трейдер имеет возможность &lt;b&gt;продать&lt;/b&gt; или &lt;b&gt;купить&lt;/b&gt; выбранный актив, используя лимитный или рыночный ордер. Выбранный трейдером вариант определяет уровень контроля за ценой исполнения.  &lt;br /&gt;Так рыночный ордер, определяет исполнение его в &lt;b&gt;кротчайший срок&lt;/b&gt; и по лучшей из доступных цен. Например, при покупке 100 единиц по рыночному ордеру, заявка исполнится целиком по той цене, которая доступна на рынке. Соответственно, условно 50 единиц могут быть по выгодной цене, а остальные по цене менее выгодной или совсем убыточной, проще говоря,  ордер исполнится по нескольким разным ценам. При этом, мы имеем ситуацию с большим проскальзыванием. &lt;br /&gt; &lt;br /&gt;&lt;a href='https://stocksharp.ru/file/109873/fix_protocol_limith_order.jpg' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.ru/file/109873/fix_protocol_limith_order.jpg?size=800x800" alt="fix_protocol_limith_order.jpg" title="fix_protocol_limith_order.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;FIX протокол предоставляет трейдеру &lt;b&gt;назначить свою цену&lt;/b&gt; исполнения заявки, таким образом она будет исполняться по указанной цене или выше. Это и есть использование &lt;b&gt;лимитного ордера&lt;/b&gt; [laugh]. Например, если трейдер разместил лимитный ордер на продажу актива и назначил цену исполнения 100 у.е., то ордер не будет исполнен, пока цена за размещенный актив не станет равной или выше установленного лимита в 100у.е. [nerd]&lt;br /&gt;&lt;br /&gt;&lt;a href='https://stocksharp.ru/file/109872/fix_connector_limith_order.jpg' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.ru/file/109872/fix_connector_limith_order.jpg?size=800x800" alt="fix_connector_limith_order.jpg" title="fix_connector_limith_order.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Именно по этому, мы рекомендуем использовать &lt;b&gt;подключение по FIX протоколу&lt;/b&gt;, и предоставляем возможность приобретения коннекторов подключения или разработки коннекторов индивидуально. С полным спектром наших продуктов можно ознакомится по &lt;a href="https://stocksharp.ru/products/pricing/" title="https://stocksharp.ru/products/pricing/"&gt;ссылке&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/11077/</id>
    <title type="text">StockSharp_4.4.16_ru</title>
    <published>2019-10-11T15:38:11Z</published>
    <updated>2019-10-21T12:01:00Z</updated>
    <author>
      <name>bango666</name>
      <uri>https://stocksharp.ru/users/110423/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Пишу первую программу скачал StockSharp_4.4.16_ru посмотрел видео урок по созданию простого робота для выставления заявок дошел до строки &lt;br /&gt;_trader.Connected += () =&amp;gt; _trader.StartExport();//запуск экспорт данных студия выдает ошибку о том что StartExport() нет в  dll в какой dll лежит StartExport()</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/11105/</id>
    <title type="text">S# Shell для теста, без исходников?</title>
    <published>2019-10-19T11:41:09Z</published>
    <updated>2019-10-19T18:03:10Z</updated>
    <author>
      <name>bullishbear</name>
      <uri>https://stocksharp.ru/users/103787/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Добрый день,&lt;br /&gt;Скажите, возможно попробовать S# Shell, не хочется приобретать кота в мешке.&lt;br /&gt;Trial или еще как-то.</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/11073/</id>
    <title type="text">Не отвечает приложение при отрисовке заявок и сделок</title>
    <published>2019-10-10T16:51:41Z</published>
    <updated>2019-10-14T12:46:19Z</updated>
    <author>
      <name>Константин</name>
      <uri>https://stocksharp.ru/users/98279/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Добрый день. При тестировании на исторических данных генерируется много заявок и сделок которые отрисовываются на графике. Спустя примерно 5-10 секунд после запуска приложение зависает. Если отключить отрисовку заявок и сделок то работает нормально. Использую историю за 1 год, минутные свечи. Есть ли способ оптимизировать работу отрисовки?&lt;br /&gt;Код:&lt;br /&gt;Xaml:&lt;br /&gt;&lt;div class='spoilertitle'&gt;&lt;input type='button' value='Показать спойлер' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_bdb0b37527f446489710348c63370a0d');" title='Показать спойлер' /&gt;&lt;/div&gt;&lt;div class='spoilerbox' id='spolier_bdb0b37527f446489710348c63370a0d' style='display:none'&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&amp;lt;Window x:Class=&amp;quot;test.MainWindow&amp;quot;&lt;br /&gt;        xmlns=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&amp;quot;&lt;br /&gt;        xmlns:x=&amp;quot;http://schemas.microsoft.com/winfx/2006/xaml&amp;quot;&lt;br /&gt;        xmlns:d=&amp;quot;http://schemas.microsoft.com/expression/blend/2008&amp;quot;&lt;br /&gt;        xmlns:mc=&amp;quot;http://schemas.openxmlformats.org/markup-compatibility/2006&amp;quot;&lt;br /&gt;        xmlns:local=&amp;quot;clr-namespace:test&amp;quot;&lt;br /&gt;        xmlns:charting=&amp;quot;http://schemas.stocksharp.com/xaml&amp;quot;&lt;br /&gt;        mc:Ignorable=&amp;quot;d&amp;quot;&lt;br /&gt;        Title=&amp;quot;MainWindow&amp;quot; Height=&amp;quot;450&amp;quot; Width=&amp;quot;800&amp;quot;&amp;gt;&lt;br /&gt;    &amp;lt;Grid&amp;gt;&lt;br /&gt;        &amp;lt;Grid.RowDefinitions&amp;gt;&lt;br /&gt;            &amp;lt;RowDefinition/&amp;gt;&lt;br /&gt;            &amp;lt;RowDefinition Height=&amp;quot;Auto&amp;quot;/&amp;gt;&lt;br /&gt;        &amp;lt;/Grid.RowDefinitions&amp;gt;&lt;br /&gt;        &amp;lt;charting:Chart Name=&amp;quot;Chart&amp;quot; /&amp;gt;&lt;br /&gt;        &amp;lt;Button Content=&amp;quot;Старт&amp;quot; Click=&amp;quot;ButtonBase_OnClick&amp;quot; Grid.Row=&amp;quot;1&amp;quot; Margin=&amp;quot;5&amp;quot;&amp;gt;&amp;lt;/Button&amp;gt;&lt;br /&gt;    &amp;lt;/Grid&amp;gt;&lt;br /&gt;&amp;lt;/Window&amp;gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;C#&lt;br /&gt;&lt;div class='spoilertitle'&gt;&lt;input type='button' value='Показать спойлер' class='btn btn-primary' onclick="toggleSpoiler(this, 'spolier_b9d8949515c34ef2a81b2b3c9c731f15');" title='Показать спойлер' /&gt;&lt;/div&gt;&lt;div class='spoilerbox' id='spolier_b9d8949515c34ef2a81b2b3c9c731f15' style='display:none'&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;using System;&lt;br /&gt;using System.Linq;&lt;br /&gt;using System.Windows;&lt;br /&gt;using Ecng.Common;&lt;br /&gt;using StockSharp.Algo;&lt;br /&gt;using StockSharp.Algo.Candles;&lt;br /&gt;using StockSharp.Algo.Indicators;&lt;br /&gt;using StockSharp.Algo.Strategies;&lt;br /&gt;using StockSharp.BusinessEntities;&lt;br /&gt;using StockSharp.Messages;&lt;br /&gt;using StockSharp.Xaml.Charting;&lt;br /&gt;using System.Collections.Generic;&lt;br /&gt;using MoreLinq;&lt;br /&gt;using StockSharp.Algo.Storages;&lt;br /&gt;using StockSharp.Algo.Testing;&lt;br /&gt;namespace test&lt;br /&gt;{&lt;br /&gt;    /// &amp;lt;summary&amp;gt;&lt;br /&gt;    /// Логика взаимодействия для MainWindow.xaml&lt;br /&gt;    /// &amp;lt;/summary&amp;gt;&lt;br /&gt;    public partial class MainWindow : Window&lt;br /&gt;    {&lt;br /&gt;        private HistoryEmulationConnector _historyEmulationConnector;&lt;br /&gt;        private StorageRegistry _storageRegistry;&lt;br /&gt;        public List&amp;lt;Security&amp;gt; Securities;&lt;br /&gt;        private Str Str;&lt;br /&gt;        public MainWindow()&lt;br /&gt;        {&lt;br /&gt;            InitializeComponent();&lt;br /&gt;            Securities=new List&amp;lt;Security&amp;gt;();&lt;br /&gt;            Str = new Str(Chart);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        private void ButtonBase_OnClick(object sender, RoutedEventArgs e)&lt;br /&gt;        {&lt;br /&gt;            _storageRegistry = new StorageRegistry { DefaultDrive = new LocalMarketDataDrive(@&amp;quot;...&amp;quot;) };//todo Установить путь к истории&lt;br /&gt;&lt;br /&gt;            _storageRegistry.DefaultDrive.AvailableSecurities.ForEach(sId =&amp;gt;&lt;br /&gt;            {&lt;br /&gt;                Securities.Add(new Security()&lt;br /&gt;                {&lt;br /&gt;                    Id = sId.SecurityCode + &amp;quot;@&amp;quot; + sId.BoardCode,&lt;br /&gt;                    Code = sId.SecurityCode,&lt;br /&gt;                    Type = sId.SecurityType,&lt;br /&gt;                    Board = ExchangeBoard.Micex,&lt;br /&gt;                    PriceStep = 0.01m&lt;br /&gt;                });&lt;br /&gt;            });&lt;br /&gt;&lt;br /&gt;            var portfolio = new Portfolio { Name = &amp;quot;test account&amp;quot;, BeginValue = 1000000 };&lt;br /&gt;            _historyEmulationConnector = new HistoryEmulationConnector(Securities, new&amp;#91;&amp;#93; { portfolio })&lt;br /&gt;            {&lt;br /&gt;                HistoryMessageAdapter =&lt;br /&gt;                {&lt;br /&gt;                    StorageRegistry = _storageRegistry,&lt;br /&gt;                    StartDate = new DateTime(2018, 1, 1, 0, 0, 0),&lt;br /&gt;                    StopDate = new DateTime(2019, 9, 20, 0, 0, 0),&lt;br /&gt;                },&lt;br /&gt;            };&lt;br /&gt;&lt;br /&gt;            Str.Security = Securities&amp;#91;0&amp;#93;;//todo Установить инструмент из истории&lt;br /&gt;            Str.Portfolio = portfolio;&lt;br /&gt;            Str.Connector = _historyEmulationConnector;&lt;br /&gt;            Str.Volume = 1;&lt;br /&gt;&lt;br /&gt;            _historyEmulationConnector.Connected += () =&amp;gt; { Str.Start(); _historyEmulationConnector.Start(); };&lt;br /&gt;            _historyEmulationConnector.Connect();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    class Str : Strategy&lt;br /&gt;    {&lt;br /&gt;        private SimpleMovingAverage LongSma { get; set; }&lt;br /&gt;        private SimpleMovingAverage ShortSma { get; set; }&lt;br /&gt;        private CandleSeries CandleSeries { get; set; }&lt;br /&gt;        private ChartCandleElement ChartCandleElement { get; set; }&lt;br /&gt;        private ChartIndicatorElement LongElement { get; set; }&lt;br /&gt;        public ChartIndicatorElement ShortElement { get; set; }&lt;br /&gt;        private ChartOrderElement _chartOrderElement;&lt;br /&gt;        private ChartTradeElement _chartTradeElement;&lt;br /&gt;        private bool _isShortLessPrev;&lt;br /&gt;        private Chart Chart { get; set; }&lt;br /&gt;        public Str(Chart chart)&lt;br /&gt;        {&lt;br /&gt;            Chart = chart;&lt;br /&gt;            LongSma = new SimpleMovingAverage(){Length = 8};&lt;br /&gt;            ShortSma = new SimpleMovingAverage(){Length = 4};&lt;br /&gt;            _chartOrderElement = new ChartOrderElement(){Title = &amp;quot;Ордеры&amp;quot;};&lt;br /&gt;            _chartTradeElement = new ChartTradeElement(){Title = &amp;quot;Сделки&amp;quot;};&lt;br /&gt;            ChartCandleElement = new ChartCandleElement(){Title = &amp;quot;Свечи&amp;quot;};&lt;br /&gt;            LongElement = new ChartIndicatorElement(){Title = LongSma.ToString()};&lt;br /&gt;            ShortElement = new ChartIndicatorElement(){Title = ShortSma.ToString()};&lt;br /&gt;            Chart.Areas.Add(new ChartArea() { Elements = { ChartCandleElement, LongElement, ShortElement, _chartTradeElement, _chartOrderElement } });&lt;br /&gt;&lt;br /&gt;            NewMyTrade += trade =&amp;gt;&lt;br /&gt;            {&lt;br /&gt;                var chartDrawData = new ChartDrawData();&lt;br /&gt;                var chartDrawDataItem = chartDrawData.Group(trade.Trade.Time);&lt;br /&gt;                chartDrawDataItem.Add(_chartTradeElement, trade);&lt;br /&gt;                Chart.Draw(chartDrawData);&lt;br /&gt;            };&lt;br /&gt;            OrderRegistered += order =&amp;gt;&lt;br /&gt;            {&lt;br /&gt;                var chartDrawData = new ChartDrawData();&lt;br /&gt;                var chartDrawDataItem = chartDrawData.Group(order.Time);&lt;br /&gt;                chartDrawDataItem.Add(_chartOrderElement, order);&lt;br /&gt;                Chart.Draw(chartDrawData);&lt;br /&gt;&lt;br /&gt;            };&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        protected override void OnStarted()&lt;br /&gt;        {&lt;br /&gt;            CandleSeries = new CandleSeries(typeof(TimeFrameCandle), Security, TimeSpan.FromMinutes(1));&lt;br /&gt;            ((Connector) Connector).CandleSeriesProcessing += CandleManager_Processing;&lt;br /&gt;            if (!((Connector)Connector).SubscribedCandleSeries.Contains(CandleSeries))&lt;br /&gt;                ((Connector)Connector).SubscribeCandles(CandleSeries);&lt;br /&gt;            base.OnStarted();&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        private void CandleManager_Processing(CandleSeries candleSeries, Candle candle)&lt;br /&gt;        {&lt;br /&gt;            if (candle.State != CandleStates.Finished) return;&lt;br /&gt;            var ls = LongSma.Process(candle);&lt;br /&gt;            var ss = ShortSma.Process(candle);&lt;br /&gt;&lt;br /&gt;            if (LongSma.IsFormed &amp;amp;&amp;amp; LongSma.IsFormed)&lt;br /&gt;            {&lt;br /&gt;                var isShortLessCurrent = ShortSma.GetCurrentValue() &amp;lt; LongSma.GetCurrentValue();&lt;br /&gt;&lt;br /&gt;                if (isShortLessCurrent != _isShortLessPrev)&lt;br /&gt;                {&lt;br /&gt;                        var order = new Order()&lt;br /&gt;                        {&lt;br /&gt;                            Type = OrderTypes.Limit,&lt;br /&gt;                            Direction = isShortLessCurrent ? Sides.Sell : Sides.Buy,&lt;br /&gt;                            Price = candle.ClosePrice,&lt;br /&gt;                            Portfolio = Portfolio,&lt;br /&gt;                            Volume = Position != 0 ? Volume * 2 : Volume,&lt;br /&gt;                            Security = Security&lt;br /&gt;                        };&lt;br /&gt;                        RegisterOrder(order);&lt;br /&gt;                }&lt;br /&gt;                _isShortLessPrev = isShortLessCurrent;&lt;br /&gt;            }&lt;br /&gt;            var chartDrawData = new ChartDrawData();&lt;br /&gt;            var chartDrawDataItem = chartDrawData.Group(candle.OpenTime);&lt;br /&gt;            chartDrawDataItem.Add(ChartCandleElement, candle);&lt;br /&gt;            chartDrawDataItem.Add(ShortElement, ss);&lt;br /&gt;            chartDrawDataItem.Add(LongElement, ls);&lt;br /&gt;            Chart.Draw(chartDrawData);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/11088/</id>
    <title type="text">FIX протокол. Архитектура FIX сообщений.</title>
    <published>2019-10-14T11:08:45Z</published>
    <updated>2019-10-14T11:16:26Z</updated>
    <author>
      <name>Marat</name>
      <uri>https://stocksharp.ru/users/101940/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="Алготрейдинг" />
    <category term="трейдинг" />
    <category term="Биржа" />
    <category term="Московская биржа" />
    <category term="торговля" />
    <category term="биржевая торговля" />
    <category term="FIX протокол" />
    <category term="биржевая информация" />
    <category term="FIX 4" />
    <category term="FIX 5" />
    <category term="высокочастотный трейдинг" />
    <category term="FIX коннектор" />
    <category term="коннектор к бирже" />
    <category term="коннектор для трейдинга" />
    <category term="HFT торговля" />
    <content type="html">Сегодня невозможно представить &lt;b&gt;биржевую торговлю&lt;/b&gt; без использования &lt;b&gt;FIX протокола&lt;/b&gt;. Однако появился он относительно недавно - в 1992. &lt;br /&gt;Увеличение &lt;b&gt;скорости&lt;/b&gt; и &lt;b&gt;объема данных&lt;/b&gt;, побудили создать принципиально новое соединение с высокой пропускной способностью и надежностью подключение. &lt;br /&gt;На сегодня выпущена уже пятая версия протокола FIX5, которая должна придти на смену предыдущему FIX4. Однако наиболее популярным для использования все так же остается FIX4, который зарекомендовал себя, как&lt;b&gt; оптимальное решение для передачи данных.&lt;/b&gt;&lt;br /&gt;Сам протокол существует в двух синтаксисах, это &lt;em&gt;XML&lt;/em&gt; (второе название FIXML) и &lt;em&gt;&amp;#171;ключ - значение&amp;#187;&lt;/em&gt; (&amp;#171;Tag=Value&amp;#187;). Стоит сказать, что протокол разделяется на 3 уровня  - транспортный, сессионный, прикладной.&lt;br /&gt;&lt;br /&gt;&lt;a href='https://stocksharp.ru/file/109824/fix_protocol.jpg' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.ru/file/109824/fix_protocol.jpg?size=800x800" alt="fix_protocol.jpg" title="fix_protocol.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Для лучшего восприятия механизма работы протокола, рассмотрим каждый из уровней отдельно.&lt;br /&gt;Начнем рассмотрение с &lt;b&gt;транспортного уровня&lt;/b&gt; протокола FIX. &lt;br /&gt;Данный уровень дает описание структуры сообщения передаваемого посредством FIX протокола.  Дает описание как построена структура сообщений. &lt;br /&gt;Рассматривая ее можно сказать следующее, что это обычная строка, содержащая шифр, записанный при помощи синтаксиса FIX протокола. По сути  - это шифр, содержащий сообщение для отправки на торговую площадку. &lt;br /&gt;&lt;br /&gt;&lt;a href='https://stocksharp.ru/file/109826/FIX_connector_data.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.ru/file/109826/FIX_connector_data.png?size=800x800" alt="FIX_connector_data.png" title="FIX_connector_data.png" /&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;	На примере указано сообщение транспортного уровня FIX протокола, которое направлено на биржу Lmax. Данное сообщение передает информацию, что трейдер хочет войти в систему торгов, для совершения операций.  &lt;br /&gt;	На первый взгляд, данное сообщение это набор цифр и символов, однако давайте разберем, какую информацию содержит данное сообщение.  &lt;br /&gt;На нашем примере мы видим синтаксис типа &lt;em&gt;&amp;#171;Tag=Value&amp;#187;&lt;/em&gt;. Все сообщение состоят из нескольких составляющих - полей, данные поля поделены вертикальными линиями. Каждое поле разделено на две части знаком &amp;#171;=&amp;#187;. Получается, что слева от знака равно – ключ или &amp;#171;Tag&amp;#187;, а справа – значение или &amp;#171;Value&amp;#187;.   Ключи – это всегда положительные и целые числа, которые обозначают наименование поля. Каждой биржей предоставляется своего рода документация, в соответствии с которой шифруются и дешифруются сообщения по FIX протоколу. В ней указываются имена &amp;#171;Tag&amp;#187;, описывающих тип данных, и описание самих получаемых данных. &lt;br /&gt;Практически все поля стандартизированы, имея одинаковый смысл на всех торговых площадках. Однако стоит сказать, что при этом, &lt;b&gt;не каждая биржа поддерживает их&lt;/b&gt;. Сообщения отправленные посредством FIX протокола, содержат обязательные и необязательные поля, а также условно-обязательные поля, присутствие которых обусловлено наличием других полей.  На схеме ниже можем наглядно увидеть разделение сообщения на поля.&lt;br /&gt;Давайте рассмотрим пример такой записи.&lt;br /&gt;&lt;br /&gt;&lt;a href='https://stocksharp.ru/file/109831/FIX_protocol_messenge.png' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.ru/file/109831/FIX_protocol_messenge.png?size=800x800" alt="FIX_protocol_messenge.png" title="FIX_protocol_messenge.png" /&gt;&lt;/a&gt;&lt;br /&gt; &lt;br /&gt;Разделение полей происходит посредством &lt;em&gt;SOH&lt;/em&gt; символа, который расшифровывается как - Start of Heading, и принадлежит способу кодирования &lt;em&gt;ASCII&lt;/em&gt;. При этом данный символ не отображается в виде аббревиатуры, а условно указывается вертикальной чертой и с точки зрения формата &lt;em&gt;UNICODE&lt;/em&gt; имеет значение &lt;b&gt; “\u0001”&lt;/b&gt;.&lt;br /&gt;Та же стоит отметить, что сообщение строится из трех частей. Условно они показаны на рисунке различными цветами:&lt;br /&gt;- Зеленый - заголовок&lt;br /&gt;- Розовый - тело &lt;br /&gt;- Сиреневый - контрольная сумма&lt;br /&gt;Давайте подробнее разберем, что собой представляет каждая из частей.&lt;br /&gt;В заголовке сообщения может содержаться различное количество полей, рассмотрим главные, которые обязательно должны быть в FIX сообщении: &lt;br /&gt;- &lt;b&gt;8 = FIX.4.4&lt;/b&gt; – это поле указывает на версию протокола, оно всегда первое.&lt;br /&gt;- &lt;b&gt;9 = 123&lt;/b&gt; – данное поле указывает на размер FIX сообщения, оно располагается вторым размер сообщения, всегда второе по счету&lt;br /&gt;- &lt;b&gt;35 = V&lt;/b&gt; – данное поле означает наименование операции, которую необходимо совершить, в данном случае V – запрос рыночных данных, данное поле всегда расположено третьим.&lt;br /&gt;- &lt;b&gt;34 = 2&lt;/b&gt; – обозначает какое по счету сообщение, исчисляется за текущую сессию.&lt;br /&gt;- &lt;b&gt;49 = FIXtest1&lt;/b&gt; – данное поле означает идентификатор пользователя-отправителя, который присваиваться биржей.&lt;br /&gt;- &lt;b&gt;54 = 20120924-14:05:44.952&lt;/b&gt; – это текущее время направления сообщения.&lt;br /&gt;- &lt;b&gt;56 = LMXBDM&lt;/b&gt; – данное поле значение идентификатора, который присваивается получателю биржей.&lt;br /&gt;Рассматривая тело FIX сообщения, можно сказать что это  перечень полей, которые соответствуют каждому из типов запросов.  Так же используется практика применения набора полей или групп, которые содержат одинаковые теги.&lt;br /&gt;Давай те предположим, что нам нужно запросить информацию по списку инструментов. При этом каждый из них будет иметь одинаковый тег, и отличаться только содержанием. Мы перечисляем необходимые инструменты, используя при этом для каждого отдельное поле. Такой вид записи называется группой или набором полей. Все они будут иметь один тег или тип данных, и отличаться только содержимым.&lt;br /&gt;Рассмотрим контрольную сумму. Расчет производится в соответствии со специальным алгоритмом, при расчете принимаются заголовок и тело. В начале, высчитывается длина &amp;#171;заголовка плюс тело&amp;#187;, затем делим длину на 256 и получаем остаток. Контрольная сумма состоит из трех символов. Если в остатке от деления мы получили 20, то вперед мы добавляем 0, и получаем 020. В итоге контрольная сумма в нашем случае будет иметь вид &amp;#171;10 = 020|&amp;#187;.&lt;br /&gt;Теперь рассмотрим протокол уровня сессии. Данный протокол FIX сообщений регламентирует механизм установки/разрыва соединения, поддержания соединения, сообщения о пропущенных данных. Он состоит из ряда сообщений:&lt;br /&gt;1. &lt;b&gt;Logon (35=A)&lt;/b&gt; – по средством данного сообщения происходит аутентификация сервером пользователя. Оно направляется первым, и служит сигналом к началу сессии передачи данных. При успешном запуске, приходит ответное сообщение, при ошибке -сообщение о возникшей ошибки. &lt;br /&gt;2.&lt;b&gt; Logout (35=5)&lt;/b&gt; – данное сообщение говорит о разрыве связи с сервером.&lt;br /&gt;3. &lt;b&gt;Heartbeat (35=0)&lt;/b&gt; – данное сообщение оповещает о готовности контрагентов, направляется обеим сторонам, другое название сообщение &amp;#171;пульса&amp;#187;. Периодичность отправки пульса задается пользователем в первом сообщении Logon. &lt;br /&gt;4. &lt;b&gt;Test Request (35=1)&lt;/b&gt; – это сообщение является тестовым и направляется в случае когда контрагент за установленный период не отправил пульс сообщение. Сеанс сессии будет закрыт, если данное сообщение останется без ответа. &lt;br /&gt;5. &lt;b&gt;Resend Request (35=2)&lt;/b&gt; – это сообщение-запрос, которое направлено на отправку повторного сообщения. Resend Request, например, может повторить дать сигнал, что бы биржа повторила пропущенную информацию.  &lt;br /&gt;6. &lt;b&gt;Reject (35=3)&lt;/b&gt; – сообщение отправляется в ответ, если предыдущее является неправильно сформированным.&lt;br /&gt;7. &lt;b&gt;Sequence Reset (35=4)&lt;/b&gt; – данное сообщение может иметь две формы. &lt;br /&gt;- в поле &lt;em&gt;GapFillFlag &lt;/em&gt;(тег 123) стоит значение  “Y”, применяется для игнорирования административных сообщений, если едет повторение их отсылки. &lt;br /&gt;- во втором случае применяется для обнуления счетчика &lt;em&gt;MsgSeqNum&lt;/em&gt;.&lt;br /&gt;Последним уровнем FIX сообщений  – прикладной.&lt;br /&gt;Данный уровень имеет самое емкое описание, это связано с тем, что данный уровень содержит информацию, которая необходима работы с торговой площадкой.&lt;br /&gt;Давайте рассмотрим основные сообщения данного уровня: &lt;br /&gt;1. &lt;b&gt;Market Data Request (35=V)&lt;/b&gt; – сообщение отправляет сигнал о том, что пользователь подписывается на поток передаваемых данных о котировках в текущий период времени. Пользователь может  отписаться от получения данных через аналогичный запрос, указывая ID предшествующего сообщения. В этом случае ему придет сообщение MarketDataSnapshotFullRefresh (35=W).&lt;br /&gt;2. &lt;b&gt;New Order Single (35=D)&lt;/b&gt; – сообщение о желании пользователя выставить ордер в систему. Пользователь имеет возможность установить собственный идентификатор, это упрощает процесс отслеживания за исполнением, частичным исполнением или отменой ордера.&lt;br /&gt;3. &lt;b&gt;Execution Report (35=8)&lt;/b&gt; – сообщение о отчете о выполнения, которое предоставляет информацию в каком статусе ордер исполнен или отменен, и по каким причинам. Данный отчет указывается как Exec Type (Tag 150).&lt;br /&gt;4. &lt;b&gt;OrderCancelRequest (35=F) &lt;/b&gt;– сообщение о запросе на отмену выставленного ордера. &lt;br /&gt;&lt;br /&gt;&lt;a href='https://stocksharp.ru/file/109830/fix_protocol_trading.jpg' class='lightview' data-lightview-options="skin: 'mac'" data-lightview-group='mixed'&gt;&lt;img src="https://stocksharp.ru/file/109830/fix_protocol_trading.jpg?size=800x800" alt="fix_protocol_trading.jpg" title="fix_protocol_trading.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Мы разобрали основные аспекты работы с сообщениями, передаваемыми по средством FIX протокола. Количество таких сообщений и вариантов запросов огромное множество, и с каждым годом возможности и &lt;b&gt;инструменты работы с FIX протоколом растут&lt;/b&gt;. Спецификация таких сообщений регламентируется биржей, оставляя стандартизированную форму записи запросов. &lt;br /&gt;Напомню, что передача таких сообщений проходит непосредственно при &lt;b&gt;прямом подключении&lt;/b&gt; к торговой площадке, посредством &lt;b&gt;FIX коннекторов&lt;/b&gt;. Стоимость таких коннекторов и их наименование различны, подробнее о спецификации коннекторов можно ознакомится на нашем &lt;a href="https://stocksharp.ru/products/pricing/" title="https://stocksharp.ru/products/pricing/"&gt;&lt;u&gt;&lt;b&gt;сайте&lt;/b&gt;&lt;/u&gt;&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/10645/</id>
    <title type="text">Установка S#.API 4.4.16 в Visual Studio 2019 происходит с ошибкой</title>
    <published>2019-04-25T21:21:06Z</published>
    <updated>2019-10-12T22:09:27Z</updated>
    <author>
      <name>Нейро Инсайдер</name>
      <uri>https://stocksharp.ru/users/104371/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <category term="S#.Api" />
    <category term="S#.UI" />
    <content type="html">Уважаемые разработчики, пробовали ли вы устанавливать S#.API в новую Студию через nuget? Я пробовал несколько раз создать WPF .NET решение и затем добавлял StockSharp через nuget по инструкции:&lt;br /&gt;&lt;a href="https://doc.stocksharp.ru/html/b9f672db-e0c9-4208-9759-179e5de17fd8.htm
" title="https://doc.stocksharp.ru/html/b9f672db-e0c9-4208-9759-179e5de17fd8.htm
"&gt;https://doc.stocksharp.r...8-9759-179e5de17fd8.htm
&lt;/a&gt;&lt;br /&gt;Моя цель - создать простое решение S#.UI. Всегда получал такие предупреждения и ошибку:&lt;br /&gt;&lt;br /&gt;Предупреждение	1&lt;br /&gt;несоответствие между архитектурой процессора проекта &amp;quot;MSIL&amp;quot;, сборка которого выполняется, и архитектурой процессора ссылки &amp;quot;FeedOS_Managed_vc12, Version=0.0.0.0, Culture=neutral, PublicKeyToken=e3d34335369e419e, processorArchitecture=AMD64&amp;quot;, &amp;quot;AMD64&amp;quot;. Это несоответствие может привести к ошибкам во время выполнения. Рекомендуется изменить целевую архитектуру процессора для проекта с помощью диспетчера конфигураций, чтобы согласовать архитектуры процессоров для проекта и ссылок, или использовать зависимость от ссылок с архитектурой процессора, соответствующей целевой архитектуре процессора проекта.	001			&lt;br /&gt;&lt;br /&gt;Предупреждение	2&lt;br /&gt;несоответствие между архитектурой процессора проекта &amp;quot;MSIL&amp;quot;, сборка которого выполняется, и архитектурой процессора ссылки &amp;quot;StockSharp.QuikLua, Version=4.4.16.0, Culture=neutral, processorArchitecture=x86&amp;quot;, &amp;quot;x86&amp;quot;. Это несоответствие может привести к ошибкам во время выполнения. Рекомендуется изменить целевую архитектуру процессора для проекта с помощью диспетчера конфигураций, чтобы согласовать архитектуры процессоров для проекта и ссылок, или использовать зависимость от ссылок с архитектурой процессора, соответствующей целевой архитектуре процессора проекта.	001			&lt;br /&gt;&lt;br /&gt;Предупреждение	3&lt;br /&gt;несоответствие между архитектурой процессора проекта &amp;quot;MSIL&amp;quot;, сборка которого выполняется, и архитектурой процессора ссылки &amp;quot;System.Data.SQLite, Version=1.0.79.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139, processorArchitecture=AMD64&amp;quot;, &amp;quot;AMD64&amp;quot;. Это несоответствие может привести к ошибкам во время выполнения. Рекомендуется изменить целевую архитектуру процессора для проекта с помощью диспетчера конфигураций, чтобы согласовать архитектуры процессоров для проекта и ссылок, или использовать зависимость от ссылок с архитектурой процессора, соответствующей целевой архитектуре процессора проекта.	001			&lt;br /&gt;&lt;br /&gt;Ошибка&lt;br /&gt;FileNotFoundException: Не удалось загрузить файл или сборку &amp;quot;DevExpress.Xpf.Core.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a&amp;quot; либо одну из их зависимостей. Не удается найти указанный файл.&lt;br /&gt;&lt;br /&gt;Прошу помочь в установке S#.API в Visual Studio 2019.</content>
  </entry>
  <entry>
    <id>https://stocksharp.ru/topic/11068/</id>
    <title type="text">Стратегия котирования не останавливается при получения ошибки снятия заявки.</title>
    <published>2019-10-08T17:49:09Z</published>
    <updated>2019-10-09T16:24:39Z</updated>
    <author>
      <name>VolkSib</name>
      <uri>https://stocksharp.ru/users/798/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">После попытки снять исполненную заявку, стратегия котирования остается в состоянии Stopping.&lt;br /&gt;QS_SIZ9@FORTS_SPBFUT000b5	08.10.2019 17:34:19 +03:00	Error	Заявка 77635876 (0x277BEAA) не была отменена по причине System.InvalidOperationException: Ошибка снятия заявки 477289498. Текст &amp;#39;Вы не можете снять данную заявку&amp;#39;..&lt;br /&gt;Стратегия не останавливается&lt;br /&gt;_quotingStrategy.ProcessStateChanged += strategy =&amp;gt;&lt;br /&gt;            {&lt;br /&gt;                if (strategy.ProcessState != ProcessStates.Stopped) return;&lt;br /&gt;                _logger.LogDebug(&amp;quot;Стратегия котирования остановилась.&amp;quot;);&lt;br /&gt;            }&lt;br /&gt;</content>
  </entry>
</feed>