﻿<?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">ExpressionIndexSecurity в Shell не рассчитывается</title>
  <id>~/topic/10754/expressionindexsecurity-v-shell-ne-rasschityvaetsya/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-06-14T04:06:07Z</updated>
  <logo>https://stocksharp.com/images/logo.png</logo>
  <link href="https://stocksharp.com/handlers/atom.ashx?category=topic&amp;id=10754" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.com/posts/m/47766/</id>
    <title type="text">В приложении модицифированный пример SampleHistoryTesting, который выводит индексные свечи согласно ...</title>
    <published>2019-06-12T20:34:18Z</published>
    <updated>2019-06-12T20:34:18Z</updated>
    <author>
      <name>Support</name>
      <uri>https://stocksharp.com/users/97869/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;В приложении модицифированный пример SampleHistoryTesting, который выводит индексные свечи согласно формуле:&lt;/p&gt;
&lt;p&gt;&lt;img src="/file/109265/508e1b0ebae2eec2b77394615221a0d4.png" alt="508e1b0ebae2eec2b77394615221a0d4.png" /&gt;&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/47757/</id>
    <title type="text">Support: Пожалуйста, пришлите ваш код для воспроизведения ошибки. В спойлере - код. :::spoiler using...</title>
    <published>2019-06-11T14:52:14Z</published>
    <updated>2019-06-11T14:52:14Z</updated>
    <author>
      <name>allint29</name>
      <uri>https://stocksharp.com/users/103515/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(47756)" rel="nofollow" target="_blank"&gt;Support&lt;/a&gt;:&lt;/strong&gt;
Пожалуйста, пришлите ваш код для воспроизведения ошибки.
В спойлере - код. :::spoiler
using System;
using System.IO;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using Ecng.Common;
using Ecng.Configuration;
using StockSharp.Algo.Candles;
using StockSharp.Algo.Expressions;
using StockSharp.Algo.Storages;
using StockSharp.Algo.Testing;
using StockSharp.BusinessEntities;
using StockSharp.Logging;
using StockSharp.Messages;
using StockSharp.Xaml.Charting;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;namespace FirstConsole.XAML
{
/// &lt;summary&gt;
/// Логика взаимодействия для Index.xaml
/// &lt;/summary&gt;
public partial class Index : UserControl
{
private HistoryEmulationConnector _connector;
private ChartCandleElement _candleElement;
private CandleManager _candleManager; // создадим менеджер свечей - из него будем получать свечи&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    private CandleSeries _candleSeries;
    private Security _security;
    private Security _indexSecurity;
    private Portfolio _portfolio;
    private readonly LogManager _logManager;

    private readonly string _pathHistory = @&amp;quot;G:\Sharp\Hydra\CSVFromFinamReady\&amp;quot;.ToFullPath();
    public Index()
    {
        InitializeComponent();
        //здесь без разницы какую службу включать, в Shell работает только Fw40
        //     ConfigManager.RegisterService&amp;lt;ICompilerService&amp;gt;(new RoslynCompilerService());
        ConfigManager.RegisterService&amp;lt;ICompilerService&amp;gt;(new Fw40CompilerService(Directory.GetCurrentDirectory(), Directory.GetCurrentDirectory()));
        _logManager = new LogManager();
        _logManager.Listeners.Add(new FileLogListener(&amp;quot;log.txt&amp;quot;));
        _logManager.Listeners.Add(Monitor);

        CandleSettingsEditor.Settings = new CandleSeries()
        {
            CandleType = typeof(TimeFrameCandle),
            Arg = TimeSpan.FromMinutes(5)
        };

        DatePickerBegin.SelectedDate = new DateTime(2019, 03, 23);
        DatePickerEnd.SelectedDate = new DateTime(2019, 05, 10);
    }

    private void Start_Click(object sender, RoutedEventArgs e)
    {
        //здесь без разницы какую службу включать, в Shell работает только Fw40
 //       ConfigManager.RegisterService&amp;lt;ICompilerService&amp;gt;(new Fw40CompilerService(Directory.GetCurrentDirectory(), Directory.GetCurrentDirectory()));
   //     ConfigManager.RegisterService&amp;lt;ICompilerService&amp;gt;(new RoslynCompilerService());
        _security = new Security
        {
            Id = &amp;quot;RIM9@FORTS&amp;quot;,
            Code = &amp;quot;RTS&amp;quot;,
            PriceStep = 10m,
            Board = ExchangeBoard.Micex,
        };
        _indexSecurity = new ExpressionIndexSecurity()
        {
            Id = &amp;quot;IndexInstr@FORTS&amp;quot;,
            Code = &amp;quot;IndexInstr&amp;quot;,
            Expression = &amp;quot;RIM9@FORTS/2&amp;quot;,
            Board = ExchangeBoard.Micex,
        };

        _portfolio = new Portfolio { Name = &amp;quot;test portfolio&amp;quot;, BeginValue = 10000000 };


        var storageRegistry = new StorageRegistry
        {
            DefaultDrive = new LocalMarketDataDrive(_pathHistory),
        };

        _connector = new HistoryEmulationConnector(new[] { _security, _indexSecurity }, new[] { _portfolio })
        {
            HistoryMessageAdapter =
            {
                StorageRegistry = storageRegistry,
                StorageFormat = StorageFormats.Csv,
                StartDate = DatePickerBegin.SelectedDate.Value.ChangeKind(DateTimeKind.Utc),
                StopDate = DatePickerEnd.SelectedDate.Value.ChangeKind(DateTimeKind.Utc),
            },
            LogLevel = LogLevels.Info,
        };
        _logManager.Sources.Add(_connector);

        //зарегистрируем в менеджере конфигураций коннектор как источник инструментов
        //в версии 4.15 4.16 работает и без регистрации
 //       ConfigManager.RegisterService&amp;lt;ISecurityProvider&amp;gt;(_connector);

        _candleSeries = new CandleSeries(CandleSettingsEditor.Settings.CandleType, _indexSecurity, CandleSettingsEditor.Settings.Arg)
        {
            BuildCandlesMode = MarketDataBuildModes.Build,
            BuildCandlesFrom = MarketDataTypes.Trades,
        };

        InitCart();

        _candleManager = new CandleManager(_connector);
        _candleManager.Processing += Processing;
        _connector.NewSecurity += Connector_NewSecurity;
        _connector.Connect();
    }


    private void Connector_NewSecurity(Security security)
    {
        if (_connector.Securities.Count() &amp;lt; 2) return;
        //в версии 4.15, 4.16 работает и без этого
       _connector.RegisterTrades(_indexSecurity);
        //запускаем менеджер свечей на получение свечей по индексу
        _candleManager.Start(_candleSeries);
        _connector.Start();
    }

    private void Processing(CandleSeries candleSeries, Candle candle)
    {
        //в методе отрисовки свечей нужно проверять - является ли свеча индекса или нет и только их отрисовывать на графике
        if (candleSeries.Security != _indexSecurity) return;

        Chart.Draw(_candleElement, candle);
    }

    private void InitCart()
    {
        Chart.ClearAreas();
        var area = new ChartArea();
        _candleElement = new ChartCandleElement();

        Chart.AddArea(area);
        Chart.AddElement(area, _candleElement);
    }

}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;}&lt;/p&gt;
&lt;div&gt;&lt;/div&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/47756/</id>
    <title type="text">Пожалуйста, пришлите ваш код для воспроизведения ошибки. </title>
    <published>2019-06-11T13:17:53Z</published>
    <updated>2019-06-11T13:17:53Z</updated>
    <author>
      <name>Support</name>
      <uri>https://stocksharp.com/users/97869/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Пожалуйста, пришлите ваш код для воспроизведения ошибки.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/47755/</id>
    <title type="text">Support: Просьба уточнить ваш вопрос. В Шелл не было индексов. О каком архиве идёт речь? Я не только...</title>
    <published>2019-06-11T11:32:10Z</published>
    <updated>2019-06-11T11:32:10Z</updated>
    <author>
      <name>allint29</name>
      <uri>https://stocksharp.com/users/103515/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(47751)" rel="nofollow" target="_blank"&gt;Support&lt;/a&gt;:&lt;/strong&gt;
Просьба уточнить ваш вопрос. В Шелл не было индексов. О каком архиве идёт речь?&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Я не только про Shell описываю, а программу которая написана на библиотеке версии (на которых пробовал) 4.4.15 и 4.4.16. В Shell которая у меня, например, версия библиотеки  StockSharp.Algo 4.4.15 (версию библиотеки смотрю в свойствах ссылок на библиотеку), а версия из учебного примера (в котором все работает нормально) - 4.4.5.4, там даже модуль Expression выведен в отдельный файл. Я не разработчик данной библиотеки, но считаю что это баг, или, возможно, с версии обучающего видео процедура расчета индекса изменилась и тогда хотелось бы узнать эту процедуру.&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/47751/</id>
    <title type="text">Просьба уточнить ваш вопрос. В Шелл не было индексов. О каком архиве идёт речь? </title>
    <published>2019-06-11T10:03:04Z</published>
    <updated>2019-06-11T10:03:04Z</updated>
    <author>
      <name>Support</name>
      <uri>https://stocksharp.com/users/97869/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Просьба уточнить ваш вопрос. В Шелл не было индексов. О каком архиве идёт речь?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/47746/</id>
    <title type="text">Здравствуйте, данная корректировка помогла, начали производиться вычисления, но теперь вычисления за...</title>
    <published>2019-06-11T09:13:47Z</published>
    <updated>2019-06-11T09:13:47Z</updated>
    <author>
      <name>allint29</name>
      <uri>https://stocksharp.com/users/103515/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Здравствуйте, данная корректировка помогла, начали производиться вычисления, но теперь вычисления заканчиваются на открытии свечи, то есть если взять индекс без всяких коэффициентов, то на выходе получаю бар с открытием закрытием и телом в одну точку равным открытию бара данного инструмента на данном таймфрейме. Сначала думал, что индекс строится не из сделок а из свечей таймфрейма, но пробовал разные таймфреймы нестандартные, всегда бар начинается и заканчивается открытием свечи того таймфрейма, который выбран. Скрин экрана прилагаю. Еще хочу уточнить, что на версии 4.4.5.4 из учебного примера все работает как надо на тех же данных.&lt;img src="/file/109258/QuestByShellIndex2.jpg" alt="QuestByShellIndex2.jpg" /&gt;&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/47714/</id>
    <title type="text">Добрый день Попробуйте вместо RoslynCompilerService использовать следующий: ConfigManager.RegisterSe...</title>
    <published>2019-06-08T15:36:04Z</published>
    <updated>2019-06-08T15:36:04Z</updated>
    <author>
      <name>Support</name>
      <uri>https://stocksharp.com/users/97869/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Добрый день&lt;/p&gt;
&lt;p&gt;Попробуйте вместо RoslynCompilerService использовать следующий:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ConfigManager.RegisterService&amp;lt;ICompilerService&amp;gt;(new Fw40CompilerService(Directory.GetCurrentDirectory(), Directory.GetCurrentDirectory()));
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;После этого ваш код у нас заработал:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;_indexSecurity = new ExpressionIndexSecurity()
           {
               Id = &amp;quot;INDEXTWO@FORTS&amp;quot;,
               Code = &amp;quot;IndexMy&amp;quot;,
               
           Expression = &amp;quot;RIM9@FORTS-10000&amp;quot;,
           Board = ExchangeBoard.Micex,
           };

	        var result = _indexSecurity.Formula.Calculate(new[] { 167.43m });

	        if (result != -9832.57m)
	        {
		        throw new Exception(result.ToString());
	        }
&lt;/code&gt;&lt;/pre&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/47698/</id>
    <title type="text">Support: Добрый день Пожалуйста, пришлите ваш код на support@stocksharp.com Добрый день выслал на по...</title>
    <published>2019-06-06T16:32:43Z</published>
    <updated>2019-06-06T16:32:43Z</updated>
    <author>
      <name>allint29</name>
      <uri>https://stocksharp.com/users/103515/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="@message(47697)" rel="nofollow" target="_blank"&gt;Support&lt;/a&gt;:&lt;/strong&gt;
Добрый день&lt;/p&gt;
&lt;p&gt;Пожалуйста, пришлите ваш код на support@stocksharp.com
Добрый день выслал на почту код из shell.&lt;/p&gt;
&lt;/blockquote&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/47697/</id>
    <title type="text">Добрый день Пожалуйста, пришлите ваш код на support@stocksharp.com </title>
    <published>2019-06-06T13:30:06Z</published>
    <updated>2019-06-06T13:30:06Z</updated>
    <author>
      <name>Support</name>
      <uri>https://stocksharp.com/users/97869/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Добрый день&lt;/p&gt;
&lt;p&gt;Пожалуйста, пришлите ваш код на support@stocksharp.com&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.com/posts/m/47637/</id>
    <title type="text">Здравствуйте, возник вопрос по формированию индексного графика в Shell. Пытаюсь сделать индекс при п...</title>
    <published>2019-06-02T09:41:10Z</published>
    <updated>2019-06-02T09:41:10Z</updated>
    <author>
      <name>allint29</name>
      <uri>https://stocksharp.com/users/103515/</uri>
      <email>info@stocksharp.com</email>
    </author>
    <content type="html">&lt;p&gt;Здравствуйте, возник вопрос по формированию индексного графика в Shell. Пытаюсь сделать индекс при помощи ExpressionIndexSecurity и RoslynCompilerService, но индекс не формируется, в графе Expression после инициализации нового инструмента остается null, соответственно и инструмента нет, ошибок никаких не выдает C#. При этом вне рамок Shell все нормально работает. На приложенном скрине два варианта остановы, в которых видно , что в обычной форме индекс создается, а во втором (Shell) нет. Я в Shell пытался код с формированием индекса включать даже при инициализации главной формы но результат тот же. Не пойму, что я делаю не так?&lt;/p&gt;
</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>