﻿<?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">Как в контейнер индикатора поместить индикатор? (решено, прошлые значения индикаторов)</title>
  <id>~/topic/2458/kak-v-konteiner-indikatora-pomestit-indikator-(resheno-proshlye-znacheniya-indikatorov)/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-04T09:35:17Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=2458" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/17851/</id>
    <title type="text">А разве лямбда не разворачивается препроцессором в нормальный код? Просто, как я понял, в данном слу...</title>
    <published>2012-03-30T01:13:33Z</published>
    <updated>2012-03-30T01:13:33Z</updated>
    <author>
      <name>ra81</name>
      <uri>https://stocksharp.com/users/16581/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Spiritschaser &lt;a href="https://stocksharp.com/posts/m/17834/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;А разве лямбда не разворачивается препроцессором в нормальный код? Просто, как я понял, в данном случае во всех случаях, когда появляется свечка в источнике, она заменяется на свечка.Свойство, а не преобразуется...&lt;br /&gt;&lt;br /&gt;Или я что-то нафантазировал?&lt;br /&gt;В свою очередь BaseCandleIndicatorSource.ByClose - вполне так себе функция преобразования от любой свечки...&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Что куда там заменяется, я особо не вникал, факт что с  использованием лямбды, индикаторы считаются вполне нормально :). Ваш вариант не использовал. Но посмотрю что за зверь. Хотя полагаю что он в результате является той же лямбдой которая возвращает цену закрытия.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/17834/</id>
    <title type="text">А разве лямбда не разворачивается препроцессором в нормальный код? Просто, как я понял, в данном слу...</title>
    <published>2012-03-29T14:31:45Z</published>
    <updated>2012-03-29T14:32:49Z</updated>
    <author>
      <name>Spiritschaser</name>
      <uri>https://stocksharp.com/users/1927/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">А разве лямбда не разворачивается препроцессором в нормальный код? Просто, как я понял, в данном случае во всех случаях, когда появляется свечка в источнике, она заменяется на свечка.Свойство, а не преобразуется...&lt;br /&gt;&lt;br /&gt;Или я что-то нафантазировал?&lt;br /&gt;В свою очередь BaseCandleIndicatorSource.ByClose - вполне так себе функция преобразования от любой свечки...</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/17832/</id>
    <title type="text">var candleManagerSource = new CandleManagerIndicatorSource(_candleManager, (candle) =&amp;gt; candle.CloseP...</title>
    <published>2012-03-29T13:07:33Z</published>
    <updated>2012-03-29T13:07:33Z</updated>
    <author>
      <name>ra81</name>
      <uri>https://stocksharp.com/users/16581/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Spiritschaser &lt;a href="https://stocksharp.com/posts/m/17831/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
var candleManagerSource = new CandleManagerIndicatorSource(_candleManager, (candle) =&amp;gt; candle.ClosePrice);&lt;/pre&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;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
var candleManagerSource = new CandleManagerIndicatorSource(_candleManager, BaseCandleIndicatorSource.ByClose);&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;ra81, мне пока очень трудно читать лямбда-выражения, объясните, пожалуйста, что происходит с &amp;quot;(candle) =&amp;gt; candle.ClosePrice&amp;quot; после препроцессора. &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;поясняю. Это выражение - суть метод, по которому CandleManagerIndicatorSource обрабатывает свечки прежде чем подать их туда, для чего он собственно является источником. Мы же будем формировать индикаторы? Верно, значит нам нужна цена закрытия. Вот выражение (candle) =&amp;gt; candle.ClosePrice и будет для каждой свечки получать цену закрытия. То есть каждая свечка будет преобразована этой лямбдой прежде чем передаваться в потребитель данных от источника CandleManagerIndicatorSource. &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/17831/</id>
    <title type="text">var candleManagerSource = new CandleManagerIndicatorSource(_candleManager, (candle) =&amp;gt; candle.CloseP...</title>
    <published>2012-03-29T12:38:30Z</published>
    <updated>2012-03-29T12:38:30Z</updated>
    <author>
      <name>Spiritschaser</name>
      <uri>https://stocksharp.com/users/1927/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
var candleManagerSource = new CandleManagerIndicatorSource(_candleManager, (candle) =&amp;gt; candle.ClosePrice);&lt;/pre&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;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;
var candleManagerSource = new CandleManagerIndicatorSource(_candleManager, BaseCandleIndicatorSource.ByClose);&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;ra81, мне пока очень трудно читать лямбда-выражения, объясните, пожалуйста, что происходит с &amp;quot;(candle) =&amp;gt; candle.ClosePrice&amp;quot; после препроцессора. </content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/17538/</id>
    <title type="text">Можно использовать CandleManager для удобства. Не сразу допер как сделать, но наконец заработало. _i...</title>
    <published>2012-03-22T08:50:56Z</published>
    <updated>2012-03-22T08:50:56Z</updated>
    <author>
      <name>ra81</name>
      <uri>https://stocksharp.com/users/16581/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Можно использовать CandleManager для удобства. Не  сразу допер как сделать, но наконец заработало.&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Code&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

_indicatorManager = new IndicatorManager();
var candleManagerSource = new CandleManagerIndicatorSource(_candleManager, (candle) =&amp;gt; candle.ClosePrice);
_filterSmaToken = _indicatorManager.RegisterIndicator(_filterSma, candleManagerSource);
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Где второй параметр конструктора, функция которая будет выдавать нужный тип данных в Process метод индикаторов находящихся в IndicatorManager. В нашем случае у нас SMA которая принимает только decimal на входе, отсюда и (candle) =&amp;gt; candle.ClosePrice. То есть по цене закрытия свечки. Если не указать метод, то все создастся но работать не будет, потому как в Process метод индикатора будут подваться свечки, а он не умеет свечки обрабатывать.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/16940/</id>
    <title type="text">Здравствуйте! Для моей стратегии нужны некоторые прошлые значения индикаторов. У меня опыт программи...</title>
    <published>2012-03-05T11:32:49Z</published>
    <updated>2012-03-11T15:40:42Z</updated>
    <author>
      <name>Spiritschaser</name>
      <uri>https://stocksharp.com/users/1927/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Здравствуйте!&lt;br /&gt;&lt;br /&gt;Для моей стратегии нужны некоторые прошлые значения индикаторов. У меня опыт программирования c/c++, без особо объектных моделей.&lt;br /&gt;&lt;br /&gt;В описании S# посмотрел описания всех членов, связанных с контейнерами, но не совсем понял, как они связываются с индикаторами.&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/17094/</id>
    <title type="text">Так, разобрался. 1. Объявляем в начале кода private переменные токенов (универсальных идентификаторо...</title>
    <published>2012-03-11T15:40:05Z</published>
    <updated>2012-03-11T15:40:05Z</updated>
    <author>
      <name>Spiritschaser</name>
      <uri>https://stocksharp.com/users/1927/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Так, разобрался.&lt;br /&gt;&lt;br /&gt;1. Объявляем в начале кода private переменные токенов (универсальных идентификаторов) индикаторов, менеджера индикаторов:&lt;br /&gt;&lt;br /&gt;        private IndicatorManager _indicatorManager;&lt;br /&gt;        private IndicatorToken _indicatorToken1, _indicatorToken2;&lt;br /&gt;&lt;br /&gt;2. Создаём индикаторы и менеджер индикаторов заранее! Например:&lt;br /&gt;&lt;br /&gt;_indicatorManager = new IndicatorManager();&lt;br /&gt;SimpleMovingAverage _SMA1 = new SimpleMovingAverage { Length = 80 };&lt;br /&gt;&lt;br /&gt;3. регистрируем таймфрейм свечек и источник данных для индикатора из свечек:&lt;br /&gt;&lt;br /&gt;CandleToken token = _candleManager.RegisterTimeFrameCandles(_lkoh, _timeFrame);&lt;br /&gt;var PriceSource = new CandleTokenIndicatorSource(token, BaseCandleIndicatorSource.ByClose);&lt;br /&gt;&lt;br /&gt;4. регистрируем индикаторы в менеджере:&lt;br /&gt;&lt;br /&gt;                _indicatorToken1 = _indicatorManager.RegisterIndicator(_SMA1, PriceSource);&lt;br /&gt;                _indicatorToken2 = _indicatorManager.RegisterIndicator(_SMA2, PriceSource);&lt;br /&gt;&lt;br /&gt;5. При вызове стратегии в аргументах вместо создания новых индикаторов указываем наши зарегистрированные&lt;br /&gt;6. Адресация прошлых значений индикаторов (если они есть): &lt;br /&gt;_indicatorManager.Container.GetValue(_indicatorToken1, 0).Second.GetValue&amp;lt;decimal&amp;gt;()&lt;br /&gt;- здесь первый аргумент в GetValue обозначает индикатор, прошлое значение которого нужно получить, а второй аргумент - количество значений от текущего. &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/16964/</id>
    <title type="text">Изучил исходники контейнера и менеджера индикаторов. Индикаторы в примерах не используют токены. Как...</title>
    <published>2012-03-05T20:20:01Z</published>
    <updated>2012-03-05T20:20:01Z</updated>
    <author>
      <name>Spiritschaser</name>
      <uri>https://stocksharp.com/users/1927/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Изучил исходники контейнера и менеджера индикаторов.&lt;br /&gt;Индикаторы в примерах не используют токены. Как получить токен из цены закрытия в итерационной стратегии - не понятно...</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/16942/</id>
    <title type="text">Да. По текстовому поиску в &amp;quot;дистрибутиве&amp;quot; IndicatorContainer встречается только в .dll, в исходниках...</title>
    <published>2012-03-05T11:39:31Z</published>
    <updated>2012-03-05T11:39:31Z</updated>
    <author>
      <name>Spiritschaser</name>
      <uri>https://stocksharp.com/users/1927/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">Да. По текстовому поиску в &amp;quot;дистрибутиве&amp;quot; IndicatorContainer встречается только в .dll, в исходниках - только исходники самого &amp;quot;контейнера&amp;quot;. По ним понять не могу :( Не тот уровень.&lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/16941/</id>
    <title type="text">На примеры из архива смотрели?</title>
    <published>2012-03-05T11:34:31Z</published>
    <updated>2012-03-05T11:34:31Z</updated>
    <author>
      <name>Alexander</name>
      <uri>https://stocksharp.com/users/2826/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">На примеры из архива смотрели?</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>