﻿<?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">О новом интерфейсе IMarketDataProvider</title>
  <id>~/topic/306/o-novom-interfeise-imarketdataprovider/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-13T22:54:08Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=topic&amp;id=306" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/posts/m/207/</id>
    <title type="text">Достаточно тихо прошло нововведение интерфейса IMarketDataProvider. Тем не менее, сама фича очень ва...</title>
    <published>2014-09-25T21:47:11Z</published>
    <updated>2016-08-15T23:43:10Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;p&gt;Достаточно тихо прошло нововведение &lt;a href="http://stocksharp.com/forum/4694/Poluchieniie-level1-s-pomoshch-iu-IMarketDataProvider/"&gt;интерфейса IMarketDataProvider&lt;/a&gt;. Тем не менее, сама фича очень важна, так как она меняет использование самого старого класса - &lt;strong&gt;Security&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Как известно, класс &lt;strong&gt;Security&lt;/strong&gt;, олицетворяющий собой финансовый инструмент, имеет просто огромное количество полей (классические OHLC, лучшие котировки, последную сделки, греки опционов и многое другое). Пользоваться этим получается достаточно удобно:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;// получение цены последней сделки
var lastTradePrice = sber.LastTrade == null ? (decimal?)null : sber.LastTrade.Price;

// получение открытого интереса по РИ
var oi = ri.OpenIntereset;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;И чудесным образом подключение к торговой системе через XXXConnector обновляет эти данные. Но в этой красоте скрывается один серьезный недостаток. А что если у нас 2, или даже, 3, поключения (причем, некоторые из них могут быть вполне виртуальными, как &lt;strong&gt;HistoryEmulationConnector&lt;/strong&gt;)? И все они транслируют данные по многим одинаковым инструментам. Какое подключение будет обновлять данные?&lt;/p&gt;
&lt;p&gt;Ответ простой - все одновременно. И мы получаем кашу, если мы используем единые объекты для разных подключений. По-умолчанию, подключения создают отдельные объекты &lt;strong&gt;Security&lt;/strong&gt;. Тогда перезапись данных невозможно. Но получается другая проблема - разные объекты для одного и того же инструмента.&lt;/p&gt;
&lt;p&gt;В итоге родилась идея, чтобы хранить изменяющиеся поля в подключении (точнее, реализации IMarketDataProvider), а константные (код, дата экспирации, шаг цены и т.д.) оставить в классе &lt;strong&gt;Security&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Спешу сразу успокоить - по-умолчанию все работает в классическом режиме. При обновлении вам не нужно &amp;quot;доводить напильником&amp;quot; старый и проверенный код. Но чтобы получить возможность использовать один объект в разных подключения - просто включите &lt;a href="http://stocksharp.com/forum/4694/Poluchieniie-level1-s-pomoshch-iu-IMarketDataProvider/"&gt;соответствующие режимы&lt;/a&gt;. Вот как будет выкглядеть старые код на новый лад:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp"&gt;// получение цены последней сделки
var lastTradePrice = myStrategy.GetSecurityValue&amp;lt;decimal?&amp;gt;(sber, Level1Fields.LastTradePrice);

// получение открытого интереса по РИ
var oi = myStrategy.GetSecurityValue&amp;lt;decimal?&amp;gt;(ri, Level1Fields.OpenIntereset);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Конечно же, это несколько сложнее, чем предыдущий код. Но тем самым будет упрощено взаимодействие с параллельным тестированием и работой стратегий. И да, в &lt;a href="http://stocksharp.com/products/studio/"&gt;Студии&lt;/a&gt; нужно использовать, конечно же, последний вариант. Есть повод для осмысления и модернизации.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>