﻿<?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">Многократный приход одних и тех же сделок при тестировании на исторических данных в HistoryEmulationConnector</title>
  <id>~/topic/8398/mnogokratnyi-prihod-odnih-i-teh-zhe-sdelok-pri-testirovanii-na-istoricheskih-dannyh-v-historyemulationconnector/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-27T03:30:47Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=8398" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/40612/</id>
    <title type="text">В новой версии 4.3.26.2 это поведение сохраняется. Приходят по две одинаковые сделки подряд.</title>
    <published>2017-08-14T10:14:51Z</published>
    <updated>2017-08-14T10:14:51Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.com/users/99075/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">В новой версии 4.3.26.2 это поведение сохраняется. Приходят по две одинаковые сделки подряд.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/40495/</id>
    <title type="text">Здравствуйте! Очень хотелось бы получить какую-то реакцию. Или у всех все работает и вы это багом не...</title>
    <published>2017-07-25T09:49:27Z</published>
    <updated>2017-07-25T09:49:27Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.com/users/99075/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Здравствуйте!&lt;br /&gt;&lt;br /&gt;Очень хотелось бы получить какую-то реакцию. Или у всех все работает и вы это багом не считаете?</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/40375/</id>
    <title type="text">Здравствуйте! Смотрю примеры и нашел явный баг в логике чтения исторических данных при использовании...</title>
    <published>2017-07-14T16:00:36Z</published>
    <updated>2017-07-14T16:00:36Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.com/users/99075/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Здравствуйте!&lt;br /&gt;&lt;br /&gt;Смотрю примеры и нашел явный баг в логике чтения исторических данных при использовании HistoryEmulationConnector.&lt;br /&gt;&lt;br /&gt;Проще всего воспроизвести на вашем примере SampleHistoryTesting. Достаточно подписаться на событие connector.NewTrade и посмотреть, какие сделки приходят в него после запуска теста на тиках. Будет хорошо видно, что каждая сделка приходит дважды подряд (по идентификатору транзакции и другим полям видно, что это одна и та же сделка). Так происходит для каждой сделки из источника данных.&lt;br /&gt;&lt;br /&gt;Я поизучал код пару часов и нашел причину такого поведения.&lt;br /&gt;&lt;br /&gt;Проблема в том, как обрабатываются сообщения о подписке в методе HistoryMessageAdapter.ProcessMarketDataMessage(MarketDataMessage message). Обратите внимание на строку: &lt;a target="_blank" href="https://github.com/StockSharp/StockSharp/blob/master/Algo/Testing/HistoryMessageAdapter.cs#L443
" title="https://github.com/StockSharp/StockSharp/blob/master/Algo/Testing/HistoryMessageAdapter.cs#L443
"&gt;https://github.com/Stock...yMessageAdapter.cs#L443
&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;В примере SampleHistoryTesting сообщение MarketDataTypes.Trades и флагом IsSubscribe приходит дважды: первый раз при подписке на Security в коннекторе и второй раз при запуске генерации свечей на этом же инструменте. Фактически, оба раза выполняется такой код: BasketStorage.AddStorage(StorageRegistry.GetTickMessageStorage(security, Drive, StorageFormat)), т.е. в BasketStorage дважды добавляется один и тот же источкник данных, возвращаемый методом StorageRegistry.GetTickMessageStorage(). Далее во время работы у каждой из копий источника в BasketStorage получается своя копия одной и той же сделки.&lt;br /&gt;&lt;br /&gt;На первый взгляд правильным решением было бы, вместо того чтобы добавлять в BasketStorage копии одного и того же источника на каждое сообщение о подписке, проверять, что такой источник уже был добавлен и инкрементировать некий счетчик ссылок, чтобы правильно отрабатывать подписку / отписку. Сообщения об отписке должны декрементировать этот счетчик ссылок.&lt;br /&gt;&lt;br /&gt;Текущее положение не дает возможности нормально тестировать свой код, т.к. в нормальном состоянии, разумеется, не должны приходить копии одной и той же сделки несколько раз.&lt;br /&gt;&lt;br /&gt;Известный ли это баг и планируется это к исправлению? Или может есть известные способы обхода этой ситуации?&lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>